MySQL物理热备工具xtrabackup

96
张伟科
2018.10.08 18:22 字数 686

简介:

mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了。Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快

安装:

#yum -y install percona-xtrabackup

#rpm -qa |grep  xtrabackup

#rpm -ql percona-xtrabackup-2.3.10-1.el6.x86_64

完全备份:

1、完全备份

#innobackupex --user=root --password=91160 /app/backup/mysql/

2、准备(prepare)一个完全备份

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

innobakupex命令的--apply-log选项可用于实现上述功能。如下面的命令:

#innobackupex --user=root --password=91160 --apply-log /app/backup/mysql/2018-10-08_17-51-12/

完全恢复:

#/etc/init.d/mysql stop

#mv /app/mysql/data /app/mysql/data_201810081753

#mkdir /app/mysql/data

#chown -R mysql.mysql /app/mysql/data

#innobackupex --defaults-file=/app/mysql/my.cnf --copy-back /app/backup/mysql/2018-10-08_17-51-12/

#chown -R mysql.mysql /app/mysql/data

#/etc/init.d/mysql start

单表恢复:

1. 开启了参数innodb_file_per_table

2. 安装工具:mysql-utilities,其中mysqlfrm可以读取表结构

#yum install mysql-utilities -y

3、删除t2表

mysql> drop table test.t2;

4、利用mysql-utilities工具读取表结构(不支持MariaDB哦)

#mysqlfrm --diagnostic /app/backup/mysql/2018-10-08_17-51-12/test/t2.frm

5、加一个写锁,确保安全

mysql> lock tables test.t2 write;

6、丢弃表空间

mysql> alter table test.t2 discard tablespace;

7、从备份中拷贝ibd文件,并且修改权限

#cp /app/backup/mysql/2018-10-08_17-51-12//test/t2.ibd /app/mysql/data/test/

#chown -R mysql.mysql /app/mysql/data/test/t2.ibd

8、查询数据是否一致:

mysql> alter table test.t2 import tablespace;

mysql> select count(*) from test.t2;

9、最后解锁:

mysql> unlock tables;

mysql