12、如何在已有的数据库中无损主主备份?

MySQL四种复制方式

  • 1.异步复制( asynchronous )

    • 搭建简单,使用非常广泛,从mysql 诞生之初,就产生了这种架构,性能非常好,非常成熟。但这种架构是异步,所以有数据丢失的风险。

  • 2.全同步复制 ( fully synchronous )

    • 保证数据安全, 不丢失数据,损失性能。

  • 3.传统半同步复制 ( Semi synchronous )rpl_semi_sync_master_wait_point=after_commit

    • 性能,功能都介于异步和全同步之间。 从mysql5.5开始诞生,目的是为了折中上述两种架构的性能及优缺点。

  • 4.无损复制,增强版的半同步复制 ( lossless replication ) rpl_semi_rsync_master_wait_point=after_sync

    • 数据零丢失,性能好,mysql5.7诞生。

推荐使用:对性能要求较高的推荐使用异步复制 ,如果运行的金融类业务推荐使用增强半同步复制,并使用ROW+GTID+5.7以上

主主备份

这里直接使用增强班GTID模式,无损复制模式

  • 主1数据库 aaaa,复制到主2服务器

  • 主2数据库 bbbb,复制到主1服务器

  • 环境: MYSQL:5.7

1、主主配置

  • 主一 my.cnf

  • 主二 my.cnf

2、创建备份专用用户

172.17.0.3 是从 IP 地址,表示只允许此IP地址进行复制

3、设置全局锁

4、先全备份

5、再主主备份

主一: 172.17.0.2

主二: 172.17.0.3

6、释放全局锁

小结:这样主从配置完成了

从服务器维护

1、先记录位置

2、再开启复制

主主切换

  • 主备正常切换以及主库宕机备库切换两个场景,掌握正确的切换流程,可以有效避免切换过程中可能出现的数据不一致问题以及提高整体切换的时间

正常切换

主备正常切换,此场景主要是针对在主备同步复制正常的情况下进行的主备切换,例如:灾备演练,计划性的主备切换。

  • 1、切断应用对主库的写流量

  • 2、主库备库设置只读

  • 3、查看备库复制进程状态

  • 4、比对主备两边的GTID是否一致

  • 5、从库停掉复制进程并清空主从信息

  • 6、从库关闭只读开启读写,转为新主库

  • 7、主库设置执行新主库的复制链路,转为新备库,完成主从切换

  • 8、应用流量切向新主库

主库备库设置只读

比对主备两边的GTID是否一致

  • 可通过GTID_SUBSET函数进行比对; SELECT GTID_SUBSET(master_gtid_executed, slave_gtid_executed);

  • 若在master_gtid_executed中的GTID,也存在slave_gtid_executed中,则返回true(1),否则返回false(0)

  • 返回1,代表主库GTID已经在从库完成执行过,两边是一致的

  • 返回0,代表主库GTID已经未在从库完成执行过,两边是不一致的

从库关闭只读开启读写,转为新主库

  • 172.17.0.2 原主

  • 172.17.0.3 原从

应用流量切向新主库

Last updated