美文网首页MySQLMySQL
主库已有数据时,如何进行主备复制?

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

作者: ChinaXieShuai | 来源:发表于2019-08-29 11:01 被阅读0次

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

    在大多数业务场景下,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如何配置主从复制,主从复制异常如何定位修复?

    相关文章

      网友评论

        本文标题:主库已有数据时,如何进行主备复制?

        本文链接:https://www.haomeiwen.com/subject/njpvectx.html