vlambda博客
学习文章列表

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/mysqlssh [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 2if [ $? -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.txtfi}full_bk

说明:

  • 第10-16行:测试远程机器是否存在指定目录,如果不存在就创建目录

  • 第18行:定义完全备份函数

  • 第20行:通过pxb命令执行备份数据,并压缩打包后传递到远程机器上

  • 第24行:删除2天之前的备份文件

  • 第29行:调用函数


pxb工作原理与语法使用可参看链接:https://www.ywdevops.cn/index.php/2021/11/24/xtrabackup/