mysql主从复制

在已有数据基础上实施mysql主从复制备份

新到公司不久,事故起因于另一开发人员,在实施定期手工备份时,误将导出操作为导入,使数据库被还原于上一次(约半个月前)导出的数据。

经过查实,发现我们所使用的mysql竟没有开启binlog备份,无从还原。

这半个月的数据本来就来之不易,更何况作为初创公司,简直致命,如果无法还原,公司很可能面临关门

幸好,因为使用的是阿里云服务器,它每天定时备份,使得可以将大部分数据恢复。


至此,该实施自动化备份了。


自动化备份方案选择:

  • A: 自动定时export数据进行备份(简单粗暴,无法完整恢复)
  • B: 使用binlog,实时备份数据(简单可用,无法灾难恢复)
  • C: 使用master-slave,实时双机备份数据(比较靠谱,双机保障)
  • D: 主主复制(目前没这个必要)或一主多从等其它方案(初创公司资源不多,虽然阿里云机器也不贵)

综上,采用了方案C:

  • 参考官方文档
  • 在docker上模拟场景(主要是已有数据基础上及数据恢复)进行主从复制研究测试,确保理解无误,方案正确
  • 整理整个操作流程[1],确保思路清晰正确
  • 将大部分操作shell化并测试无误,方便实施时直接使用,避免手误
  • 选定数据操作最少时间段实施方案
  • 虽然模拟场景并测试充分,但方案实施时依然遇到一个插(wen)曲(ti):出现check-sum问题。
  • 原因:我只查看了master机器的mysql版本为5.5.19,于是模拟场景也是基于master和slave都是这个版本进行测试,然而slave上的版本是5.4,无此特性。最后,直接升级slave版本到5.519解决之。

至此,方案实施完成,并在随便几天连续确认状态是否正常。

总结

  • 线上数据库部署时,切记开启自动备份机制。
  • 初创公司一般无运维,开发人员应当承担起这份责任。
  • 作为开发者,尽可能让所有可自动化的事情自动化,高效之道也。

  1. 操作流程图
    mysql主从复制_第1张图片
    主从同步

你可能感兴趣的:(mysql主从复制)