【SOP 系列 04】手动部署 OceanBase 集群

在我们熟悉了 OBD 方式自动部署 OceanBase 集群的方式后,可能想纯手工方式部署,比如想在现有的数据库运维平台上集成 OceanBase 的部署,那么有必要掌握手动部署的方式。

常见的手动部署,由于 rpm 在打包的时候指定了 /home/admin/oceanbase ,那么我们在使用 rpm 包安装的时候默认就会安装在这个路径下。本小节我们介绍如何把 OceanBase 部署到任意路径下,比如在一台机器上手动部署一个1-1-1 的 OceanBase 集群。

1、部署规划

2、下载软件包

在可以联网的机器上下载:

yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
mkdir -p /opt/ob_rpm
yum install --downloadonly ob-deploy --downloaddir=/opt/ob_rpm
yum install --downloadonly oceanbase-ce --downloaddir=/opt/ob_rpm
yum install --downloadonly obproxy --downloaddir=/opt/ob_rpm

3、解压 OBServer rpm

cd  /opt/ob_rpm
rpm2cpio oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm | cpio -div
rpm2cpio oceanbase-ce-libs-3.1.2-10000392021123010.el7.x86_64.rpm | cpio -div

说明:

由于版本的变化,请以实际使用时候的版本(文件名)为准。

4、创建 OBServer 相关目录和授权

mkdir -p /home/admin/oceanbase-ce-2
cd /opt/ob_rpm/home/admin/oceanbase && cp -r * /home/admin/oceanbase-ce-2
mkdir -p /home/admin/oceanbase-ce-2/store/obtest/{sstable,clog,ilog,slog}
chown -R admin:admin /home/admin/oceanbase-ce-2

说明:

实际 OBServer 对应的 rpm 包默认安装在 /home/admin/oceanbase 中,这里手动创建的目录 /home/admin/oceanbase-ce-2,旨在模拟安装在其他用户或者路径下。

5、修改环境变量

su - admin
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce-2/lib' >> ~/.bash_profile
source ~/.bash_profile

6、启动observer进程

cd ~/oceanbase-ce-2 && bin/observer -i eth0 -p 2881 -P 2882 -z zone1 -d ~/oceanbase-ce-2/store/obtest -r '172.30.199.123:2882:2881;172.30.199.124:2882:2881;172.30.199.125:2882:2881' -c 1 -n obtest -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=4G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=10G,stack_size=1536K" 

说明:

注意 -z 后面的 zone 的名字,应根据规划进行保持一致。

7、集群初始化

注意登录方式,正确示例:

mysql -h172.30.199.123 -P2881 -uroot  -A -c

而不是如下,错误示例:
原因:bootstrap之前,还未创建SYS租户,所以不能指定sys租户用户登录。

mysql -h172.30.199.123 -P2881 -uroot@sys  -A -c
# 否则会提示:ERROR 8001 (08004): Server is initializing
set  ob_query_timeout=10000000000; 
alter system bootstrap 
ZONE 'zone1' SERVER '172.30.199.123:2882', 
ZONE 'zone2' SERVER '172.30.199.124:2882', 
ZONE 'zone3' SERVER '172.30.199.125:2882' ;

说明: 默认 root 用户密码为空

8、创建账号和修改密码

alter user root identified by 'Root123@@Root123';

说明:这里修改的是 sys 租户下 root 用户的密码。

默认 OBProxy 连接 OceanBase 集群时使用用户 proxyro ,该用户不存在,需要我们在 sys 租户下手动创建。

create user proxyro identified by 'Root123@@Root123';
grant select on oceanbase.* to proxyro;

说明Root123@@Root123 为测试示例中给出的密码,实际请根据需要设置合适的密码。

9、解压 OBProxy rpm

cd /opt/ob_rpm
rpm2cpio obproxy-3.2.0-1.el7.x86_64.rpm | cpio -div

10、创建 OBProxy 相关目录和授权

mkdir -p /home/admin/obproxy-3.2.0-ce-2
cd /opt/ob_rpm/home/admin/obproxy-3.2.0 && cp -r * /home/admin/obproxy-3.2.0-ce-2
chown -R admin:admin /home/admin/obproxy-3.2.0-ce-2

说明:

实际 OBProxy 对应的 rpm 包默认安装在 /home/admin/obproxy-3.2.0 这里手动创建的目录 /home/admin/obproxy-3.2.0-ce-2,旨在模拟安装在其他用户或者路径下。

11、启动 OBProxy 进程

cd ~/obproxy-3.2.0-ce-2/ && bin/obproxy -r "172.30.199.123:2881;172.30.199.124:2881;172.30.199.125:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obtest

12、修改 OBProxy 密码

登录 OBProxy

mysql -h 172.30.199.126 -u root@proxysys -P 2883 -p

修改 OBProxy 管理员(root@proxysys)的密码

alter proxyconfig set obproxy_sys_password='Root123@@Root123';

修改 OBProxy 连接 OBServer 使用的 proxyro 用户的密码

需跟第 8 步的 proxyro 用户设置的密码一致。

alter proxyconfig set observer_sys_password='Root123@@Root123';

13、登录测试

连接 OBServer 登录测试

mysql -h172.30.199.123 -P2881 -uroot@sys -pRoot123@@Root123 -A -c

连接 OBProxy 登录测试

mysql -h172.30.199.126 -P2883 -uroot@sys#obtest -pRoot123@@Root123 -A -c
1 个赞

学习学习了

1 个赞

OBD 能修改默认按照目录吗?

1 个赞

按照SOP部署 ,最后一步连接OBProxy报错
ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error: 0

启动脚本 ,OBProxy日志见附件,谢谢

原因是 yum 默认下载的版本是3.2版本的obproxy 。 使用新版本4.1后就没有这个问题了

1 个赞

-u这个地方需要带上ob集群名称吧?root@proxysys#obtest

1 个赞

不需要。 root@proxysys 是 obproxy 登录的特殊用法,可以管理 obproxy 的参数。并不登录OB集群。不过这个密码平时不外漏。
平时通过 root@sys#集群名 和 obproxy ip 加2883 端口 连接的时候,也可以修改这个 obproxy的参数。
如果有ocp的话,有多个obproxy 放在一个 obproxy集群里管理时,使用ocp去集中管理obproxy的参数比较好。这样统一起来,不容易出问题。

1 个赞

我这边测试-u root@proxysys登录不了,需要加上#obtest,版本4.2.1.7

1 个赞

应该是哪里不对。你可以发一下完整的登录信息或截图看看。
除非是你自己建了一个租户叫:proxysys …