本文主要给大家简单讲讲如何通过xtrabackup实现对mysql备份及数据一致性校验,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望如何通过xtrabackup实现对mysql备份及数据一致性校验这篇文章可以给大家带来一些实际帮助。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都做网站、和平网络推广、小程序设计、和平网络营销、和平企业策划、和平品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供和平建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.comXtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对MyISAM的备份同样需要加表锁)。
与mysqldump备份方式相对比,mysqldump是逻辑备份,备份和恢复速度慢,但备份文件占用空间小。而Xtrabackup是物理备份,直接拷贝相关文件,备份还原快,备份文件占用空间大。
Xtrabackup安装完成后,有两个比较重要的备份工具是innobackupex和xtrabackup。其中,innobackupex是perl脚本对xtrabackup的封装和功能扩展。
Xtrabackup的安装
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
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 --slave-info --safe-slave-backup --parallel=4 --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
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
详细使用说明见https://max.book118.com/html/2017/0522/108428582.shtm
innobackupex备份+binlog日志的完全恢复 参见https://blog.csdn.net/zhang123456456/article/details/72954519
mysql主从复制数据一致性校验和修复方法及自动化实现参见https://blog.csdn.net/hangxing_2015/article/details/52585855
xtrabackup备份还原详见https://www.cnblogs.com/zhoujinyi/p/5893333.html
mysql单表备份及恢复详见https://blog.csdn.net/u012104666/article/details/80407953
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
二进制日志格式 备份 从库
如何通过xtrabackup实现对mysql备份及数据一致性校验就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。