线上系统已经运行一年多,子系统越来越多,数据库越来越大。
我们的服务是一个4C8G,100G数据盘的云服务器。每次导出的sql脚本将近400M。
为了做好数据备份,一开始的做法是,线上系统每两个小时使用mysqldump进行备份,然后本地有一个内网服务器定时同步。 这种做法足够简单,但是问题也很明显:
1. 备份的数据有两个小时延迟。
2. 数据量较大是对于服务器的压力较大,要么占用大量空间,要么使用gzip压缩,不管是哪种,缺点都很大。
一开始,受限于对MySQL的了解,尝试了传统的主从复制,手动指定binlog文件和position;在本地尝试运行时,看起来是可以的,但是尝试进行线上同步时,失败了几次,原因是线上业务是持续的,主数据库有不断的写入,postion一直是变化的,从而导致从数据库同步失败。
后面,通过搜索了解了MySQL GTID主从复制的方法;这个方法也是在传统主从复制的基础上改进的,区别在与不用再手动设置binlog文件和position。
以下是互联网上关于MySQL GTID主从复制的介绍和描述:
MySQL GTID(Global Trans