千家信息网

xtarback备份工具的使用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,一:什么是xtrabackupXtraBackup 是一个用来备份 MySQL 的工具。对mysql的MYISAM引擎只支持完全备份,对innodb不仅支持完全备份,也支持增量备份,是一个全自动的工具
千家信息网最后更新 2025年11月07日xtarback备份工具的使用

一:什么是xtrabackup

XtraBackup 是一个用来备份 MySQL 的工具。对mysql的MYISAM引擎只支持完全备份,对innodb不仅支持完全备份,也支持增量备份,是一个全自动的工具。

二:安装xtrabackup

在percona公司官网上下载xtrabackup备份工具,

percona-xtrabackup-2.0.0-417 //支持mysql-5.5

rpm包进行安装

安装时有依赖性,

解决三个依赖性

1,libaio.1

2.perl-DBD-Mysql

3.linev.so.4 //需要从网上下载 yum源没有

三:xtrabackup 的使用

innobackupex是xtrabackup的一个perl脚本。

实战一:

完全备份数据库

innobackupex --user=root --password=*** /backup/ //备份的路径

一般情况下,在备份完成后,要做回滚,防止有的事务没有提交,解决不同步问题。

innobackupex --apply-log /backup/2015....

连接数据库刷新日志文件

flush logs;

备份二进制文件

cp /mysql-bin-00003 /backup/

mysqlbinlog mysql-bin-00004 > abc.sql

模拟数据库损坏

rm -fr /mydata/data //mysql的数据文件

此时关闭 和 开启服务异常

killall mysqld

还原数据库

还原时不要求数据库服务正常状态,但备份是要求,

innobackup --copy-back /backup/2015....

chown mysql.mysql /mydata/data -R

/etc/init.d/mysqld start

数据库正常

利用二进制文件,恢复数据(完全备份后对数据库还进行操作)

set sql_log_bin=0 //不记录二进制日志

source /backup/abc.sql

set sql_log_bin=1 //恢复正常


实战二:

xtarbackup 做增量备份

innobackup --incremental /backup --incremental-basedir=/backup/2016... 完全备份的文件

innobackupex --incremental /backup/ --incremental-basedir=/backup/2016-05-15_15-30-23/

第一次增量指向完全备份的文件

第二次增量备份的时后要指定第一次增量备份的文件

在损坏可以 完全+增量+二进制

恢复:

准备 只指定redo操作

有增量备份的时候只指定redo操作 因为完全没有提交操作而增量提交了事务

innobackupex --apply-log --redo-only /backup/2016-05-15_15-30-23/

innobackupex --apply-log --redo-only /backup/2016-05-15_15-30-23/ --incremental-dir=/backup/2016-05-15_15-35-25/

所有的提交动作到备份到完全备份文件上

还原时只用还原完全备份的文件 --copy-back

还原时 指定第一次完全的文件。在其后追加,和备份时不同

420 innobackupex --apply-log -redo-only /backup/2016-05-15_16-05-22/ --incremental-dir=/backup/2016-05-15_16-13-46/

421 ls

422 rm -fr *

423 innobackupex --copy-back /backup/2016-05-15_16-05-22/

424 ls

425 chown mysql.mysql

426 chown mysql.mysql . -R

427 mysqlls

428 ls

429 rm -fr *

430 innobackupex --copy-back /backup/2016-05-15_16-05-22/

431 ls

432 chown mysql.mysql . -R

433 killall mysqld

434 /etc/init.d/mysqld start

435 mysql





0