mysql 备份校验_使用xtrabackup对mysql备份及数据一致性校验

Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对MyISAM的备份同样需要加表锁)。

与mysqldump备份方式相对比,mysqldump是逻辑备份,备份和恢复速度慢,但备份文件占用空间小。而Xtrabackup是物理备份,直接拷贝相关文件,备份还原快,备份文件占用空间大。

Xtrabackup安装完成后,有两个比较重要的备份工具是innobackupex和xtrabackup。其中,innobackupex是perl脚本对xtrabackup的封装和功能扩展。

Xtrabackup的安装

tar zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz

Xtrabackup备份预备工作

xtrabackup需要连接到数据库和datadir的操作权限,在使用过程中主要涉及到两类用户权限: 1,系统用户(用来执行xtrabackup或者innobackupex);2,数据库用户(数据库内使用的用户)。

创建一个备份用户

mysql>CREATE USER 'bkuser'@'ip' identified by 'password';

mysql>grant reload,lock tables,replication client on *.* 'bkuser'@'ip' identified by 'password';

mysql>flush privileges;

开始全备

innobackupex --defaults-file=/etc/my.cnf --user=DBUSER --password=DBUSERPASS --parallel=4 --tmpdir=/backup/tmp --slave-info --safe-slave-backup  --no-timestamp --backup --rsync /path/to/BACKUP-DIR

--slave-info这个参数适用的场景:假设现在有主库A和从库B,目前想再添加一台备库C,并让备库C以主库A为master;因为主库A是生产库,压力一般比较大,所以我们就在备库B上备份一个数据库,然后把这个备份拿到C服务器上

并导入到C库,接下来再在C服务器上执行change master的命令:其中 master_host是A的ip,而master_log_file和master_log_pos就是这个xtrabackup_slave_info里面的值。

--rsync 这个参数一般用作分布式数据库集群的时候

创建完备份后,此时的备份数据还不能用于还原。需要回滚未提交的事物,重做已提交的事物,让数据库文件保持一致性。

innobackupex --apply-log  --use-memory 4G /path/to/BACKUP-DIR

--use-memory:指定预备阶段可使用的内存,内存多则速度快,默认10MB。

恢复数据

#恢复数据之前需要保证数据目录是空的状态,还原时需要先关闭服务

[root@centos ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /path/to/BACKUP-DIR

#还原过去后默认是root权限,因此要修改属组和属主

chown –R mysql.mysql /data/dbdata

/etc/rc.d/init.d/mysqld start

还原完成后,可能需要使用mysql_upgrade升级下performance_schema库表。

Xtrabackup增量备份与恢复

#需要注意的是,在增量备份前需要一个全备,不然增量备份是没有意义的。而且增量备份仅能应用于InooDB或XtraDB表,对于MyISAM表,增量与全备相同

[root@Vcentos

~]# innobackupex --defaults-file=/etc/my.cnf --user=root

--password= PWD --incremental /backup/

--incremental-basedir=/path/to/BACKUP-DIR

#--incremental /backup/   指定增量备份文件备份的目录

#--incremental-basedir    指定上一次全备或增量备份的目录

查看binlog的位置 与 datadir 的位置, 防止 mv datadir时误操作 binlog ,影响恢复 (binlog与datadir一定要分开放置)

show variables like '%log_bin%';

show variables like '%datadir%';

预备增量备份

预备增量备份需要两个步骤需要先预备全备,但是只重做已提交事物,不回滚未提交事物。然后应用到全备,也是只重做已提交事物,不回滚未提交事物。

回滚未提交事物

在全备上,使用--redo-only只重做已提交事物,不回滚未提交事物。

[root@Vcentos

~]# innobackupex  --apply-log --redo-only /path/to/BACKUP-DIR

应用增量备份

[root@Vcentos

~]# innobackupex --apply-log  /path/to/BACKUP-DIR --incremental-dir=/path/to/BACKUP-DIR

应用增量备份时,只能按照备份的顺序来应用,如果顺序错误,则备份不可用。可以使用xtrabackup-checkpoints来确定顺序。

如果该备份不是最后一个增量备份,需要加--redo-only,

还原增量备份

[root@centos ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /path/to/BACKUP-DIR

innobackupex备份+binlog日志的完全恢复 参见https://blog.csdn.net/zhang123456456/article/details/72954519

innobackupex --defaults-file=/etc/my.cnf --databases="" --user --password --parallel=4  /mysql_backup/backup

tar -cvf - xxx | pigz -p 8 > xxx.tar.gz

tar --use-compress-program=pigz -xvpf xxx.tar.gz

innobackupex  --defaults-file=/etc/my.cnf  --use-memory=1G --apply-log xxx

innobackupex --defaults-file=/etc/my.cnf --user= --password=  --copy-back /mysql_fullbackup/xxx

二进制日志格式  备份 从库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值