主库已有数据时,如何进行主备复制?

主库已有数据时,如何进行主备复制?

在大多数业务场景下,DBA做主备复制的搭建的时候,主库都已经有数据。那么,在主库有数据的情况下,如何进行主备复制?
mysql提供了如下几种方案:

  • 冷备份
  • 热备份
  • 使用mysqldump
  • 使用快照或备份
  • 使用percona Xtrabackup开源热备份工具

这里详细讲解下mysqldump方式,其他备份方式,简单讲解下。

一、冷备份

冷备份基本操作很是粗暴,先关闭数据库,然后将数据复制到备库,再重启主库,这时主库会重新生成binlog日志文件,然后再备库执行 change master to...指向新生成的binlog文件的起始处,再接着执行start slave;进行主备复制。
这种方式缺点很明显,需要停数据库。

二、热备份

针对于使用MyISAM的存储引擎的表。这里不做描述

三、使用mysqldump

只包含InnoDB的表,那么可以使用mysqldump的方式。
一般使用命令:
mysqldump --single-transation --all-databases --master-data=1 > dump.sql
这里对上面的mysqldump命令做一下解释:

  • --single-transation代表是开始一个事务
  • --all-databases代表dump所有数据库
  • --master-data有两种值,为1时,将会把当前执行事务时的binlog文件和偏移量以change master..命令输出到dump的数据文件中;设置为2时,会将此命令注释掉。

所以,当主库有数据时,执行上面的mysqldump --single-transation --all-databases --master-data=1 > dump.sql指令将数据导入至dump.sql,再将dump.sql文件导出至备库的服务器。在备库执行dump.sql导入数据,导入完成后,再执行start slave;进行主备复制。就可以从导出数据dump.sql数据的那一刻开始继续复制主库的数据了。

五、使用快照或备份

只要知道备份的时间点,和快照时刻对应的二进制文件和偏移量就可以,在出现问题时,根据快照进行回滚。并根据二进制文件和偏移量进行主备复制。

六、使用percona Ctrabackup开源热备份工具

这里不做描述

本文是作者根据日常业务场景,写出的一些解决问题或学习实验的历程。如有错误的地方,还请指出,相互学习,共同进步。谢谢!

上一篇:MySQL如何配置主从复制,主从复制异常如何定位修复?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章