编写脚本,使用mysqldump实现分库分表备份
1. 进入backup_db.sh
vim backup_db.sh
2.编写脚本
#!/bin/bash
ERNAME="root" # 数据库用户名
DB_PASSWORD="123456" # 数据库密码
exclude_db='mysql|information_schema|performance_schema|sys'
DB_NAMES=$( mysql -uroot -p123456 -e 'show databases' -N | egrep -v "${exclude_db}") # 备份的数据库名称
# 备份保存路径
BACKUP_DIR="/backup" # 备份保存目录
# 获取当前日期和时间
CURRENT_DATE=$(date +%Y%m%d%H%M%S)
# 创建备份目录
mkdir -p "$BACKUP_DIR/$CURRENT_DATE"
# 循环处理每个数据库
for DB_NAME in $DB_NAMES
do
# 备份每个数据库的每个表
TABLES=$(mysql -u$DB_USERNAME -p$DB_PASSWORD -Ne "show tables" $DB_NAME)
mkdir $BACKUP_DIR/$CURRENT_DATE/$DB_NAME
for TABLE_NAME in $TABLES
do
# 生成备份文件路径
BACKUP_FILE="$BACKUP_DIR/$CURRENT_DATE/$DB_NAME/$TABLE_NAME.sql"
# 使用mysqldump命令备份表数据
mysqldump -u$DB_USERNAME -p$DB_PASSWORD --set-gtid-purged=OFF $DB_NAME $TABLE_NAME > $BACKUP_FILE
# 检查备份结果
if [ $? -eq 0 ]; then
echo "备份表 $DB_NAME.$TABLE_NAME 成功"
else
echo "备份表 $DB_NAME.$TABLE_NAME 失败"
fi
done
done
3.加权
chmod +x backup db.sh