stop server 命令咨询

在stop的时候会判断剩余副本是否满足多数派,如果需要在stop之前先查询一下 当前节点上的副本 然后再看剩余节点的副本是不是满足多数派 是不是可以看dba_ob_ls_locations 视图记录的副本情况就可以

查看GV$OB_SERVERS比较合适,看下所有节点的状态


老师 这个只能看到 节点资源使用情况
假如 要停止的节点上有不少不同租户的副本 假如此时还有别的节点处于stop状态
有没有可以快速查询的语句 通过查询可以判断出停止该节点后 有没有不满足多数派的情况

我刚尝试停止了一台server dba_ob_ls_locations 里边并没有字段记录当前日志流所在机器的状态 那就得关联一下dba_ob_servers 才能判断

查询dba_ob_tenants的LOCALITY字段进行判断该租户副本在哪些个zone即可判断出停该节点是否涉及到影响多数派

1 个赞

老师 感觉也得结合dba_ob_servers 看是否有其他zone的节点处于stop状态 单看一张表也不好判断

是的确实需要查看下server状态,不过现实生产环境都是有ocp监控的 节点宕机服务断开都可以实时监控到的

好的 老师 感谢

老师 再追问一下 这个方法是否准确 请帮忙验证一下。
假如被隔离节点是 172.16.135.166

1、查询被隔离节点上的paxos副本成员数量,如果所有租户paxos副本成员数量都一致,则直接执行第二步。
select distinct PAXOS_REPLICA_NUMBER from cdb_ob_ls_locations where svr_ip = ‘172.16.135.166’;

2、根据第一步的查询结果,执行一下语句查询剩余zone的节点上,被停止节点的全功能副本日志流在其他zone的数量是否满足多数派,其中需要修改的地方是条件中的ip 和 count(1) < ? 假如paxos是3,那么 count(1) < 2,如果假如paxos是5,那么count(1) < 3 。当查询结果有值,则代表有副本的数量不满足多数派。
select
a.tenant_name,a.ls_id,count(1)
from
(
select distinct
t.tenant_name,
t.primary_zone,
t.locality,
t.status,
s.ls_id,
s.svr_ip,
s.replica_type
from
dba_ob_tenants t
join cdb_ob_ls l on t.tenant_id = l.tenant_id
join cdb_ob_ls_locations s on l.ls_id = s.ls_id
join dba_ob_servers ds on s.svr_ip = ds.svr_ip
where
s.replica_type = ‘full’
and ds.stop_time is null
and ds.status = ‘ACTIVE’
and ds.zone != (
select
zone
from
dba_ob_servers
where
svr_ip = ‘172.16.135.166’
)
) a
JOIN (
select distinct
t.tenant_name,
s.ls_id
from
dba_ob_tenants t
join cdb_ob_ls l on t.tenant_id = l.tenant_id
join cdb_ob_ls_locations s on l.ls_id = s.ls_id
where
s.svr_ip = ‘172.16.135.166’
and s.replica_type = ‘full’
) b on a.tenant_name = b.tenant_name
and a.ls_id = b.ls_id
group by
a.tenant_name,
a.ls_id
having count(1) < 2;

a表查询的数据为除了被隔离节点所在zone以外的其他zone上非隔离节点上的活跃全功能副本
b表查询的数据为被隔离节点上租户的全功能副本和日志流id
通过两表关联,查询出被隔离节点上的租户日志流全功能副本在其他zone的活跃全功能副本是否满足多数派

第三步 如果第一步查询出的paxos数量不同,则需要查询出每个租户的paxos成员数量,然后根据租户分别查询。需要将第二步的过滤条件中新增租户的名称即可。

劳烦~

PAXOS_REPLICA_NUMBER只有副本是leader才显示。


1.如果是每个节点都有租户的unit你只需要维持多数派的zone正常
2.如3-3-3集群 租户unit为2-2-2此时需要多考虑一下了