首页 > 数据库 > 国内数据库 > 命令行方式部署OceanBase 集群部署
本文档使用 命令行 来进行 1-1-1 架构的分布式 OceanBase 集群部署, 有 3 台 服务器,每 1 台 服务器就是一个 Zone。
192.168.48.142
192.168.55.209
192.168.55.210
使用 root 用户分别登录3台服务器
ssh root@192.168.48.142 ssh root@192.168.55.209 ssh root@192.168.55.210
--创建用户组 admin 以及创建用户 admin useradd -U admin -d /home/admin -s /bin/bash --设置用户admin密码 echo 'admin'|passwd --stdin admin --赋予用户目录权限 chown -R admin:admin /home/admin --为账户 admin 设置 sudo 权限 sudo visudo 等价于 vi /etc/sudoers 在打开的界面找到以下内容 Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL 条目下增加 admin ALL=(ALL) NOPASSWD: ALL 按 ESC 键,输入 :wq,保存退出。 --云服务器需要,修改 root 用户权限并将 admin 用户添加至 wheel 组 vim /etc/pam.d/su 在打开的界面找到以下内容 #auth sufficient pam_wheel.so trust use_uid 删除前面的注释符号# 保存 然后将 admin 用户添加至 wheel 组 usermod -aG wheel admin
--创建 data 目录
mkdir -p /data/{1,log1}
--赋予权限
chown -R admin:admin /data
官方下载地址: https://www.oceanbase.com/softwarecenter
根据部署环境选择对应的安装介质
说明: OBproxy 可以和 OBServer 共用一台主机 ,这里只需要将安装包上传到一台主机即可。
下载并上传到/home/admin目录下
[root@iZbp1330hxx8l77slgu7ghZ ~]# ls -l /home/admin/ total 341204 -rw-r--r-- 1 root root 12010316 Jun 11 2024 obclient-2.2.6-32024052710.el7.x86_64.rpm -rw-r--r-- 1 root root 75214004 Apr 17 20:41 ob-deploy-3.2.0-2.el7.x86_64.rpm -rw-r--r-- 1 root root 30409776 Jun 11 2024 obproxy-4.2.3.0-20231226165754.el7.x86_64.rpm -rw-r--r-- 1 root root 231747600 Jun 18 2024 oceanbase-4.3.1.0-100010022024052916.el7.x86_64.rpm
cd /home/admin
rpm -ivh oceanbase-4.3.1.0-100010022024052916.el7.x86_64.rpm
说明:OceanBase 软件将会被安装在目录
/home/admin/oceanbase
下。如果需要指定其他目录,可以通过设置
--prefix
参数来指定。命令参考如下:
rpm -ivh --prefix=<自定义安装目录>
。
rpm -ivh obclient-2.2.6-32024052710.el7.x86_64.rpm
说明:OBproxy RPM 包安装到其中一台机器即可。
rpm -ivh obproxy-4.2.3.0-20231226165754.el7.x86_64.rpm
说明:
OceanBase 的 数据目录通常建在独立的磁盘上 ,然后 通过软链接方式链接到软件 Home 目录 下面。
此处 dxjoceanbase 是以 集群名称 创建的目录,可根据需要自行定义。该名称 在启动 observer 进程时会用到 。
su - admin
su - admin
--创建OceanBase 数据盘目录
mkdir -p /data/1/dxjoceanbase/{etc3,sstable,slog}
--创建 OceanBase 日志盘目录
mkdir -p /data/log1/dxjoceanbase/{clog,etc2}
--创建 OceanBase 数据文件目录
mkdir -p /home/admin/oceanbase/store/dxjoceanbase
--创建 OBproxy 日志文件目录
mkdir -p /home/admin/logs/obproxy/log
建立数据文件目录下
sstable
和
slog
文件到数据盘目录的软连接。
su - admin
for t in {sstable,slog};do ln -s /data/1/dxjoceanbase/$t /home/admin/oceanbase/store/dxjoceanbase/$t; done
建立数据文件目录下
clog
和
etc2
到数据盘目录的软连接。
su - admin
for t in {clog,etc2};do ln -s /data/log1/dxjoceanbase/$t /home/admin/oceanbase/store/dxjoceanbase/$t; done
建立到 obproxy 的软链接(该操作在安装了 OBProxy 的主机上执行)
obproxy 安装目录在
/opt/taobao/install
下。obproxy 进程 home 目录是
/opt/taobao/install/obproxy
,这是一个软链接,实际指向相应的 obproxy 版本软件目录。
--建立软链接 su - admin cd /opt/taobao/install sudo ln -s obproxy-4.2.3.0 obproxy --修改 obproxy 的所有者和所属组为 admin su - root chown -R admin:admin /opt/taobao/install/obproxy
注意
admin
用户
。su - admin
--语法
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '$ip:2882:2881' -c $cluster_id -n $cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"
|
参数 |
说明 |
|
|
说明:
支持通过
同时指定 IP 和网卡名
(例如:
|
|
|
指定服务端口号,一般指定为
|
|
|
指定 RPC 端口号,一般指定为
|
|
|
指定集群名称。可自定义,不同集群名称不要重复即可。 |
|
|
指定启动的 observer 进程所属的 Zone。 |
|
|
指定集群主目录,初始化目录时创建的目录。
除集群名字
|
|
|
指定集群 ID。为一组数字,可以自定义,不同集群不要重复即可。 |
|
|
指定日志级别。 |
|
|
指定 RS 列表,格式是
|
|
|
指定集群启动参数(配置项)列表,为可选项。可以为多个配置项指定值,多个配置项的值之间使用英文逗号进行分隔。请根据实际需要,选择适当的启动参数并为每个参数指定合适的值,以优化集群的性能和资源利用率。以下是一些常用的集群启动配置项:
|
--zone1:在 admin 用户下,启动第一台机器的 observer 进程 su - admin cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r '192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881' -c 10001 -n dxjoceanbase -o "memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2" --验证 observer 进程启动成功 ps -ef|grep observer 输出如下: admin 2230 1 8 15:10 ? 00:00:01 /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
--zone2:在 admin 用户下,启动第二台机器的 observer 进程 su - admin cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.55.209 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/dxjoceanbase -r '192.168.55.209:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881' -c 10001 -n dxjoceanbase -o "memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2" --验证 observer 进程启动成功 ps -ef|grep observer 输出如下: admin 2230 1 6 15:10 ? 00:00:15 /home/admin/oceanbase/bin/observer -I 192.168.48.142 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
--zone3:在 admin 用户下,启动第三台机器的 observer 进程 cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 192.168.55.210 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/dxjoceanbase -r '192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881' -c 10001 -n dxjoceanbase -o "memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2" --验证 observer 进程启动成功 ps -ef|grep observer 输出如下: admin 2282 1 14 15:16 ? 00:00:01 /home/admin/oceanbase/bin/observer -I 192.168.55.210 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/dxjoceanbase -r 192.168.48.142:2882:2881;192.168.55.209:2882:2881;192.168.55.210:2882:2881 -c 10001 -n dxjoceanbase -o memory_limit=6G,system_memory=1G,datafile_size=10G,log_disk_size=5G,__min_full_resource_pool_memory=1073741824,resource_hard_limit=150,config_additional_dir=/data/1/dxjoceanbase/etc3;/data/log1/dxjoceanbase/etc2
注意: 如果启动失败,可以看下日志中的报错信息,根据报错信息进行错误处理。
[admin@xxx ~]cat /home/admin/oceanbase/log/observer.log |grep "ERROR"
注意:
同一个集群,只需要进行一次集群初始化,即仅执行一次
bootstrap
命令即可。
obclient
命令登录集群
登录任意一台服务器,使用
obclient
命令登录集群
obclient -h127.0.0.1 -uroot -P2881 -p
set session ob_query_timeout=1000000000;
bootstrap
命令注意: 启动 observer 进程时设置的不同 Zone 与机器 IP 要一一对应。执行时间约1m多点
--语法 ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER 'xxx.xxx.xxx.xx1:2882',ZONE 'zone2' SERVER 'xxx.xxx.xxx.xx2:2882',ZONE 'zone3' SERVER 'xxx.xxx.xxx.xx3:2882'; --示例 ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '192.168.48.142:2882',ZONE 'zone2' SERVER '192.168.55.209:2882',ZONE 'zone3' SERVER '192.168.55.210:2882';
如果这一步报错了,一般原因集中在如下几点:
请排查这些问题后,清理目录后重新部署,详情请参见 清理 OceanBase 旧集群 。
通过查看集群中
database
,来简单验证集群初始化成功。
show databases;
输出如下:
obclient [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | LBACSYS | | mysql | | oceanbase | | ORAAUDITOR | | SYS | | test | +--------------------+ 7 rows in set (0.007 sec)
OBProxy 需要与后端 OBServer 节点保持通信 ,需要提前在 OceanBase 集群的 sys 租户下为 OBProxy 节点创建连接用户(proxyro)和密码 。该用户密码用于 启动 OBProxy 进程时配置相关参数来建立通信 。
说明: proxyro 用户是 OBProxy 访问 OceanBase 集群的用户。一个 OceanBase 集群对应一个 proxyro 账号。
proxyro
用户CREATE USER proxyro IDENTIFIED BY '123456';
proxyro
用户授权GRANT SELECT ON *.* TO proxyro;
执行
exit
命令退出集群。
OBProxy 启动时通过参数
rootservice_list
指定 OceanBase 集群。
cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.xxx.1:2881;xxx.xxx.xxx.2:2881;xxx.xxx.xxx.3:2881" -p 2883 -o "observer_sys_password=$sha1_value,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c cluster_name
说明
$sha1_value
应根据实际设置密码替换。例如:proxyro 用户设置的密码是
123456
,则需要设置
observer_sys_password
的值是
7c4a8d09ca3762af61e59520943dc26494f8941b
。查询密码 sha1 后的值命令如下:[admin@xxx ~] echo -n 123456|sha1sum
|
参数 |
说明 |
|
|
指定 OBServer 节点 IP 和端口。 |
|
|
指定服务端口号,一般指定为
|
|
|
指定集群名称。 |
|
|
指定硬件或者内核参数配置。 |
--查询密码 sha1 后的值 echo -n 123456|sha1sum --启动 OBProxy 节点 cd /opt/taobao/install/obproxy && bin/obproxy -r "192.168.48.142:2881;192.168.55.209:2881;192.168.55.210:2881" -p 2883 -o "observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c dxjoceanbase
若执行此命令报错
bin/obproxy: error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file or directory
,请执行该命令
sudo yum install libidn
。
ps -ef|grep obproxy
输出结果如下:
admin 2986 1 0 15:23 ? 00:00:00 bin/obproxy -r 192.168.48.142:2881;192.168.55.209:2881;192.168.55.210:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c dxjoceanbase
部署成功后,可以 通过 OBProxy 连接集群。格式为: 用户名@租户名#集群名 或 集群名:租户名:用户名 。
使用
root
用户登录 dxjoceanbase 集群的 sys 租户。
obclient -h127.0.0.1 -P2883 -uroot@sys#dxjoceanbase -Doceanbase -A
连接成功后,输入如下:
[admin@iZbp1i4d7p6sjwjysy9j8cZ obproxy]$ obclient -h127.0.0.1 -P2883 -uroot@sys#dxjoceanbase -Doceanbase -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 1 Server version: OceanBase 4.3.1.0 (r100010022024052916-9a755dd27aaaf5e34e8ad6ad95942a0d89e7c80f) (Built May 29 2024 17:21:45) Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [oceanbase]>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963491/viewspace-3095955/ ,如需转载,请注明出处,否则将追究法律责任。