mysql完全备份脚本(pxb方式)
Percona XtraBackup(简称PXB) 是 Percona公司开发的一款开源的用于MySQL数据库备份工具,支持MySQL、Percona server和MariaDB,是目前较为受欢迎的主流备份工具。
注意:xtrabackup只能备份innoDB和xtraDB两种数据引擎的表,而不能备份MyISAM数据表。
mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份, 在实际生产环境中增量备份是非常实用的,pxb不仅可以实现全量备份,也可以实现增量备份,如果数据量不是特别大,可以通过pxb实现每日全备,或者每日增量备份,一周全备一次。
下面例子是通过pxb来实现完全备份mysql的脚本,:
#!/bin/bash
: '
@function: 备份mysql数据到远程机器上并压缩
@date: 2021-11-26
@author: gongguan
@notice: 下面的压缩后文件中因为有分钟,包含冒号,因此用tar命令解压的时候,会提示tar: Cannot connect to,因此在解压的时候需要添加参数--force-local即可
'
date=$(date +"%Y-%m-%d~%H:%M:%S")
bk_dir=/data/backup/mysql
ssh [email protected] test -d ${bk_dir}
if [ $? -eq 0 ];then
echo "dir exists"
else
echo "目录不存在,需要创建"
ssh [email protected] mkdir -p ${bk_dir}
fi
full_bk() {
echo "<<<<<<<<<<<<<<<<<<<<<<开始完全备份>>>>>>>>>>>>>>>>>>>>>"
innobackupex --defaults-file=/etc/my.cnf --user=bkuser --password=bk123456 --no-timestamp --stream=tar ${bk_dir} | ssh [email protected] "gzip > ${bk_dir}/bk_mysql-${date}.tar.gz"
sleep 2
if [ $? -eq 0 ];then
echo "mysql bakcup success-${date}" >> ${bk_dir}/result_success.txt
ssh [email protected] "find ${bk_dir} -type f -name 'bk_mysql*' -mtime +2 -exec rm -rf {} \;"
else
echo "mysql backup failed-${date}" >> ${bk_dir}/result_failed.txt
fi
}
full_bk
说明:
第10-16行:测试远程机器是否存在指定目录,如果不存在就创建目录
第18行:定义完全备份函数
第20行:通过pxb命令执行备份数据,并压缩打包后传递到远程机器上
第24行:删除2天之前的备份文件
第29行:调用函数
pxb工作原理与语法使用可参看链接:https://www.ywdevops.cn/index.php/2021/11/24/xtrabackup/