Percona XtraBackup是一款开放源码,免费的MySQL热备份软件,以非阻塞方式执行备份InnoDB和XtraDB为存储引擎的数据库,是商业备份工具InnoDB Hotbackup的一个很好的替代品。做者的前一家公司就花了不菲美圆买了Hotbackup产品。 mysql
Percona XtraBackup官方地址:http://www.percona.com/software/percona-xtrabackup
能够实现如下优势:sql
快速,可靠地完成备份
在备份过程当中不影响事务处理
节省磁盘空间和网络带宽
自动验证备份的数据库
快速恢复数据库,保证更高的正常运行时间
shell
XtraBackup Percona服务器时,MySQL,MariaDB的,和小雨的全部版本MySQL的热备份。进行流式处理,压缩,增量MySQL备份。数据库
下载最新版本,http://www.percona.com/downloads/XtraBackup/bash
安装 perl mysql服务器
perl -MCPAN -e "install DBI" perl -MCPAN -e "install DBD::mysql"
文件解压后,目录里安装上两个有用的工具:xtrabackup,innobackupex-1.5.1:
xtrabackup能够在不加锁的状况下备份innodb数据表,不过此工具不能操做myisam。
innobackupex-1.5.1是一个脚本封装,能同时处理innodb和myisam,但在处理myisam时须要加一个读锁。网络
因此通常有myisam引擎的数据库都使用后者来进行备份
下面是个人备份脚本app
#!/bin/bash date=`date -I` mysqlUser=root mysqlPWD='111' innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=$mysqlUser --password=$mysqlPWD 2>>/backup/mysql/backup.log --stream=tar ./ | gzip -> /backup/mysql/mysql-$date.tar.gz
恢复数据
1) 先中止数据库:service mysqld stop
工具
2) 解压rest
tar -izxvf zztx.tar.gz -C /data/back_data/db/
(没有db ,须要mkdir /data/back_data/db/) 3) 恢复
innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /data/back_data/db/
(--apply-log选项的命令是准备在一个备份上启动mysql服务)
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /data/back_data/db/
(--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文 件里规定的初始位置。) 4) 赋权 chown -R mysql.mysql /var/lib/mysql/* 5) 重启数据库 service mysqld restart 6) 删除垃圾 cd /var/lib/mysql/ && rm xtrabackup*