本文讲述 OceanBase 数据库执行 DELETE SERVER 的前置条件和需要完成的操作。
DELETE SERVER 需要执行的操作和检查:
当前节点 partition 是否回收完成
select tenant_id,count(1) from __all_virtual_meta_table where svr_ip = 'xxx.xxx.xxx.xxx' group by 1;当返回为空,表示已完成回收。
xxx.xxx.xxx.xxx为被 delete 的 server ip。当前节点 unit 是否回收完成
select * from __all_unit where svr_ip = 'xxx.xxx.xxx.xxx';当返回为空,表示已完成回收;
xxx.xxx.xxx.xxx为被 delete 的server ip。目标 zone 是否缺失副本
select count(*) c,* from gv$partition group by table_id, partition_id having c != 3 and c != quorum;当返回为空,表示集群上没有缺失副本的 partition,在集群比较复杂的环境下,可以给上面的查询加上 zone 条件进行筛选,如果返回不为空,说明集群当前有副本缺失的情况,需要资源补足副本,此时执行 delete server 会报机器或资源不足错误,这种情况,需要先在其他节点上补齐副本,或者给集群增加节点,待副本补齐,再次查询返回为空后再尝试 delete server。
适用版本
OceanBase 数据库所有版本。