Mysql使用percona-xtrabackup进行数据备份还原
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql使用percona-xtrabackup进行数据备份还原,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2808字,纯文字阅读大概需要5分钟。
内容图文
场景:当mysql数据库数据量很大(1T-10T),在不影响正常使用的情况下,进行数据热备迁移还原。本文档主要介绍:Xtrabackup 全量备份与全量恢复
一、XtraBackup是什么
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表;
2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
二、XtraBackup有什么作用
1、在线(热)备份整个库的InnoDB、 XtraDB表
2、在xtrabackup的上一次整库备份基础上做增量备份(innodb only)以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)
3、MySQL数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point-in-time(时间点)的恢复而不是增量备份。
4、Xtrabackup工具支持对InnoDB存储引擎的增量备份。
三、Xtrabackup备份原理
XtraBackup基于InnoDB的crash-recovery功能。它会复制innodb 的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致
InnoDB维护了一个redo log,又称为 transaction log,事务日志,它包含了innodb数据的所有改动情况。当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作:
1.It applies committed transaction log entries to the data files
2.it performs an undo operation on any transactions that modified data but did not commit.
XtraBackup在备份的时候, 一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走。
在prepare过程中,XtraBackup使用复制到的transactions log 对备份出来的innodb data file 进行crash recovery。
四、XtraBackup使用方法
1、下载并安装percona-xtrabackup工具
wget https://www.percona.com/download ... .7-1.el6.x86_64.rpm
yum localinstall -y percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm
2、将mysql数据库整个备份到/tmp目录下,并查看master位置
innobackupex --defaults-file="/etc/my.cnf" --user=root -p --socket=/usr/local/mysql/mysql.sock /tmp
查看master位置(后续进行同步需要,请记录)
cat /tmp/2020-11-24_07-34-50/xtrabackup_binlog_info
master-bin.000002 211 4c6237f8-a7da-11e6-1010-000c29f333f8:1-2
3、把备份到的文件进行迁移到从库上
#scp -r /tmp/2020-11-24_07-34-50/ 192.168.1.12:/tmp
4、在从库上把备份文件进行预处理,进行事务检查
innobackupex --defaults-file="/etc/my.cnf" --user=root -p --socket=/usr/local/mysql/mysql.sock --apply-log --use-memory=3G /tmp/2020-11-24_07-34-50/
5、清理从库数据(建议关闭服务后清理),恢复数据
#/etc/init.d/mysqld stop
#rm -rf /data/mysql/data/
#rm –rf /data/binlogs/
#rm –rf /data/relaylogs/*
恢复数据
innobackupex --defaults-file="/etc/my.cnf" --user=root --socket=/usr/local/mysql/mysql.sock --move-back /tmp/2020-11-24_07-34-50/
6、授权、启动从库
#chown mysql:mysql /data/mysql –R
#/etc/init.d/mysqld start
7、创建同步账号
mysql> grant replication slave,reload,super on . to repl@192.168.1.13 identified by ‘repl@1233‘;
mysql> FLUSH PRIVILEGES;
8、从库执行同步(master 位置请查看步骤2)
mysql>change master to master_host=‘192.168.1.12‘,master_user=‘repl‘,master_password=‘ repl@1233‘,master_log_file=‘master-bin.000002‘,master_log_pos=211;
mysql>start slave;
mysql> show slave status\G
Slave_IO_Running: Yes # 表示配置成功
Slave_SQL_Running: Yes # 表示配置成功
致此,全备还原已完成,xtraBackup备份会把文件进行压缩,还原后文件会消失
原文:https://blog.51cto.com/14483703/2557696
内容总结
以上是互联网集市为您收集整理的Mysql使用percona-xtrabackup进行数据备份还原全部内容,希望文章能够帮你解决Mysql使用percona-xtrabackup进行数据备份还原所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。