Orchestrator源码分析1-实例/拓扑发现

目录

前言 

发现MySQL集群拓扑的方式

实例发现函数调用流程

实例拓扑发现核心流程图

核心函数详细解读

.go/cmd/orchestrator/main() -  函数入口

ReadTopologyInstanceBufferable 

如何处理MySQL的hostname(主机名)

如何获取实例的MySQL信息 

如何通过实例发现其从副本

首先通过 :SHOW SLAVE HOSTS; 获取

如果获取不到则通过 PROCESSLIST;

如何通过实例发现其主库

如何获取实例的机房,地域等信息

如何获取实例的实例的提升规则

如何获取该实例所在集群的别名

如何获取该实例所在集群的域名 domain

如何将获取的信息写入到后台管理数据库中?

 last_attempted_check,last_check ,last_seen如何更新的

 last_attempted_check:最后一次尝试检查该该实例的时间

last_check : 最后一次真正检查实例的时间

DiscoverInstance(instanceKey inst.InstanceKey)

如果确定该实例是否被forgoteen

如果过滤发现某些实例

如果确定实例最近一次检查有效

如何实现持续发现实例

handleDiscoveryRequests

ContinuousDiscovery

healthTick 定时器

instancePollTick 定时器

autoPseudoGTIDTick 定时器

caretakingTick

recoveryTick 定时器

snapshotTopologiesTick 定时器

与MHA相比


前言 

Orchestrator最重要的功能之一是拓扑结构发现,相比于MHA将实例信息配置到配置文件,Orchestrator可以通过集群中某一个实例的instanceKey(ip:port)发现整个集群的拓扑结构。本篇文章通过源码层次解读Orchestrator 是如何进行实例发现的。后面的文章还会通过源码层次讲解实例的故障或失败的发现和探测, 故障的恢复。

发现MySQL集群拓扑的方式

使用OC管理过MySQL集群的大概都知道,Orchestrator发现实例大概有下面三种方式

1 自动发现

2 手动发现 - 通过Web 控制台发现实例

3 手动发现 - 通过命令行接口发现实例

实例发现函数调用流程

.go/cmd/orchestrator/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值