小谈 MySQL 第四话·备份与恢复之 Xtrabackup

Xtrabackup是Percona公司开发的一款用于MySQL数据库物理热备的开源备份工具,支持增量备份,适用于数据量大的场景。本文介绍Xtrabackup的工作原理、备份流程、优势以及如何进行增量备份和恢复。
摘要由CSDN通过智能技术生成

一、Xtrabackup 简介

MySQL 冷备、mysqldump、MySQL 热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于 50G 或 100G,存储空间足够多的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据库备份策略。例如每周日用全量备份,周一到周六用增量备份。而 Xtrabackup 就是为了实现增量备份而出现的一款主流备份工具,Xtrabackup 有两个工具,分别是 xtrabackup 和 innobackupex。

Xtrabackup 是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQL、Percona server 和 MariaDB,开源免费,是目前较为受欢迎的主流备份工具。

二、Xtrabackup 优点

1、备份速度快,物理备份可靠;

2、备份过程不会打断正在执行的事务(无需锁表);

3、能够基于压缩等功能节约磁盘空间和流量;

4、自动备份校验;

5、还原速度快;

6、可以流传将备份传输到另外一台机器上;

7、在不增加服务器负载的情况下备份数据。

三、Xtrabackup 备份原理

1、innobackupex 启动后,会先 fork 一个进程,用于启动 xtrabackup,然后等待 xtrabackup 备份 ibd 数据文件;

2、xtrabackup 在备份 innodb 数据时,有 2 中线程:redo 拷贝线程和 ibd 数据拷贝线程。xtrabackup 进程开始执行后,会启动一个 redo 拷贝的线程,用于从最新的 checkpoint 点开始顺序拷贝 redo.log;再启动 ibd 数据拷贝线程,进行拷贝 ibd 数据。这里先启动 redo 拷贝线程,再次阶段,innobackupex 线程处于等待状态(等待文件被创建);

3、xtrabackup 拷贝完成 ibd 数据文件后,会通知 innobackupex(通过创建文件),同时 xtrabackup 进入等待状态(redo 线程依旧在拷贝 redo.log);

4、innobackupex 收到 xtrabackup 通知后,执行 flush tables with read lock(FTWRL),取得一致性位点,然后开始备份非 innodb 文件(如 .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, and .opt 等格式的文件),在拷贝非 innodb 文件的过程中,数据库处于全局只读状态;

5、当 innobackupex 拷贝完所有非 innodb 文件后,会通知 xtrabackup,通知完成后进入等待状态;

6、xtrabackup 收到 innobackupex 备份完成的通知后,会停止 redo 拷贝线程,然后通知 innobackupex,redo.log 文件拷贝完成;

7、innobackupex 收到 redo.log 备份完成后,就进行解锁操作,执行 unlock tables;

8、最后 innobackupex 和 xtrabackup 进程各自释放资源,写备份元数据信息等,innobackupex 等 xtrabackup 子进程结束后退出。

四、Xtrabackup 备份流程图

注意:

  1. 备份时需要启动 MySQL,恢复时需要关闭 MySQL,清空 MySQL 数据目录且不能重新初始化,恢复数据后应该立即进行一次全量备份。
  2. 一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或者已经提交但尚未同步至数据文件中的事务,因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据库文件,也使得数据文件处于一致性状态(--apply-log 选项可用于实现上述功能)。
  3. 当数据恢复至 DATADIR 目录以后,还需要确保所有的数据文件的属主属组均为 mysql。

五、总结

1、增量备份需要使用参数 --incremental 指定需要备份到那个目录,恢复时使用 --incremental-dir 指定全备目录;

2、数据备份完成后,需要使用参数 --apply-log、--redo-only 先合并全备数据目录数据,确保全备数据目录数据的一致性;

3、再将增量备份数据使用 --incremental-dir 合并到全备数据当中;

4、最后通过合并后的全备数据进行恢复。

5、注意,如果多个增量备份,需要逐一合并到全备数据当中,再进行恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值