首批通过分布式安全可靠测评,为关键业务系统打造
如何手动执行切主
更新时间:2024-01-22 01:56
背景信息
切主动作分为手动切主和自动切主。 切主一般是指针对一个租户或多个租户下的表进行 Paxos Leader 的重新选举,结果是租户下副本 leader 分布在另一个期望的节点上的行为。
自动切主无需人工干预,比如:某台机器的硬件故障导致无法提供服务,或者 observer 进程意外退出。 某些场景下,需要手动执行切主动作来进行问题的应急,或者进行测试工作。
手动切主
手动切主有以下几种方法。
通过修改租户的 primary zone 来执行切主动作。
注意
使用此方法需要开启
enable_auto_leader_switch配置项,关于配置项enable_auto_leader_switch,请参见 enable_auto_leader_switch。推荐此方法,执行的级别为租户级别。可以单独对某一个或多个租户切主。具体语句如下。
alter tenant <tenant name> set primary_zone='z1;z2,z3';通过对分区的副本 leader 改选,以达到切主目的。
alter system switch replica {LEADER | FOLLOWER} { partition_id_desc SERVER [=] 'ip:port' | SERVER [=] 'ip:port' [tenant_name] | ZONE [=] 'zone' [tenant_name] }通过隔离或者停止 zone、节点,以达到切主目的。
此方法在应急中实际上是执行切主动作的,缺点是范围是节点或者 zone 级别。
通常某个机房网络问题导致整个机房不稳定(不是完全不可用)的情况下,可以隔离或者停止 zone、节点,停止业务流量到该问题机房,同时执行切主。
停止 zone、节点。
alter system stop zone <zone name>;alter system stop server <ip:port>;隔离 zone、节点。
alter system isolate zone <zone name>;alter system isolate server <ip:port>;
适用版本
OceanBase 数据库 V2.x、V3.x 版本。