server05 上的数据只是存放的 CDH 元数据,所以比较简单,编辑脚本:
$ vim /data1/mysq-backup/mysql-backup.sh
内容如下:
#!/bin/bash
BACK_DIR="/data1/mysql-backup"
DATE=`date +'%F-%T'`
mysqldump -uroot -pMyPassword --all-databases --triggers --routines --events > $BACK_DIR/server05-mysql-CDH-$DATE.sql
mc cp $BACK_DIR/server05-mysql-CDH-$DATE.sql myminio/$DATE
find $BACK_DIR -name "*.sql" -mtime +7 | xargs rm -f
echo "$DATE backup done" >> $BACK_DIR/mysql-backup-CDH.log
赋予执行权限:
$ chmod +x /data1/mysq-backup/mysql-backup.sh
定期任务脚本:
0 2 * * * root /data1/mysq-backup/mysql-backup.sh
重启 crond:
$ systemctl restart crond
由于这台 MySQL 数据量较大,使用 mysqldump 比较恼火,这里使用到了一个叫 innobackupex
的命令来备份,这个命令不会锁表。
首先安装这个命令,去网上下载名为 percona-xtrabackup-24-2.4.20-1.el7.x86_64
的包,然后离线使用 rpm -Uvh
来安装即可,由于是离线环境,可能还需要自己去网上下载其他依赖包,比如我这里需要下载如下包:
$ wget https://www.percona.com/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
$ wget http://mirror.centos.org/centos/7/os/x86_64/Packages/perl-Module-Install-1.06-4.el7.noarch.rpm
我这里装外这俩依赖才能安装 percona-xtrabackup
。
安装完成后,监测:
$ which xtrabackup
$ which innobackupex
数据导出命令:
$ innobackupex --defaults-fie=/etc/my.cnf -S /var/lib/mysql/mysql.sock --user=root --password='******' --throottle=2000 --stream=tar /data3/mysql-backup/ | gzip > /data3/mysql-backup/server02-mysql-backup.tar.gz
我这里导出花了 27 分钟,因为压缩占了很大的时间,压缩之后的数据是 11G。解压缩之后的数据是 39 G
下面编写完成的数据备份脚本:
$ vim /data3/mysql-backup/server02-mysql-backup.sh
内容如下:
#!/bin/bash
BACK_DIR="/data3/mysql-backup"
DATE=`date +'%F-%T'`
innobackupex --defaults-fie=/etc/my.cnf -S /var/lib/mysql/mysql.sock --user=root --password='******' --throottle=2000 --stream=tar $BACK_DIR | gzip > $BACK_DIR/server02-mysql-backup-$DATE.tar.gz
mc cp $BACK_DIR/server02-mysql-backup-$DATE.tar.gz myminio/$DATE
find $BACK_DIR -name "*.tar.gz" -mtime +3 | xargs rm -f
echo "$DATE backup done" >> $BACK_DIR/mysql-backup.log
定期任务脚本:
0 2 * * * root /data3/mysql-backup/server02-mysql-backup.sh