FILE+POS 方式 GreatSQL 主从复制架构给主节点磁盘扩容

打印 上一主题 下一主题

主题 1810|帖子 1810|积分 5430

FILE+POS 方式 GreatSQL 主从复制架构给主节点磁盘扩容

一、条件

在一套非常老的体系上,有一套GreatSQL主从集群(1主1从),主从复制采用的是FILE+POS方式复制,磁盘使用告急必要扩容,只能在该台机器上添加更大的磁盘,将原数据盘替换,也没有其他的机器资源替换。这套体系没有VIP,没有高可用切换工具,业务读写直连主节点,从节点可供读,允许有肯定的延迟,全程磁盘扩容必要手动操纵,以下方案步调是模拟最快的方式去进行磁盘扩容。
二、整体思绪是

在主节点机器上挂载一块新磁盘,在新磁盘上搭建一个新的从节点,旧从节点的主变为新从节点,最后将主节点与新从节点准备好设置文件后,关闭主节点,将新从节点使用新的设置文件重启,端口号为旧主port,新主实例顶替旧主成功。
三、模拟情况

主从架构

db01:master,172.17.135.81:3306
db02:slave02,172.17.134.225:3306
原主从db01 master复制数据到db02 slave02,现在在db01上搭建新的从节点slave01,并将slave01提升为新的主节点master02
db01:IP为172.17.135.81
master :port 3306
slave01:port 3307
db02:IP为172.17.134.225
slave02:port 3306
四、以下操纵为模拟切换流程

1).在db01上master 数据放在磁盘 /data/
使用xtrabackup工具备份并搭建db01 slave01 数据放在磁盘/data2/上
2).改变db02 slave02 数据源为 db01 slave01(即db02 slave02 从db01-slave01同步数据),后期切换数据库
操纵过程

01.停掉db02 slave02 复制线程

先停slave02目的是,slave02获取执行的binlog比db01 slave01上的binlog少,方便后续db02 slave02 追数据到db01 slave01 指定的位点

02.观察db02 slave02(肯定要小于04步调的位置)
  1. greatsql> show slave status\G
  2. Relay_Master_Log_File: mysql-bin.000002
  3. Exec_Master_Log_Pos: 61781270
复制代码

03.停掉db01 slave01主从线程

观察主从复制情况,确认 db01 slave01 获取主节点位点比db02 slave02 大,然后停掉主从,方便方便获取db01 slave01上的binlog位置信息(show master status)
观察标记部分比db02 slave02大

制止复制

04.观察db01 slave01
  1. greatsql> show slave status\G
  2. Relay_Master_Log_File: mysql-bin.000002
  3. Exec_Master_Log_Pos:73110158
复制代码

05.观察db01 slave01

与获取主节点过来的binlog位点信息与当前节点上binlog位点信息对应关系
  1. greatsql> show master status;
  2. File :mysql-bin.000003   
  3. Position : 48396034
复制代码

06.开启db01 slave01 主从线程

使db01 slave01 正常追数据
  1. greatsql> start slave;
复制代码
07.db02 slave02  执行 until 的位置 为(04步调)得到的值

追binlog至指定位点,该位点对应着db01 slave01 节点上show master status获取的位点信息
  1. greatsql> start slave until MASTER_LOG_FILE ='mysql-bin.000002',MASTER_LOG_POS =73110158;
复制代码

观察状态,是否到指定位点制止
  1. greatsql> show slave status \G
复制代码

到指定位点制止后,停掉主从复制
  1. greatsql> stop slave;  
复制代码

08.db02 slave02 从db01 slave01获取数据源(即重新指定db02 slave02 主库信息)

根据04 、05 获取的主binlog位点与db01 slave01 binlog位点对应关系,将db02 slave02复制关系指定位从db01 slave01获取binlog数据,重启主从复制,并观察主从状态
在db02 slave02 重新指定复制关系
  1. greatsql> reset slave all;
  2. greatsql> CHANGE MASTER TO MASTER_HOST= '172.17.135.81',MASTER_USER='rpl', MASTER_PASSWORD='rpl123!',MASTER_PORT=3307,MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=48396034;
  3. greatsql> start slave;
复制代码

观察复制状态,等待复制正常之后在进行下一步,避免数据丢失
  1. greatsql> show slave status \G
复制代码

09.关照将业务制止,避免数据更新,观察全部节点是否处于同一binlog位点状态

在db01 master节点上观察

观察db01 slave01 主从是否正常,且无延迟
  1. greatsql> show slave status\G
复制代码
  1. greatsql> show master status;
复制代码

观察 db02 slave02

10.制止db02 slave 02
  1. greatsql> stop slave;
复制代码
11.在db02 slave 02观察
  1. greatsql> show slave status\G
  2. Relay_Master_Log_File: mysql-bin.000003
  3. Exec_Master_Log_Pos: 114096916
复制代码
12.先后正常关闭 db01 master,然后关闭db01 slave01

修改设置文件db01 slave01 端口号为3306
13.启动db01 slave01(不要启动db01 master)

登录db01 slave01 清除复制信息
  1. greatsql> reset slave all;
复制代码
14.重置db02 slave02主从复制信息,从新的主节点拉取数据
  1. greatsql> CHANGE MASTER TO MASTER_HOST= '172.17.135.81',MASTER_USER='rpl', MASTER_PASSWORD='rpl123!',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=114096916;
  2. greatsql> show slave status\G
复制代码

15、关照业务重连,磁盘扩容完成

五、案例总结

本案例重要是针对非GTID复制、无自动切换、无VIP、无新机器、磁盘无法动态扩容的场景。
核心头脑是找到对应的binlog位点信息,在重新指定主从信息,在重新指定主从信息之前,可以做准备工作,比方主节点上的新备主节点可以提前准备,设置文件可以提前准备,命令提前准备好,通过填补的方式将关键信息填到对应的命令中,尽量的去节省时间以及追数时间,促使业务宕机时间到达最短。

Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表