MySQL备份工具-XtraBackup安装配置最佳实践-亲试ok
[root@test206 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep MySQL-shared-compat
MySQL-shared-compat-5.6.22-1.linux_glibc2.5 (i386)
[root@test206 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep perl-DBD-MySQL
perl-DBD-MySQL-4.013-3.el6 (x86_64)
备份工具:Percona XtraBackup
Xtrabackup是由percona提供的mysql数据库备份工具,
特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
为什么不使用mysqldump:
Mysqldump是mysql自带的,支持逻辑备份,将需要备份内容存为SQL语句保存文件扩展名为.sql. 由于mysqldump恢复时是执行.sql文件的sql语句,在数据库容量大时恢复非常慢。
安装:
在主数据库所在服务器:
将percona-xtrabackup-2.4.2-Linux-x86_64.tar.gz --ok
MySQL-shared-compat-5.6.30-1.linux_glibc2.5.x86_64.rpm --ok
perl-DBD-MySQL-4.013-3.el6.x86_64.rpm 上传到 /opt
[root@localhost yum.repos.d]# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# cd /opt
# rpm -ivh MySQL-shared-compat-5.6.30-1.linux_glibc2.5.x86_64.rpm
[root@localhost yum.repos.d]# yum install -y perl-DBD-MySQL-4.013-3.el6.x86_64.rpm
# tar -xf percona-xtrabackup-2.4.2-Linux-x86_64.tar.gz
# mv percona-xtrabackup-2.4.2-Linux-x86_64 xtrabackup
# cd /opt/xtrabackup/bin
# ln -sv /opt/xtrabackup/bin/* /usr/local/sbin/
创建最小权限备份用户 bkpuser
mysql> create user 'bkuser'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> revoke all privileges,grant option from 'bkuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> grant reload,lock tables,replication client on *.* to 'bkuser'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
创建备份目录
[root@localhost ~]# mkdir -pv /data/backup
mkdir: created directory ‘/data/backup’
备份脚本:
将mysqlbak.sh 上传到/scripts目录
[root@localhost ~]# chmod +x mysqlbak.sh
[root@localhost ~]# mv mysqlbak.sh /scripts/
脚本内容:
[root@localhost ~]# cat /scripts/mysqlbak.sh
#/bin/bash
#使用percona-xtrabackup备份数据库
#备份存放路径
bk_dir=/data/backup
#备份数据库文件并打包
/usr/bin/innobackupex --user=bkuser --password=123456 --stream=tar $bk_dir | gzip > $bk_dir/`date +%F_%H-%M-%S`.tar.gz
# 删除5天之后的备份
find $bk_dir/* -mtime +6 -exec rm -fr {} \; > /dev/null 2>&1
添加到crontab里,每晚1点运行
# crontab -e
0 1 * * * sh /app/scripts/mysqlbak.sh >/dev/null 2>&1
在从数据库上执行以上相同的操作,由于开启了双主复制,从数据库会自动创建备份用户bkpuser
测试脚本运行:
# sh /scripts/mysqlbak.sh
全程未报错且最后一行显示:
160430 15:42:41 completed OK!
在 /data/backup 目录产生以日期命名的文件