暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

命令行部署单副本 OceanBase 集群虚拟机实验笔记

原创 小小星月明 2023-07-19
268

参考官方文档
https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881619

操作步骤

安装目录和软件
/data 100G

系统:redhat7.6 4C8G
oceanbase版本:oceanbase-ce-4.1.0.0

1.服务器内核参数和会话变量
vi /etc/sysctl.conf
# for oceanbase
## 修改内核异步 I/O 限制
fs.aio-max-nr=1048576

## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness = 0
vm.min_free_kbytes = 2097152

# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t
其中,kernel.core_pattern 中的 /data 为 OceanBase 数据库的 data 目录。如果您只是测试,您可以只设置 fs.aio-max-nr=1048576。

加载配置
sysctl -p

vi /etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* had core unlimited
* soft stack unlimited
* hard stack unlimited

对于 Red Hat 操作系统,需要运行以下命令,手动关闭透明大页:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enable
对于 CentOS 操作系统,需要运行以下命令,手动关闭透明大页:
echo never > /sys/kernel/mm/transparent_hugepage/enabled

关闭防火墙
依次执行以下命令,关闭防火墙:

systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
关闭 SELinux
执行以下命令,打开 /etc/selinux/config 配置文件:

vi /etc/selinux/config
在 /etc/selinux/config 配置文件中修改对应配置项为以下内容:

SELINUX=disabled
执行以下命令或重启服务器,使更改生效:

setenforce 0
执行以下命令,查看更改是否生效:

sestatus

2.创建admin用户
useradd admin
echo 111111|passwd --stdin admin

3.安装OceanBase 数据库RPM包。
安装oceanbase数据库程序
rpm -ivh oceanbase-ce-libs-4.1.0.1-102000042023061314.el7.x86_64.rpm
rpm -ivh oceanbase-ce-4.1.0.0-100000192023032010.el7.x86_64.rpm
客户端
rpm -ivh libobclient-2.2.2-3.el7.x86_64.rpm
rpm -ivh obclient-2.2.2-1.el7.x86_64.rpm

安装obproxy代理程序
rpm -ivh obproxy-ce-4.1.0.0-7.el7.x86_64.rpm

清理 OceanBase 目录 (第一次部署不用)
[root@xxx admin]# su - admin
cluster_name=testdb #$cluster_name 为集群名
kill -9 `pidof observer`
rm -rf /data/1/$cluster_name
rm -rf /data/log1/$cluster_name
rm -rf /home/admin/oceanbase/store/$cluster_name /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*
ps -ef|grep observer

4.初始化 OceanBase 目录。
OceanBase 的数据目录通常建议在独立的磁盘上,然后通过软链接方式链接到软件 Home 目录下面,其中cluster_name为集群名(自定义)
mkdir /data
chown admin:admin /data

[root@xxx admin]# su - admin
cluster_name=testdb #$cluster_name 为集群名
mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable}
mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,slog,oob_clog}
mkdir -p /home/admin/oceanbase/store/$cluster_name
for t in {etc3,sort_dir,sstable};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done


echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib'>>~/.bash_profile

5. 测试 I/O 能力(可选)。
测试数据盘 I/O 能力,生成性能报告文件放在 /home/admin/oceanbase/etc 目录下。observer 启动时会读取这个文件进而自动设置内部一些跟 I/O 有关的参数。
time /home/admin/oceanbase/bin/ob_admin io_bench -c /home/admin/oceanbase/etc -d /data/1/testdb user:root succ to open, filename=ob_admin.log, fd=3, wf_fd=2

初始化 OceanBase 集群
1.启动 observer 进程。
su - admin
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -i ens33 -P 2884 -p 2883 -z zone1 -d /home/admin/oceanbase/store/testdb -r '192.168.1.81:2884:2883' -c 10001 -n testdb -o "enable_syslog_recycle=True,enable_syslog_wf=False,max_syslog_file_count=4,memory_limit=4G,system_memory=1G,__min_full_resource_pool_memory=1073741824,cpu_count=4,datafile_size=20G,config_additional_dir=/data/1/testdb/etc3;/data/log1/testdb/etc2"
#####/ob/demo/oceanbase-ce/bin/observer -r 127.0.0.1:2882:2881 -p 2881 -P 2882 -z zone1 -c 1 -d /ob/demo/oceanbase-ce/store -i lo -o __min_full_resource_pool_memory=1073741824,enable_syslog_recycle=True,enable_syslog_wf=False,max_syslog_file_count=4,memory_limit=6G,system_memory=1G,cpu_count=16,datafile_size=20G,log_disk_size=15G

参数解释:

参数 说明
-i 指定网卡名,可通过 ifconfig 命令查看。
-p 指定服务端口号,一般指定为 2881。
-P 指定 RPC 端口号,一般指定为 2882。
-n 指定集群名称。可自定义,不同集群名称不要重复即可。
-z 指定启动的 observer 进程所属的 Zone。
-d 指定集群主目录,除集群名字 testdb 外,其他不要变动。
-c 指定集群 ID。为一组数字,可以自定义,不同集群不要重复即可。
-l 指定日志级别。
-r 指定 RS 列表,格式是 ip:2882:2881 ,分号分割,表示 RootService 信息。三台机器参数一致。
-o 指定集群启动参数,需要根据实际情况设置。system_memory 指定 OceanBase 内部保留内存,默认是 30G ,机器内存比较少的情况下把这个调小,影响就是可能在性能测试时有内存不足问题。 datafile_size 指定 OceanBase 数据文件 sstable 的大小(一次性初始化),根据 /data/1/ 可用空间评估,建议不少于 100G,同时又保留一些剩余空间。如果 /data/1 跟 /data/log1 本身就是一个文件系统(共用一个盘),那么务必保证留给 /data/log1 的空间大小是内存的 2-4 倍。config_additional_dir 指定参数文件的冗余目录。

可通过 netstat -ntlp 命令查看 observer 进程是否启动成功。如果监听到了 2881 与 2882 端口,则说明进程启动成功。
netstat -ntlp

2.
集群 bootstrap 操作。

通过 obclient 命令连接已启动的 observer 进程,密码为空。

[root@xxx admin]# obclient -h127.1 -uroot@sys -P2883 -p
Enter password:

obclient> SET SESSION ob_query_timeout=1000000000;
Query OK, 0 rows affected

obclient> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '192.168.1.81:2884';
Query OK, 0 rows affected

注意
如果这一步失败报错了,其原因很可能是 observer 进程启动参数有不对、observer 相关目录权限不对、日志目录空间不足一定比例(跟数据目录合用了大目录,空间被数据目录占用了)节点内存资源不足等等。请先排查这些问题点后,然后清理 OceanBase 目录从头开始(请参见 清理 OceanBase 目录(第一次不用) )。


3.验证集群初始化成功。

进行 bootstrap 后,执行 SHOW DATABASES; 命令,能看到数据库列表里有 oceanbase 即可。

obclient> SHOW DATABASES;

4.修改密码。

sys 租户的 root 用户密码默认为空,初始化成功后请修改密码。

obclient> ALTER USER root IDENTIFIED BY '123456';

obclient -h127.1 -uroot@sys -P2883 -p123456 -c -A oceanbase

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论