XtraBackup 不停机不锁表搭建 MySQL 主从同步实践
原文:
https://wsgzao.github.io/post/xtrabackup/
前言
Percona XtraBackup 可以说是一个相对完美的免费开源数据备份工具,支持在线无锁表同步复制和可并行高效率的安全备份恢复机制相比 mysqldump
来说确实让人眼前一亮,与 MySQL Enterprise Backup(InnoDB Hot Backup)
的功能对比可以参考扩展阅读。当然我们在实际运维过程中都应针对不同的业务需求分析和选择合适的备份恢复方案,这篇文章就是针对 MySQL 多实例且一个实例对应多个 database 的情况,实现 MySQL 在线不停机不锁表的主从同步,日后再继续更新分享基于 XtraBackup
的其它实用技能。
XtraBackup 是目前首选的备份方案之一
更新历史
2015 年 08 月 07 日 - 初稿
阅读原文 - https://wsgzao.github.io/post/xtrabackup/
扩展阅读
Percona XtraBackup - https://www.percona.com/software/mysql-database/percona-xtrabackup
MySQL 5.6 Reference Manual :: 17 Replication - http://dev.mysql.com/doc/refman/5.6/en/replication.html
基于 Xtrabackup 的物理备份解决方案预研 - http://tencentdba.com/blog/pre-research-on-physical-backup-using-xtrabakcup/
xtrabackup 详解 - http://www.cnblogs.com/gomysql/p/3650645.html
LTMP 索引 - https://wsgzao.github.io/index/#LTMP
原理
MySQL 主从同步原理
MySQL 主从同步是在 MySQL 主从复制 (Master-Slave Replication) 基础上实现的,通过设置在 Master MySQL 上的 binlog(使其处于打开状态),Slave MySQL 上通过一个 I/O 线程从 Master MySQL 上读取 binlog,然后传输到 Slave MySQL 的中继日志中,然后 Slave MySQL 的 SQL 线程从中继日志中读取中继日志,然后应用到 Slave MySQL 的数据库中。这样实现了主从数据同步功能。
XtraBackup 备份原理
innobackupex 在后台线程不断追踪 InnoDB 的日志文件,然后复制 InnoDB 的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后,就可以使用 InnoDB 崩溃恢复代码执行事务日志(redo log),以达到数据的一致性。
备份分为两个过程:
- backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。
- preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态。
XtraBackup 的优点
- 可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)
- 数据备份过程中不会中断事务的处理(热备份)
- 节约磁盘空间和网络带宽
- 自动完成备份鉴定
- 因更快的恢复时间而提高在线时间
配置
准备工作
MySQL 步骤和 my.cnf 配置参考 LTMP - https://wsgzao.github.io/post/ltmp/
1
|
|
安装 percona-xtrabackup
一般推荐 rpm 安装 - https://www.percona.com/downloads/XtraBackup/LATEST/
1
|
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
|
备份和恢复
通常一般都直接使用 innobackupex,因为它能同时备份 InnoDB 和 MyISAM 引擎的表
重点关注 Slave_IO_Running 和 Slave_SQL_Runningd 的状态是否为 YES
1
|
|
MySQL 主从切换
切换前断开主库访问连接观察进程状态,无写操作后再停止从库 IO_THREAD 进行切换
1
|
|
常见问题
Slave_SQL_Running:No
1
|
# 一般是事务回滚造成的
|
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步