Backup一直是数据库最重要的环节,mysql也比例外。而mysql最好的备份工具就是Percona xtrabackup和Mysql Enterprise backup(官方收费版)。


Xtrabackup中主要包含两个工具:


xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表(Myisam表),也不能备份数据表结构。

innobackupex:是将xtrabackup进行封装的perl脚本,可以备份和恢复MyISAM表以及数据表结构。

但是针对myisam的备份是需要加读锁的,多少会对线上业务影响。但是当前绝大部分Mysql用户,都是用innodb,所以,myisam只是系统表使用,锁的影响,也就可以忽略了。

一段官方文档的说明:

http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html


It is possible to use the xtrabackup binary alone, however, the recommend way is using it through the innobackupex wrapper script and let it execute xtrabackup for you. It might be helpful to first learn how to use innobackupex, and then learn how to use xtrabackup for having a better low-level understanding or control of the tool if needed.


这里,我们就用Percona Xtrabackup来备份Mysql。


1. 下载软件,进入下载链接

https://www.percona.com/downloads/

2. 选择xtrabackup

12.png


3. 选择OS版本,下载

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.11/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.11-1.el6.x86_64.rpm

23.png

4. 安装中可能会遇到缺少下面包的问题:

--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.10-1.el6.x86_64
--> Finished Dependency Resolution
Error: Package: percona-xtrabackup-24-2.4.10-1.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)

到下面网址,下载对应系统的rpm包,并安装

http://rpm.pbone.net/index.php3/stat/3/srodzaj/1/search/libev.so.4

下载

wget 
ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/rudi_m:/devel-snap/CentOS_CentOS-6/x86_64/libev4-4.15-7.1.x86_64.rpm

安装

rpm -ivh 
libev4-4.15-7.1.x86_64.rpm

5. 下载rpm包到本地,然后安装,发现和现有的mysql冲突conflicts with file from package mysql-community-server


# yum -y localinstall percona-xtrabackup-24-2.4.11-1.el6.x86_64.rpm
......
Transaction Check Error:
file /etc/my.cnf from install of Percona-Server-shared-51-5.1.73-rel14.12.625.rhel6.x86_64 conflicts with file from package mysql-community-server-5.6.39-2.el6.x86_64

6. 先安装一个

# yum install MySQL-shared-compat*

7. 然后再次安装,就解决冲突问题了

# yum localinstall percona-xtrabackup-24-2.4.10-1.el6.x86_64.rpm
......
Installed:
percona-xtrabackup-24.x86_64 0:2.4.10-1.el6
Dependency Installed:
perl-DBD-MySQL.x86_64 0:4.013-3.el6                            rsync.x86_64 0:3.0.6-12.el6
Complete!

8. 备份与恢复测试

innobackupex --defaults-file=/etc/my.cnf --user=root --password='password' /backup/20180423/

手动删除文件

/mysql/help_topic.frm
rm: remove regular file `events_stages_current.frm'? y
rm: remove regular file `events_stages_history.frm'? y
rm: remove regular file `events_stages_history_long.frm'? y
rm: remove regular file `events_stages_summary_by_account_by_event_name.frm'?

9. 整合备份文件

innobackupex --defaults-file=/etc/my.cnf  --apply-log /backup/20180423/2018-04-18_00-58-36/

10. 备份还原

innobackupex --defaults-file=/etc/my.cnf  --copy-back /backup/20180423/2018-04-18_00-58-36/


可以看到,xtrabackup已经正常工作了。


mysql备份恢复测试,请参考:

http://blog.51cto.com/hsbxxl/2107383