OceanBase 手动部署、扩容、缩容全纪录
主要记录了 OceanBase 手动部署的过程,包括单节点部署、手动扩容至3单节点、手动扩容至6节点、手动缩容至3节点并下线节点、obproxy 手动部署等。
^ : 整个过程使用 admin 用户进行安装,admin 有 sudo root 权限。
服务器信息
24C,128GB,/data目录剩余空间大于1T(如果空间不多的话,一个节点给20GB即可,再小的空间没有验证过。)
软件安装
从官网# https://www.oceanbase.com/softwareCenter/community下载主要的软件,包括:oceanbase-ce、oceanbase-ce-libs 、obproxy 、obclient 等 rpm 包。
rpm 包信息
[admin@localhost ~]$ tree obsoft/ -L 1 obsoft/ ├── libobclient-2.0.0-2.el7.x86_64.rpm ├── obclient-2.0.0-2.el7.x86_64.rpm ├── obproxy-3.2.0-1.el7.x86_64.rpm ├── oceanbase-ce-3.1.1-4.el7.x86_64.rpm ├── oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm └── oceanbase-ce-utils-3.1.1-4.el7.x86_64.rpm 1 directory, 5 files
执行安装
# 如果之前安装过,可使用下面的命令进行清理 [admin@localhost ~]$ rpm -e `rpm -qa|grep oceanbase` # 软件会默认安装到admin用户下。 [admin@localhost ~]$ sudo rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm sudo rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm sudo rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm sudo rpm -vih libobclient-2.0.0-2.el7.x86_64.rpm
查看安装后的信息
# 使用rpm -ql命令进行查询,示例如下: [admin@localhost ~]$ rpm -ql oceanbase-ce /home/admin/oceanbase/bin /home/admin/oceanbase/bin/import_time_zone_info.py /home/admin/oceanbase/bin/observer /home/admin/oceanbase/etc /home/admin/oceanbase/etc/timezone_V1.log
安装后的软件信息
[admin@localhost ~]$ tree /home/admin/oceanbase/ oceanbase/ ├── bin │ ├── import_time_zone_info.py │ └── observer ├── etc │ └── timezone_V1.log └── lib ├── libaio.so -> libaio.so.1.0.1 ├── libaio.so.1 -> libaio.so.1.0.1 ├── libaio.so.1.0.1 ├── libmariadb.so -> libmariadb.so.3 └── libmariadb.so.3
单节点部署
创建目录
[admin@localhost ~]$ sudo chown admin:admin /data/obdata/ -R
[admin@localhost ~]$ mkdir -p /data/obdata/observer01/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer01/store/sstable
# 其余的目录observer进程启动时会自动创建
启动 observer 进程
# 设置lib信息
[admin@localhost ~]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib/
[admin@localhost ~]$ cd /data/obdata/observer01/ && /home/admin/oceanbase/bin/observer -i em1 -p 2881 -P 2882 -z zone1 -d /data/obdata/observer01/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer01/etcdata3/etc3;/data/obdata/observer01/etcdata2/etc2"
# 其中:-n 是指定集群的名字,如果不指定,默认的集群叫:obcluster。
[admin@localhost ~]$ ps -ef |grep observer # 查看进程信息
集群 bootstrap
[admin@localhost ~]$mysql -h127.1 -uroot -P2881 -p -c -A # 默认空密码
mysql> set session ob_query_timeout=1000000000;
mysql> alter system bootstrap ZONE 'zone1' SERVER '192.168.101.100:2882' ;
mysql> alter user root identified by 'oracle_4U' ; # 更改root密码
mysql> exit;
[admin@localhost ~]$ mysql -h127.1 -uroot -P2881 -poracle_4U -c -A oceanbase
# 可参考附录中 常用SQL 对一些基本信息进行查询
创建租户
-- 为避免资源不足,在服务器内存充足的情况,可以先增加memory_limit的值。如下:
mysql> alter system set memory_limit='12G' ;
mysql> show parameters like 'memory_limit' \G
*************************** 1. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.101.100
svr_port: 2882
name: memory_limit
data_type: NULL
value: 12G # 已经变更为12GB
info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [8G,)
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
1 row in set (0.00 sec)
mysql> CREATE resource unit my_unit_config max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='10G';
mysql> CREATE resource pool pool_mysql_01 unit = 'my_unit_config', unit_num = 1;
mysql> CREATE tenant mysql01 resource_pool_list=('pool_mysql_01'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8mb4' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';
mysql> CREATE resource pool pool_mysql_02 unit = 'my_unit_config', unit_num = 1;
mysql> CREATE tenant mysql02 resource_pool_list=('pool_mysql_02'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';
mysql> select * from __all_tenant; -- 或 select * from gv$tenant;
# 登录租户 mysql01
[admin@tmgboss101100 oceanbase]$ mysql -h127.1 -uroot@mysql01 -P2881 -p -c -A oceanbase #root默认密码为空,可以使用alter user更改,这里的root和sys租户的root用户不是同一个。
# 创建库和表,也方便扩容后验证。
mysql> create database db1;
mysql> use db1;
mysql> create table t1(id int);
mysql> insert into t1 values(1),(2),(3) ;
mysql> select * from t1 ;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
扩容至3节点
扩容第二个节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer02/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer02/store/sstable
启动 observer 进程
# 确保所有的observer01都替换成observer02。
# -z zone2
[admin@localhost ~]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib/
[admin@localhost ~]$ cd /data/obdata/observer02/ && /home/admin/oceanbase/bin/observer -i em1 -p 3881 -P 3882 -z zone2 -d /data/obdata/observer02/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer02/etcdata3/etc3;/data/obdata/observer02/etcdata2/etc2"
[admin@localhost ~]$ pidof observer # 查看进程信息
添加到集群
mysql> select * from __all_zone where name in ('region','status','zone_type');
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| gmt_create | gmt_modified | zone | name | value | info |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| 2021-12-07 16:13:55.586766 | 2021-12-07 16:13:55.586766 | zone1 | region | 0 | default_region |
| 2021-12-07 16:13:55.584654 | 2021-12-07 16:13:55.584654 | zone1 | status | 2 | ACTIVE |
| 2021-12-07 16:13:55.586766 | 2021-12-07 16:13:55.586766 | zone1 | zone_type | 0 | ReadWrite |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
mysql> alter system add zone 'zone2' region 'default_region';
mysql> alter system start zone 'zone2';
mysql> alter system add server '192.168.101.100:3882' zone 'zone2';
mysql> alter system start server '192.168.101.100:3882' zone 'zone2';
mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2') ;
mysql>select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name
from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2';
mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job;
扩容第三个节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer03/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer03/store/sstable
启动 observer 进程
# 确保所有的observer01都替换成observer03.
# -z zone3
[admin@localhost ~]$ cd /data/obdata/observer03/ && /home/admin/oceanbase/bin/observer -i em1 -p 4881 -P 4882 -z zone3 -d /data/obdata/observer03/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer03/etcdata3/etc3;/data/obdata/observer03/etcdata2/etc2"
添加到集群
mysql> alter system add zone 'zone3' region 'default_region';
mysql> alter system start zone 'zone3';
mysql> alter system add server '192.168.101.100:4882' zone 'zone3';
mysql> alter system start server '192.168.101.100:4882' zone 'zone3' ;
mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2','zone3') ;
mysql> select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name
from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3';
mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job; --直到success为止。
登录验证
-- 为避免资源不足,在服务器内存充足的情况,可以先增加memory_limit的值。如下: mysql> alter system set memory_limit='12G' ; mysql> show parameters like 'memory_limit' \G *************************** 1. row *************************** zone: zone1 svr_type: observer svr_ip: 192.168.101.100 svr_port: 2882 name: memory_limit data_type: NULL value: 12G # 已经变更为12GB info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [8G,) section: OBSERVER scope: CLUSTER source: DEFAULT edit_level: DYNAMIC_EFFECTIVE 1 row in set (0.00 sec) mysql> CREATE resource unit my_unit_config max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='10G'; mysql> CREATE resource pool pool_mysql_01 unit = 'my_unit_config', unit_num = 1; mysql> CREATE tenant mysql01 resource_pool_list=('pool_mysql_01'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8mb4' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql'; mysql> CREATE resource pool pool_mysql_02 unit = 'my_unit_config', unit_num = 1; mysql> CREATE tenant mysql02 resource_pool_list=('pool_mysql_02'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql'; mysql> select * from __all_tenant; -- 或 select * from gv$tenant; # 登录租户 mysql01 [admin@tmgboss101100 oceanbase]$ mysql -h127.1 -uroot@mysql01 -P2881 -p -c -A oceanbase #root默认密码为空,可以使用alter user更改,这里的root和sys租户的root用户不是同一个。 # 创建库和表,也方便扩容后验证。 mysql> create database db1; mysql> use db1; mysql> create table t1(id int); mysql> insert into t1 values(1),(2),(3) ; mysql> select * from t1 ; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.00 sec)
扩容至3节点
扩容第二个节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer02/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer02/store/sstable
启动 observer 进程
# 确保所有的observer01都替换成observer02。
# -z zone2
[admin@localhost ~]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib/
[admin@localhost ~]$ cd /data/obdata/observer02/ && /home/admin/oceanbase/bin/observer -i em1 -p 3881 -P 3882 -z zone2 -d /data/obdata/observer02/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer02/etcdata3/etc3;/data/obdata/observer02/etcdata2/etc2"
[admin@localhost ~]$ pidof observer # 查看进程信息
添加到集群
mysql> select * from __all_zone where name in ('region','status','zone_type');
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| gmt_create | gmt_modified | zone | name | value | info |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
| 2021-12-07 16:13:55.586766 | 2021-12-07 16:13:55.586766 | zone1 | region | 0 | default_region |
| 2021-12-07 16:13:55.584654 | 2021-12-07 16:13:55.584654 | zone1 | status | 2 | ACTIVE |
| 2021-12-07 16:13:55.586766 | 2021-12-07 16:13:55.586766 | zone1 | zone_type | 0 | ReadWrite |
+----------------------------+----------------------------+-------+-----------+-------+----------------+
mysql> alter system add zone 'zone2' region 'default_region';
mysql> alter system start zone 'zone2';
mysql> alter system add server '192.168.101.100:3882' zone 'zone2';
mysql> alter system start server '192.168.101.100:3882' zone 'zone2';
mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2') ;
mysql>select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name
from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2';
mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job;
扩容第三个节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer03/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer03/store/sstable
启动 observer 进程
# 确保所有的observer01都替换成observer03.
# -z zone3
[admin@localhost ~]$ cd /data/obdata/observer03/ && /home/admin/oceanbase/bin/observer -i em1 -p 4881 -P 4882 -z zone3 -d /data/obdata/observer03/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer03/etcdata3/etc3;/data/obdata/observer03/etcdata2/etc2"
添加到集群
mysql> alter system add zone 'zone3' region 'default_region';
mysql> alter system start zone 'zone3';
mysql> alter system add server '192.168.101.100:4882' zone 'zone3';
mysql> alter system start server '192.168.101.100:4882' zone 'zone3' ;
mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2','zone3') ;
mysql> select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name
from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3';
mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job; --直到success为止。
登录验证
分别通过2881,3881,4881端口登录 mysql01 租户,验证数据是否存在。root 密码默认空。
[admin@localhost ~]$ mysql -h127.1 -uroot@mysql01 -P2881 -p -c -A oceanbase mysql> select * from db1.t1; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.00 sec) [admin@localhost ~]$ mysql -h127.1 -uroot@mysql01 -P3881 -p -c -A oceanbase mysql> select * from db1.t1; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.00 sec) [admin@localhost ~]$ mysql -h127.1 -uroot@mysql01 -P4881 -p -c -A oceanbase mysql> select * from db1.t1; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.01 sec)
obproxy安装
安装
[admin@localhost ~]$ sudo rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
#安装完成目录结构如下:
[admin@localhost ~]$ tree /home/admin/obproxy-3.2.0/
/home/admin/obproxy-3.2.0/
└── bin
├── obproxy
└── obproxyd.sh
1 directory, 2 files
创建内部账户
[admin@localhost ~]$ mysql -h127.1 -uroot -P4881 -p -c -A oceanbase
mysql> create user proxyro identified by 'oracle_4U';
mysql> grant select on oceanbase.* to proxyro;
启动
[admin@localhost ~]$ mkdir /data/obdata/obproxy -p
[admin@localhost ~]$ cd /data/obdata/obproxy && /home/admin/obproxy-3.2.0/bin/obproxy -p2883 -c obdemo -r "192.168.101.100:2881;192.168.101.100:3881;192.168.101.100:4881" -o "enable_cluster_checkout=false,enable_strict_kernel_release=false,enable_metadb_used=false"
[admin@localhost ~]$ netstat -ntlp | grep 2883
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:2883 0.0.0.0:* LISTEN 4021/obproxy
# 登录obproxy
[admin@localhost ~]$ mysql -h127.1 -P2883 -uroot@proxysys -p -A -c # 默认密码为空
mysql> show proxyconfig like '%password%';
mysql> alter proxyconfig set observer_sys_password ='oracle_4U' ;
mysql> alter proxyconfig set obproxy_sys_password = 'oracle_4U' ;
# 验证
[admin@localhost ~]$ obclient -h127.1 -uroot@sys#obdemo -P2883 -poracle_4U -c -A oceanbase
[admin@localhost ~]$ obclient -h127.1 -uroot@mysql01#obdemo -P2883 -p -c -A oceanbase # 密码为空
在线更换服务器
扩容至六节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer0{6,7,8}/store/slog
[admin@localhost ~]$ mkdir -p /data/obdata/observer0{6,7,8}/store/sstable
启动 observer 进程
[admin@localhost ~]$ cd /data/obdata/observer06/ && /home/admin/oceanbase/bin/observer -i em1 -p 6881 -P 6882 -z zone6 -d /data/obdata/observer06/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer06/etcdata3/etc3;/data/obdata/observer06/etcdata2/etc2"
[admin@localhost ~]$ cd /data/obdata/observer07/ && /home/admin/oceanbase/bin/observer -i em1 -p 7881 -P 7882 -z zone7 -d /data/obdata/observer07/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer07/etcdata3/etc3;/data/obdata/observer07/etcdata2/etc2"
[admin@localhost ~]$ cd /data/obdata/observer08/ && /home/admin/oceanbase/bin/observer -i em1 -p 8881 -P 8882 -z zone8 -d /data/obdata/observer08/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer08/etcdata3/etc3;/data/obdata/observer08/etcdata2/etc2"
添加到集群
mysql> select * from __all_zone where name in ('region','status','zone_type');
mysql> alter system add zone 'zone6' region 'default_region';
mysql> alter system start zone 'zone6';
mysql> alter system add server '192.168.101.100:6882' zone 'zone6';
mysql> alter system start server '192.168.101.100:6882' zone 'zone6';
mysql> alter system add zone 'zone7' region 'default_region';
mysql> alter system start zone 'zone7';
mysql> alter system add server '192.168.101.100:7882' zone 'zone7';
mysql> alter system start server '192.168.101.100:7882' zone 'zone7';
mysql> alter system add zone 'zone8' region 'default_region';
mysql> alter system start zone 'zone8';
mysql> alter system add server '192.168.101.100:8882' zone 'zone8';
mysql> alter system start server '192.168.101.100:8882' zone 'zone8';
mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2','zone3','zone6','zone7','zone8') ;
mysql> select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name
from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id)
join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`)
left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id)
order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6';
mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job;
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7';
mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8';
验证
[admin@localhost ~]$ mysql -uroot@mysql01 -p -P8881 -h127.1 -c -A oceanbase
mysql> select * from db1.t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.04 sec)
将 zone1、zone2、zone3下线
# 先改资源池里的zone属性,再改tenant的locality属性,locality只能逐个递增添加,不支持一次添加多个。
mysql> select * from gv$tenant;
mysql> alter tenant mysql01 locality='FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8';
mysql> alter tenant mysql01 locality='FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8';
mysql> alter tenant mysql01 locality='FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8';
mysql> alter resource pool pool_mysql_01 zone_list=('zone6','zone7','zone8');
mysql> alter resource pool pool_mysql_02 zone_list=('zone1','zone8');
mysql> alter tenant mysql02 locality='FULL{1}@zone1,FULL{1}@zone8';
mysql> alter resource pool pool_mysql_02 zone_list=('zone1','zone8','zone6');
mysql> alter tenant mysql02 locality='FUll{1}@zone1,FULL{1}@zone8, FULL{1}@zone6';
mysql> alter tenant mysql02 locality='FULL{1}@zone8, FULL{1}@zone6';
mysql> alter tenant mysql02 primary_zone='zone6' ;
mysql> alter tenant mysql02 locality='FULL{1}@zone6';
-- 这里会报错:ERROR 4179 (HY000): violate locality principal not allowed。
-- 不允许缩容到一个副本。 只有搭建单集群的时候才会出现单副本的情况。
# 修改sys租户资源池及locality
mysql> alter resource pool sys_pool zone_list('zone6','zone7','zone8') ;
ERROR 4179 (HY000): Cannot add and delete zones at the same time not allowed # 原来sys_pool里只有zone1,上述命令效果是删除和添加,提示不允许。
mysql> alter resource pool sys_pool zone_list('zone1','zone6','zone7','zone8') ;
msyql> alter resource pool sys_pool zone_list=('zone6') ;
ERROR 4179 (HY000): alter resource pool zone list with not empty unit not allowed
# 上面报错了,先去修改sys租户的locality。
mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone1';
mysql>select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job; -- 查看进度
mysql> alter tenant sys primary_zone='zone7;zone1' ;
mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone1,FULL{1}@zone6';
mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone6';
-- 删除zone1、zone2、zone3
mysql> alter system delete server '192.168.101.100:2882' zone 'zone1';
mysql> alter system delete server '192.168.101.100:3882' zone 'zone2';
mysql> alter system delete server '192.168.101.100:4882' zone 'zone3';
mysql> alter system delete zone 'zone1';
mysql> alter system delete zone 'zone2';
mysql> alter system delete zone 'zone3';
-- 杀掉进程 、 删除目录
[admin@localhost ~]$ for obid in `pidof observer`; do ls -l /proc/$obid/cwd; done
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/39101/cwd -> /data/obdata/observer02
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/33240/cwd -> /data/obdata/observer01
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/26951/cwd -> /data/obdata/observer03
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/20414/cwd -> /data/obdata/observer08
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/19234/cwd -> /data/obdata/observer07
lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/17157/cwd -> /data/obdata/observer06
[admin@localhost ~]$ kill -9 39101 33240 26951
[admin@localhost ~]$ rm -rf /data/obdata/observer0{1,2,3}
重新配置obproxy
扩容至六节点
创建目录
[admin@localhost ~]$ mkdir -p /data/obdata/observer0{6,7,8}/store/slog [admin@localhost ~]$ mkdir -p /data/obdata/observer0{6,7,8}/store/sstable
启动 observer 进程
[admin@localhost ~]$ cd /data/obdata/observer06/ && /home/admin/oceanbase/bin/observer -i em1 -p 6881 -P 6882 -z zone6 -d /data/obdata/observer06/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer06/etcdata3/etc3;/data/obdata/observer06/etcdata2/etc2" [admin@localhost ~]$ cd /data/obdata/observer07/ && /home/admin/oceanbase/bin/observer -i em1 -p 7881 -P 7882 -z zone7 -d /data/obdata/observer07/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer07/etcdata3/etc3;/data/obdata/observer07/etcdata2/etc2" [admin@localhost ~]$ cd /data/obdata/observer08/ && /home/admin/oceanbase/bin/observer -i em1 -p 8881 -P 8882 -z zone8 -d /data/obdata/observer08/store -r '192.168.101.100:2882:2881' -c 20211207 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=20G,stack_size=1536K,config_additional_dir=/data/obdata/observer08/etcdata3/etc3;/data/obdata/observer08/etcdata2/etc2"
添加到集群
mysql> select * from __all_zone where name in ('region','status','zone_type'); mysql> alter system add zone 'zone6' region 'default_region'; mysql> alter system start zone 'zone6'; mysql> alter system add server '192.168.101.100:6882' zone 'zone6'; mysql> alter system start server '192.168.101.100:6882' zone 'zone6'; mysql> alter system add zone 'zone7' region 'default_region'; mysql> alter system start zone 'zone7'; mysql> alter system add server '192.168.101.100:7882' zone 'zone7'; mysql> alter system start server '192.168.101.100:7882' zone 'zone7'; mysql> alter system add zone 'zone8' region 'default_region'; mysql> alter system start zone 'zone8'; mysql> alter system add server '192.168.101.100:8882' zone 'zone8'; mysql> alter system start server '192.168.101.100:8882' zone 'zone8'; mysql> alter resource pool pool_mysql_01 zone_list=('zone1','zone2','zone3','zone6','zone7','zone8') ; mysql> select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id) join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`) left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id) order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id; mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6'; mysql> select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job; mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7'; mysql> alter tenant mysql01 locality='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8';
验证
[admin@localhost ~]$ mysql -uroot@mysql01 -p -P8881 -h127.1 -c -A oceanbase mysql> select * from db1.t1; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.04 sec)
将 zone1、zone2、zone3下线
# 先改资源池里的zone属性,再改tenant的locality属性,locality只能逐个递增添加,不支持一次添加多个。 mysql> select * from gv$tenant; mysql> alter tenant mysql01 locality='FULL{1}@zone2, FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8'; mysql> alter tenant mysql01 locality='FULL{1}@zone3, FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8'; mysql> alter tenant mysql01 locality='FULL{1}@zone6, FULL{1}@zone7, FULL{1}@zone8'; mysql> alter resource pool pool_mysql_01 zone_list=('zone6','zone7','zone8'); mysql> alter resource pool pool_mysql_02 zone_list=('zone1','zone8'); mysql> alter tenant mysql02 locality='FULL{1}@zone1,FULL{1}@zone8'; mysql> alter resource pool pool_mysql_02 zone_list=('zone1','zone8','zone6'); mysql> alter tenant mysql02 locality='FUll{1}@zone1,FULL{1}@zone8, FULL{1}@zone6'; mysql> alter tenant mysql02 locality='FULL{1}@zone8, FULL{1}@zone6'; mysql> alter tenant mysql02 primary_zone='zone6' ; mysql> alter tenant mysql02 locality='FULL{1}@zone6'; -- 这里会报错:ERROR 4179 (HY000): violate locality principal not allowed。 -- 不允许缩容到一个副本。 只有搭建单集群的时候才会出现单副本的情况。 # 修改sys租户资源池及locality mysql> alter resource pool sys_pool zone_list('zone6','zone7','zone8') ; ERROR 4179 (HY000): Cannot add and delete zones at the same time not allowed # 原来sys_pool里只有zone1,上述命令效果是删除和添加,提示不允许。 mysql> alter resource pool sys_pool zone_list('zone1','zone6','zone7','zone8') ; msyql> alter resource pool sys_pool zone_list=('zone6') ; ERROR 4179 (HY000): alter resource pool zone list with not empty unit not allowed # 上面报错了,先去修改sys租户的locality。 mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone1'; mysql>select gmt_create,gmt_modified,job_id,job_type,job_status,return_code,progress,tenant_id from __all_rootservice_job; -- 查看进度 mysql> alter tenant sys primary_zone='zone7;zone1' ; mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone1,FULL{1}@zone6'; mysql> alter tenant sys locality='FUll{1}@zone7,FULL{1}@zone6'; -- 删除zone1、zone2、zone3 mysql> alter system delete server '192.168.101.100:2882' zone 'zone1'; mysql> alter system delete server '192.168.101.100:3882' zone 'zone2'; mysql> alter system delete server '192.168.101.100:4882' zone 'zone3'; mysql> alter system delete zone 'zone1'; mysql> alter system delete zone 'zone2'; mysql> alter system delete zone 'zone3'; -- 杀掉进程 、 删除目录 [admin@localhost ~]$ for obid in `pidof observer`; do ls -l /proc/$obid/cwd; done lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/39101/cwd -> /data/obdata/observer02 lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/33240/cwd -> /data/obdata/observer01 lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/26951/cwd -> /data/obdata/observer03 lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/20414/cwd -> /data/obdata/observer08 lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/19234/cwd -> /data/obdata/observer07 lrwxrwxrwx 1 admin admin 0 Dec 8 11:18 /proc/17157/cwd -> /data/obdata/observer06 [admin@localhost ~]$ kill -9 39101 33240 26951 [admin@localhost ~]$ rm -rf /data/obdata/observer0{1,2,3}
重新配置obproxy
参考前面 obproxy 安装部分,此处省略。