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 目录产生以日期命名的文件

创建时间:2021-12-22 11:51
浏览量:0