下面是使用 shell 脚本每天对 MySQL 多个数据库自动备份的攻略。
1. 环境准备
在开始之前,我们需要确保以下条件已经具备:
1. 服务器上安装了 MySQL 数据库;
2. 已经编写好了备份脚本;
3. 服务器上安装了 crontab 定时任务服务。
2. 编写备份脚本
备份脚本需要包含以下内容:
1. 备份文件的保存路径;
2. 备份引擎的选择;
3. 备份多个数据库。
以下是一个简单的备份脚本示例:
#!/bin/bash
# 备份文件的保存路径
BACKUP_DIR="/usr/local/mysql/backup"
# 备份引擎选择,可以是 mysqldump 或者 mydumper
BACKUP_ENGINE="mysqldump"
# 备份多个数据库
DATABASE_NAMES=("db1" "db2" "db3")
# 循环备份每个数据库
for DATABASE_NAME in ${DATABASE_NAMES[@]}
do
CURRENT_TIME=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${DATABASE_NAME}-${BACKUP_ENGINE}-${CURRENT_TIME}.sql.gz"
if [ "${BACKUP_ENGINE}" == "mysqldump" ]; then
mysqldump -u root -pPASSWORD --single-transaction --flush-logs --master-data=2 ${DATABASE_NAME} | gzip -c > ${BACKUP_DIR}/${BACKUP_FILE}
else
mydumper -u root -pPASSWORD -B ${DATABASE_NAME} -o ${BACKUP_DIR} -c
fi
done
备份脚本中定义了三个变量:备份文件的保存路径、备份引擎、需要备份的数据库名称列表。接下来的循环代码会对每一个数据库使用指定引擎进行备份,备份文件的名称格式为“数据库名称-备份引擎-备份时间.sql.gz”。
3. 设置定时任务
通过设置 crontab 定时任务能够使备份脚本每天定时运行,但是在设置之前我们需要确保以下条件已经具备:
1. 脚本具有执行权限;
2. 脚本能够在服务器上被访问。
打开终端,输入以下命令,编辑 crontab 定时任务表:
crontab -e
在打开的编辑器中添加以下内容,表示每天晚上 11 点运行备份脚本:
0 23 * * * /bin/bash /path/to/backup_script.sh
其中,“/path/to/backup_script.sh”是指备份脚本所在的路径。
4. 备份恢复
我们可以使用以下命令来还原一个备份文件到 MySQL 数据库:
gunzip < backup_file.sql.gz | mysql -u root -pPASSWORD database_name
其中,“backup_file.sql.gz”是指备份文件的名称,后面跟着“gunzip”解压缩命令和“mysql”命令将备份还原到指定数据库中。
以上就是使用 shell 脚本每天对 MySQL 多个数据库自动备份的攻略和用法示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用shell脚本每天对MySQL多个数据库自动备份的讲解 - Python技术站