xtraBackup mysql增量和全量备份及恢复初步实践

简介:

Xtrabackup是由percona开源的免费数据库热备份软件。

支持增量 和全量备份,恢复。

Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup

1)xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;

2)innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。

3)xbcrypt 加密解密备份工具

4)xbstream 流传打包传输工具,类似tar

推荐使用:

1、Xtrabackup (虽然网上的帖子大部分是基于innobackupex 这个工具,但官网已经不推荐使用了)

2、其次,Xtrabackup 是支持 innoDB + MyISAM + XtraDB 表类型备份的。

(网上的帖子可能是老版本,详情看下图。官网说明)

 

官方说明:

说明:

  • 版本:Percona XtraBackup 2.4, 如何安装,这个还是百度吧。此处省略800字。
  • mysql安装目录:/var/lib/mysql
  • 备份存放目录:/mysqlbak
  • mysql用户: 用户名:bakuser 密码:123456

 

实战:

1、全备

xtrabackup --backup --user=bakuser --password=123456 --target-dir=/mysqlbak/2019-03-30-001/ 

执行结果: xtrabackup: Transaction log of lsn (28619220) to (28619220) was copied. 190330 14:24:04 completed OK!

/mysqlbak/2019-03-30-001 这个目录应该生成了对应的文件。

 

2、修改数据。增备01

xtrabackup --backup --user=bakuser --password=123456 --target-dir=/mysqlbak/inc001 --incremental-basedir=/mysqlbak/2019-03-30-001

注意:基于全备 才能做增备。

  • --target-dir:增量备份文件存放的位置
  • --incremental-basedir:全备的位置,基于这个备份做的增量备份

执行结果:

xtrabackup: Transaction log of lsn (28630841) to (28630841) was copied. 190330 14:30:08 completed OK!

/mysqlbak/inc001 生成,且里面生成了对应的备份文件

3、修改数据。增备02

xtrabackup --backup --user=bakuser --password=123456 --target-dir=/mysqlbak/inc002 --incremental-basedir=/mysqlbak/inc001

注意:基于上一次增备

  • --target-dir:增量备份文件存放的位置
  • --incremental-basedir:上一次增备位置

执行结果:

xtrabackup: Transaction log of lsn (28635245) to (28635245) was copied. 190330 14:37:44 completed OK!

/mysqlbak/inc002 生成,且里面生成了对应的备份文件,图片就不贴,和inc01 增备第一次 一致。

lsn :日志的位置。基于这个值做恢复等。

 

4、恢复到 增备01

步骤如下:

1、关闭 mysql:

service mysqld stop

2、删除掉 /var/lib/mysql 全部文件

rm -rf ./* (实际操作的时候可以备份这个文件内容。尤其是日志文件)

3、准备恢复,处理掉没有提交的日志等信息。

xtrabackup --user=bakuser --password=123456 --prepare --apply-log-only --target-dir=/mysqlbak/2019-03-30-001

4、把增备01 合并到全备。

xtrabackup --prepare --apply-log-only --target-dir=/mysqlbak/2019-03-30-001 --incremental-dir=/mysqlbak/inc001

5、全备文件复制到 按照目录 /var/lib/mysql

xtrabackup --copy-back --target-dir=/mysqlbak/2019-03-30-001/ 

这一步可能会报错: Original data directory /var/lib/mysql is not empty! 解决方案: cp -rf ./* /var/lib/mysql/ 手动复制吧。

6、权限处理

chown -R mysql.mysql /var/lib/mysql

7、启动数据库。

service mysqld start

 

转载于:https://my.oschina.net/jspp/blog/3030154

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值