下面我将详细讲解如何编写脚本令Xtrabackup对MySQL数据进行备份。
什么是Xtrabackup
Xtrabackup 是一个由 Percona 提供的、支持 InnoDB 引擎在线热备的 MySQL 数据库备份工具,它可以在 MySQL 数据库运行的情况下备份、恢复 InnoDB、XtraDB 和 MariaDB 数据库,并可以还原到不同的 MySQL 服务器上。
安装Xtrabackup
首先需要在Linux系统上先安装Xtrabackup,可以使用yum命令进行安装:
sudo yum install -y wget
sudo wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo rpm -Uvh percona-release-latest.noarch.rpm
sudo yum install -y percona-xtrabackup-24
编写备份脚本
接下来是编写备份脚本的过程。
首先,需要创建一个备份目录,用于存放备份文件:
sudo mkdir -p /backup/mysql
然后,在备份目录下创建一个备份脚本 backup.sh
,并给予执行权限:
sudo touch /backup/mysql/backup.sh
sudo chmod +x /backup/mysql/backup.sh
编辑备份脚本,输入以下内容,以备份 "test_db" 数据库为例:
#!/bin/bash
# 备份目录
backup_dir=/backup/mysql
# MySQL 连接配置
mysql_user=root
mysql_password=123456
mysql_host=localhost
# 备份文件名
backup_file=${backup_dir}/test_db-$(date '+%Y-%m-%d-%H-%M-%S').tar.gz
# 进行备份
xtrabackup --backup --user=${mysql_user} --password=${mysql_password} --host=${mysql_host} --target-dir=${backup_dir}/test_db > ${backup_dir}/backup.log
# 打包备份文件
tar -czvf ${backup_file} ${backup_dir}/test_db
# 清理备份文件
find ${backup_dir} -name "*.tar.gz" -type f -mtime +14 -exec rm -f {} \;
在以上备份脚本中,需要修改以下几个变量:
backup_dir
:备份目录,用于存放备份文件。mysql_user
:MySQL 用户名。mysql_password
:MySQL 密码。mysql_host
:MySQL 主机地址。backup_file
:备份文件名,按照日期生成。
执行备份脚本
最后是执行备份脚本的过程。
执行备份脚本,进行备份:
sudo sh /backup/mysql/backup.sh
执行后,备份文件将会在 /backup/mysql
目录下生成,并且会自动清理超过14天的备份文件。
备份脚本示例2
除了上述备份脚本示例,这里还提供一个针对多个数据库进行备份的脚本示例:
#!/bin/bash
# 备份目录
backup_dir=/backup/mysql
# MySQL 连接配置
mysql_user=root
mysql_password=123456
mysql_host=localhost
# 备份文件名
backup_file=${backup_dir}/all_databases-$(date '+%Y-%m-%d-%H-%M-%S').tar.gz
# 所有数据库
all_databases=$(mysql -u ${mysql_user} -p${mysql_password} -h ${mysql_host} -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|sys)")
# 备份所有数据库
for db in ${all_databases}; do
# 进行备份
xtrabackup --backup --user=${mysql_user} --password=${mysql_password} --host=${mysql_host} --target-dir=${backup_dir}/${db} > ${backup_dir}/backup_${db}.log
# 打包备份文件
tar -czvf ${backup_dir}/${db}.tar.gz ${backup_dir}/${db}
# 删除备份文件夹
rm -rf ${backup_dir}/${db}
done
# 打包备份文件
tar -czvf ${backup_file} ${backup_dir}/*.tar.gz
# 清理备份文件
find ${backup_dir} -name "*.tar.gz" -type f -mtime +14 -exec rm -f {} \;
以上备份脚本中,all_databases
变量是一个包含所有数据库名称的数组,通过循环对每个数据库进行备份,并最终打包成一个文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:编写脚本令Xtrabackup对MySQL数据进行备份的教程 - Python技术站