设为首页 收藏本站
查看: 371|回复: 0

[经验分享] xtrabackup备份恢复Mysql

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-2-15 10:14:59 | 显示全部楼层 |阅读模式
Mysql增量备份
Xtrabackup中包含两个工具:
        xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表)。
        innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。
MySQL主从同步原理
MySQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了主从数据同步功能。
XtraBackup备份原理
innobackupex在后台线程不断追踪InnoDB的日志文件,然后复制InnoDB的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后,就可以使用InnoDB崩溃恢复代码执行事务日志(redo log),以达到数据的一致性。
备份分为两个过程:
  • backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。
  • preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态。

XtraBackup的优点
  • 可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)
  • 数据备份过程中不会中断事务的处理(热备份)
  • 节约磁盘空间和网络带宽
  • 自动完成备份鉴定
  • 因更快的恢复时间而提高在线时间

一、安装percona-xtrabackup
1.官网下载
2.yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQ
3.rpm -ivh 安装包.rpm

二、innobackupex备份全库

1.备份
1
2
innobackupex --defaults-file=/usr/local/mysql_2/my.cnf
--user=root --password=password  --socket=/tmp/mysql_2.sock /usr/local/backup



当然也可以只备份指定的库和表
2.恢复
1
2
innobackupex --defaults-file=/usr/local/mysql_2/my.cnf --socket=/tmp/mysql_2.sock --user=root --password=password --apply-log /usr/local/backup/2016-01-26_18-32-02
innobackupex --defaults-file=/usr/local/mysql_2/my.cnf --socket=/tmp/mysql_2.sock --user=root --password=password --copy-back  /usr/local/backup/2016-01-26_18-32-02



三、全量备份及恢复
  • 备份

1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/base/2016-2-10



2.恢复
1
2
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password
--socket=/tmp/mysql_2.sock --prepare --target-dir=/usr/local/backup/base/2016-2-10/



1
2
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password
--socket=/tmp/mysql_2.sock --prepare --target-dir=/usr/local/backup/base/2016-2-10/



执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件(重做日志文件),加快MySQL数据库启动的速度
3.
//将数据库停掉

#/etc/init.d/mysqld stop

//删除数据库目录下的ib*(ib开头的所有)文件。

#rm  /data/mysql_2/ib*

//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。

#cd /data/mysql_2/
#cp /usr/local/Backup/base/2016-2-10/ib* ./
#chown -R mysql:mysql /data/mysql_2/
4.重启mysql,进入mysql检查是否恢复
四、增量备份及恢复

1.先全量备份:
1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/base/2016-2-10



2.在全量的基础上增量备份:
1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/incre/1 --incremental-basedir=/usr/local/backup/base/2016-2-10/



3.恢复
1
mysql>drop database db3;



1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/



1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/ --incremental-dir=/usr/local/backup/incre/1/



1
xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/



增量备份也可以在前一个增量备份的基础继续增量备份,只不过这种方法会比较不安全,丢失前面的增量备份将导致后面的增量备份全都失效。
4.

//将数据库停掉
#/etc/init.d/mysqld stop
//删除数据库目录下的ib*(ib开头的所有)文件。
#rm  /data/mysql_2/ib*
//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。
#cd /data/mysql_2/
#cp /usr/local/Backup/base/2016-2-10/ib* ./
#cp -r /usr/local/Backup/base/2016-2-10/db3 ./
#chown -R mysql:mysql /data/mysql_2/
4.重启mysql,进入mysql检查db3是否恢复


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-178069-1-1.html 上篇帖子: mysql的导入和导出数据 下篇帖子: MySQL数据备份语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表