在我们熟悉了 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