码迷,mamicode.com
首页 > 其他好文 > 详细

xtrabackup

时间:2018-03-17 20:31:09      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:/etc/   这一   分享图片   信息   inf   最新   nod   数据文件   root   

概念

xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底层的"数据块",完成所谓的"物理备份"。

支持对innodb进行热备、增量备份、差量备份。

支持对myisam进行温备,因为在备份myisam表时,会对myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量,即使名义上是增量,但是实际上仍然是全量。

 

扩展理解:

数据存放于row中,row存在于page中,page存于extent中,所以我们备份extent中的page(page是innodb引擎的最小物理存储分配单位),即可备份出对应的数据。

innodb逻辑存储结构图

技术分享图片

xtrabackup怎样实现增量备份

每个Page都有自己的LSN号码,LSN是一个全局递增的号码,每次对page中的记录进行修改时,都会产生新的LSN号码。

假设,我们第一次备份的数据如下,所有数据由如下6个page组成,下图中的黄色方块代表page,黄色方块右上角的号码代表当前page的LSN,从下图可以看出,目前最大的LSN号码为5。
技术分享图片

 


假设,备份完成后,我们修改了数据,而这次修改的数据存在于上图中的page C与page E中,所以,上图中的pageC与pageE的LSN就变成了6
技术分享图片

 


如果此时要做增量备份,我们只需要备份出自上次备份以后变化的数据即可,找到LSN大于5的Page,即上图中的pageC与pageE,即可得出变化的增量数据,得出上图中的增量page后,再将增量page覆盖到上次的备份中,即可得到最新的数据。

 

安装

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

yum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

示例

全量备份,将备份的文件存放在/backup目录下

innobackupex --defaults-file=/etc/my.cnf --host=192.168.1.146 --user=root --password=123123 /backup

 

备份完成后会显示 ok字样

技术分享图片

技术分享图片

backup-my.cnf
包含了my.cnf中备份时需要的信息。

xtrabackup_binlog_info
备份开始时二进制日志文件的"位置(position)

xtrabackup_checkpoints
备份属于那种类型的备份,是全量还是增量,备份时起始的LSN号码,结束的LSN号码等信息。

技术分享图片

 

xtrabackup_info
本次备份的概要信息

xtrabackup_logfile
记录了备份过程中的日志,在对数据进行prepare时需要通过日志将数据还原成一致的可用的数据。

 

数据还原

1、先将备份拷贝至进行还原操作的主机上
scp -r /backup/2017-04-06_21-53-13/ 192.168.1.120:/testdir/

2、事务日志应用到备份

备份出的数据并不能直接使用,因为备份出的数据是不一致的,我们还需要将同时备份出的事务日志应用到备份中,才能得到一份完整、一致、可用的数据,xtrabackup称这一步操作为prepare,也就是还原数据前的"准备"工作。

[root@master] ~$ innobackupex --apply-log 2018-03-17_07-38-21/

技术分享图片

在事务日志容量很大的情况下,可以使用--use-memory选项加速,在不指定内存大小的情况下,默认会占用100MB的内存。

3、恢复数据

先停止数据库服务,且对应的数据目录为空。

innobackupex --datadir=/var/lib/mysql --copy-back /testdir/2017-04-06_21-53-13/

技术分享图片

 

--datadir:指定的目录就是还原后数据要存放的目录,如果my.cnf设置了datadir,可以省略--datadir,执行copyback时会读取my.cnf中的配置,datadir目录必须为空目录。

--copy-back:对应的目录就是我们准备好的可用数据的目录。

4、设置属主属组为mysql并启动

此时我们还不能启动mysql,因为我们是使用root用户拷贝的数据,所以数据目录中的数据文件的属主属组仍然为root,没错,我们需要将这些文件的属主属组设置为mysql。

chown -R mysql: /var/lib/mysql/

systemctl start  mariadb

xtrabackup

标签:/etc/   这一   分享图片   信息   inf   最新   nod   数据文件   root   

原文地址:https://www.cnblogs.com/fanren224/p/8592446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!