概要描述
不建议通过这种方式操作,此方法只是作为无法打开 kunctld 和 orchestrator 页面时的备用方案。
版本信息:kundb-2.1.2-final
熟悉 kundb 基础操作:kunDB运维之常用查询操作
详细说明
主要有以下几步:
- 确定主从节点信息
- 检查主从状态,确保流水正常同步
- 后台命令操作主备切换
- 在新 master 节点修复主从关系,并设置读写模式
- 旧 master 节点设置为只读模式
- 检查切换后的状态
1.确定主从节点信息
a.任选一pod进入
kubectl get po -owide|grep kundb9
kubectl exec -it kundb-kungate-kundb9-f789df97f-9z6ss bash
b.pod内执行操作
./kunctl.sh ListAllTablets transwarp
由图上可知 master 所在节点为kundb-02,replica所在节点为kundb-00、kundb-01
2.检查主从状态
分别进入master所在节点Pod和另外两个备节点pod内,连接底层mysql
show slave status \G
通过在备节点执行后获取,其中
Master host为 master节点信息
Slave_IO_Running: yes;Slave_SQL_running yes; 主备同步正常
Slave_SQL_Running_state 无流水落后情况 正常
另外每个底层均执行以下命令,确保master所在节点GTID多于或等于replica的值
show master status \G
注意:需确保以上信息均正常方能执行接下来操作
3.操作主备切换(任意一个 kungate pod 内执行)
如果是分布式版本需进入kunctld容器内执行
a.任选一个 kungate pod 内执行命令
将master由02节点切换到00节点,相当于执行"外部重组"操作
./kunctl.sh TabletExternallyReparented transwarp-0000000001
其中transwarp-0000000001对应00节点 从上图图标①获取
4.修复主从关系(新的 master 节点的 kungate pod 内执行)
b.恢复主从关系
此时主备关系已发生转换 目前00节点为master;
因手动执行主备切换后,主从关系也会发生改变,需重新确立,执行以下操作
进入新主所在pod内,连上底层mysql
kubectl exec -it kundb-kungate-kundb9-f789df97f-t8tlm bash
ps -ef |grep mysqld
mysql --socket=/vdir/mnt/disk1/kundb9/vt_0000000001/mysql.sock
登陆到新主底层mysql后执行以下操作
stop slave;reset slave all;
5.修改读写模式
原主节点的参数 read-only 未发生改变,需手动修改成 read_only=true
进入原主节点的 kungate pod 内,连接底层 mysql(现在为备节点)
执行以下操作
set global read_only=true;
6.检查切换后的状态
最后可到每个replica的pod底层执行命令检查是否正常
show slave status \G
通过在备节点执行后获取
Master host为 kundb-00 (新主)
Slave_IO_Running: yes;Slave_SQL_running yes; 主备同步正常
Slave_SQL_Running_state 无流水落后情况 正常
至此。