计划在单台主机上安装6个observer,前3个observer进行bootstrap,后续3个计划进行扩容,但执行bootstrap时失败,文中通过清理重建,完成bootstrap操作。
只对observer1-3进行操作,observer4-6相关的步骤可不进行操作。

0.ENV

CentOS7.6;
OceanBase 2.2.75
以下操作OceanBase社区版同样适用。
1. 现象

执行bootstrap报错:ERROR 4015 (HY000): System error
[admin@ob6 ~]$ obclient -h127.1 -uroot -P2881 -pEnter password:Welcome to OceanBase. Commands end with ; or \g.Your OceanBase connection id is 3221225483Server version: OceanBase 2.2.75 (r20210108170301-c8c037dd6352fa0d00bd8a7105a1b566a5bc790d) (Built Jan 8 2021 17:31:33)Copyright (c) 2000, 2020, OceanBase and/or its affiliates. All rights reserved.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.obclient> set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '172.18.33.109:2882', ZONE 'zone2' SERVER '172.18.33.109:3882', ZONE 'zone3' SERVER '172.18.33.109:4882';Query OK, 0 rows affected (0.00 sec)ERROR 4015 (HY000): System error
2. 问题说明

这一步是关键,不成功,就推到重来。看看机器环境或者操作步骤错误,通过下述步骤,确保各项均正常配置,一切都对的情况下一定能成功。
关键点:目录、IP、端口号、Zone名称、语法。
3. 问题处理

1) 清理observer原有进程和目录(第一次不用)
清理进程:
[root@ob6 ~]# su - admin[admin@ob6 ~]$ pidof observer121499 116728 105822 2092 1479 908[admin@ob6 ~]$ kill -9 121499 116728 105822 2092 1479 908[admin@ob6 ~]$ sleep 3
删除目录:
[admin@ob6 ~]$ rm -rf data/1/* /data/2/* /data/3/* /data/4/* /data/5/* /data/6/*[admin@ob6 ~]$ rm -rf data/log1/[1-6] #也可rm -rf data/log1/1/* ...[admin@ob6 ~]$ rm -rf home/admin/oceanbase/[1-6] #也可cd home/admin/oceanbase && rm -rf 1/* 2/* 3/*
2) 初始化目录
准备observer安装目录:
先安装oceanbase软件,目录在/home/admin/oceanbase上。然后复制该软件目录为oceanbase/[1-6]
[root@ob6 ~]# su - admin[admin@ob6 ~]$ mv oceanbase oceanbase_orig[admin@ob6 ~]$ mkdir -p oceanbase/1 oceanbase/2 oceanbase/3 oceanbase/4 oceanbase/5 oceanbase/6cp -rf oceanbase_orig/* oceanbase/1/cp -rf oceanbase_orig/* oceanbase/2/cp -rf oceanbase_orig/* oceanbase/3/cp -rf oceanbase_orig/* oceanbase/4/cp -rf oceanbase_orig/* oceanbase/5/cp -rf oceanbase_orig/* oceanbase/6/
准备数据目录和日志目录:
[root@ob6 ~]# mkdir data/1 data/2 data/3 data/4 data/5 data/6[root@ob6 ~]# cd data/log1/[root@ob6 ~]# mkdir 1 2 3 4 5 6[root@ob6 ~]# chown -R admin:admin data/1 data/2 data/3 data/4 data/5 data/6
3) 创建实例等必备目录(admin用户)
bootstrap以zone1、zone2、zone3中的observer1-3进行创建,observer5-6可忽略。
#OB1-zone1目录:mkdir -p data/1/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/1/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/1/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/1/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/1/obdemo/$t /home/admin/oceanbase/1/store/obdemo/$t; done#OB2-zone2目录:mkdir -p /data/2/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/2/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/2/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/2/obdemo/$t /home/admin/oceanbase/2/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/2/obdemo/$t /home/admin/oceanbase/2/store/obdemo/$t; done#OB3-zone3目录:mkdir -p /data/3/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/3/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/3/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/3/obdemo/$t /home/admin/oceanbase/3/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/3/obdemo/$t /home/admin/oceanbase/3/store/obdemo/$t; done#OB4-zone1目录:mkdir -p /data/4/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/4/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/4/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/4/obdemo/$t /home/admin/oceanbase/4/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/4/obdemo/$t /home/admin/oceanbase/4/store/obdemo/$t; done#OB5-zone2目录:mkdir -p /data/5/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/5/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/5/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/5/obdemo/$t /home/admin/oceanbase/5/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/5/obdemo/$t /home/admin/oceanbase/5/store/obdemo/$t; done#OB6-zone3目录:mkdir -p /data/6/obdemo/{etc3,sort_dir,sstable}mkdir -p /data/log1/6/obdemo/{clog,etc2,ilog,slog,oob_clog}mkdir -p /home/admin/oceanbase/6/store/obdemofor t in {etc3,sort_dir,sstable};do ln -s /data/6/obdemo/$t /home/admin/oceanbase/6/store/obdemo/$t; donefor t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/6/obdemo/$t /home/admin/oceanbase/6/store/obdemo/$t; done
查看目录:
tree /data/[1-6]tree /data/log1/[1-6]tree /home/admin/oceanbase/[1-6]
4) 启动 3 个 observer 进程
启动 3 个 observer 进程,observer 4-6可在扩容前启动。
注意:ip、网卡名都要根据实际情况调整。
OB1-zone1:$ cd /home/admin/oceanbase/1 && /home/admin/oceanbase/1/bin/observer -i ens33 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/1/store/obdemo -r '172.18.33.109:2882:2881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/1/obdemo/etc3;/data/log1/1/obdemo/etc2"OB2-zone2:$ cd /home/admin/oceanbase/2 && /home/admin/oceanbase/2/bin/observer -i ens33 -P 3882 -p 3881 -z zone2 -d /home/admin/oceanbase/2/store/obdemo -r '172.18.33.109:3882:3881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/2/obdemo/etc3;/data/log1/2/obdemo/etc2"OB3-zone3:$ cd /home/admin/oceanbase/3 && /home/admin/oceanbase/3/bin/observer -i ens33 -P 4882 -p 4881 -z zone3 -d /home/admin/oceanbase/3/store/obdemo -r '172.18.33.109:4882:4881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/3/obdemo/etc3;/data/log1/3/obdemo/etc2"OB4-zone1(后续扩容加入zone1):cd /home/admin/oceanbase/4 && /home/admin/oceanbase/4/bin/observer -i ens33 -P 5882 -p 5881 -z zone1 -d /home/admin/oceanbase/4/store/obdemo -r '172.18.33.109:5882:5881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/4/obdemo/etc3;/data/log1/4/obdemo/etc2"OB5-zone2(后续扩容加入zone2):cd /home/admin/oceanbase/5 && /home/admin/oceanbase/5/bin/observer -i ens33 -P 6882 -p 6881 -z zone2 -d /home/admin/oceanbase/5/store/obdemo -r '172.18.33.109:6882:6881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/5/obdemo/etc3;/data/log1/5/obdemo/etc2"OB6-zone3(后续扩容加入zone3):cd /home/admin/oceanbase/6 && /home/admin/oceanbase/6/bin/observer -i ens33 -P 7882 -p 7881 -z zone3 -d /home/admin/oceanbase/6/store/obdemo -r '172.18.33.109:7882:7881' -c 20210713 -n obdemo -o "memory_limit=15G,system_memory=5G,cpu_count=32,__min_full_resource_pool_memory=2147483648,cache_wash_threashold=2G,net_thread_count=8,workers_per_cpu_quota=4,stack_size=512K,config_additional_dir=/data/6/obdemo/etc3;/data/log1/6/obdemo/etc2"
5) 安装客户端
[root@ob6 t-oceanbase-antman]# rpm -ivh obclient-1.2.3-20200814145858.el7.alios7.x86_64.rpm
6)bootstrap集群
登录sys租户
[admin@ob6 ~]$ obclient -h127.1 -uroot@sys#obdemo -P2881 -p #密码为空时,可去掉-p参数Enter password: #回车,默认密码为空
执行bootstrap成功:
obclient> set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '172.18.33.109:2882', ZONE 'zone2' SERVER '172.18.33.109:3882', ZONE 'zone3' SERVER '172.18.33.109:4882';Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (47.29 sec)
7) 查看数据库
bootstrap成功后,可查询到数据库,否则无数据库。
obclient> show databases;+--------------------+| Database |+--------------------+| oceanbase || information_schema || mysql || SYS || LBACSYS || ORAAUDITOR || test |+--------------------+7 rows in set (0.02 sec)
4. 小结

bootstrap失败,通过上述步骤先进行清理,然后重建,在目录、IP、端口号、Zone名称、语法等步骤正确时,参考上述步骤,bootstrap会成功的。
不足之处,还望抛砖。
作者:王坤,微信公众号:rundba,欢迎转载,转载请注明出处。
如需公众号转发,请联系wx: landnow。




