mysqlsh切换到mysql_mysqlsh:force_primary_instance强制切换实现逻辑

本文详细解析了mysqlsh中的force_primary_instance方法,用于强制切换MySQL主库的内部逻辑。介绍了处理流程,包括获取集群信息、检测新旧主一致性、处理不可达或错误实例、等待实例同步、选择新主及强制提升为主等步骤。此外,还涉及了在异常情况下如何处理和回滚操作。
摘要由CSDN通过智能技术生成

author:sufei

版本:mysql shell 8.0.19

本文是接续上一篇《set_primary_instance安全切换实现逻辑》。

主要讲解mysqlsh实现安全切换逻辑,即force_primary_instance的内部实现逻辑。

一、force_primary_instance处理逻辑

​ 执行整个强制切换的入口函数为Replica_set_impl::force_primary_instance,

void Replica_set_impl::force_primary_instance(const std::string &instance_def,

uint32_t timeout,

bool invalidate_error_instances,

bool dry_run)

其中参数:

instance_def 表示切换到的新主;

timeout 表示gtid同步超时时间

invalidate_error_instances 表示是否忽略存在错误的从库

dry_run 如果为true则表示并不进行真正的切换操作,只进行相关检测

下面是其主要处理逻辑框图

006ce9b5307a

force_primary_instance逻辑

二、步骤详解

获取集群信息

topology::Server_global_topology *srv_topology = nullptr;

auto topology = setup_topology_manager(&srv_topology);

在这其中会获取每个实例的复制信息,具体调用栈如下:

setup_topology_manager

|--->scan_global_topology

|------>load_cluster //获取集群所有实例元数据信息

|------>check_servers

|--------->check_server

|------------>load_instance_state // 获取实例状态信息具体内容如下:

instance->server_id = *conn->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值