本文主要是介绍Linux的MySQL 数据库备份单循环与多循环shell脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本次测试为centos7.6
Linux环境下定时备份MySQL数据库。脚本使用mysqldump
命令进行单次数据库备份,并将备份文件存储在指定的目录中。
MySQL 数据库备份单循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER="your_username"
PASS="your_password"
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null
|egrep -v "Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null;
then
echo "$BACKUP_NAME 备份失败!"
fi
done
MySQL 数据库备份多循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null
|egrep -v "Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;"
2>/dev/null)
for TABLE in $TABLE_LIST; do
BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME
2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
done
你可以通过以下步骤使脚本定时运行:
-
保存这个脚本到一个文件,例如
backup_mysql.sh
。 -
给脚本执行权限:
chmod +x backup_mysql.sh
。 -
使用
crontab
设置定时任务。打开当前用户的crontab文件:crontab -e
,然后添加一行以设置执行时间,例如每天凌晨1点执行:0 1 * * * /path/to/your/backup_mysql.sh
。
确保mysqldump
和gzip
在系统PATH中可用,否则你需要在脚本中指定完整路径。
这篇关于Linux的MySQL 数据库备份单循环与多循环shell脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!