模拟故障
集群对应的 obd yaml 附件: test999.yaml
test999.zip (1.6 KB)
kill observer 进程 、删除所有 OceanBase 的文件,模拟机器故障。
重建操作系统 IP 未变化
处理方法
1、新建替换后节点的 yaml 附件: zone2.yaml
zone2.zip (1.3 KB)
说明
该附件中的 IP 正常应该为替换后节点的 IP,这里仅是模拟,所以 IP 仍然为 199
2、部署第一步创建的节点
obd cluster deploy add_zone2 -c zone2.yaml
3、备份 obd 部署 test999 对应的 config.yaml 文件
4、修改 config.yaml 文件
修改故障节点的 IP 为新替换后的机器 IP,本次模拟测试,IP 没有变化。
5、obd cluster start test999
注意这里 start 的是 test999 而非 add_zone2
6、确认状态
select * from __all_rootservice_event_history order by gmt_create desc limit 5
select * from __all_server;
select * from __all_virtual_replica_task;
新机器 IP 变化
处理方法
1、删除对应的 observer 节点(报错)
报错:ERROR 4624 (HY000): machine resource ‘zone2’ is not enough to hold a new unit
2、修改租户 locality
select unit_id,unit_config_id,unit_config_name,resource_pool_id,resource_pool_name,zone,tenant_id,tenant_name,svr_ip,svr_port from gv$unit;
select * from gv$tenant ;
alter tenant sys locality='F@zone1,F@zone3';
select * from __all_rootservice_job where sql_text like '%alter tenant sys locality%' and gmt_create > '2022-09-19 17:30:00' \G
alter tenant test1 locality='F@zone1,F@zone3';
select * from __all_rootservice_job where sql_text like '%alter tenant test1 locality%' and gmt_create > '2022-09-19 17:50:00' \G
3、修改租户的 resource_pool_list
select * from __all_resource_pool;
由于 sys 租户的 resource pool 是复用的,需要 split 拆分成每个 zone 对应一个
alter resource pool sys_pool split into ('pool_sys_zone1','pool_sys_zone2','pool_sys_zone3') on ('zone1','zone2','zone3');
alter tenant sys resource_pool_list=('pool_sys_zone1','pool_sys_zone3');
alter tenant test1 resource_pool_list=('p1_zone1','p1_zone3');
4、删除 resouce pool
drop resource pool if exists pool_sys_zone2;
drop resource pool if exists p1_zone2;
5、删除对应的 observer 节点(成功)
alter system delete server '172.30.199.199:12882' zone 'zone2';
6、新建替换机器节点的 yaml 附件
zone2.zip (1.3 KB)
7、部署上一步创建的节点
obd cluster deploy add_zone2 -c zone2.yaml
8、obd cluster start test999
9、添加 server
alter system add server '172.30.199.199:12882' zone 'zone2';
10、租户添加副本
10.1 查看 unit
select * from __all_unit_config;
10.2 创建资源池
create resource pool pool_sys_zone2 unit 'sys_unit_config',unit_num=1,zone_list=('zone2');
create resource pool p1_zone2 unit 'u1_zone2',unit_num=1,zone_list=('zone2');
10.3 修改租户 resource_pool_list
alter tenant sys resource_pool_list=('pool_sys_zone1','pool_sys_zone2','pool_sys_zone3');
alter tenant test1 resource_pool_list=('p1_zone1','p1_zone2','p1_zone3');
10.4 修改租户 locality
alter system set server_data_copy_in_concurrency=10;
alter system set server_data_copy_out_concurrency=10;
alter tenant sys locality='F@zone1,F@zone2,F@zone3';
select * from __all_virtual_replica_task;
select * from __all_rootservice_job;
alter tenant test1 locality='F@zone1,F@zone2,F@zone3';
select * from __all_virtual_replica_task;
select * from __all_rootservice_job;