#!/bin/bash
mysql -uroot -p'ZRSan@123456' -e 'show databases' -N | egrep -v 'information_schema|mysql|performance_schema|sys' > dbname
# 判断是否有/backup/db目录,没有则创建
[ -d /backup/db ] || mkdir -p /backup/db
#一行一行读取dbname中的库名,然后开始备份数据库,进而分别备份数据库中的表
while read line
do
#备份数据库
mysqldump -uroot -p'#BenJM123' -B $line | gzip > /backup/db/${line}_$(date +%F).sql.gz
#分别将数据库中的表名保存到tbname文件中
mysql -uroot -p'#BenJM123' -e "show tables from $line" -N > tbname
#判断是否有/backup/db/$line目录,没有则创建
[ -d /backup/db/$line ] || mkdir /backup/db/$line
#读取tbname中的表名,备份数据表
while read line2
do
#备份数据表
mysqldump -uroot -p'#BenJM123' $line $line2 | gzip > /backup/db/$line/${line2}_$(date +%F).sql.gz
done < tbname
done < dbname
编写脚本,使用mysqldump实现分库分表备份。
最新推荐文章于 2023-09-01 23:28:34 发布