#!/bin/bash
#########################
#File name:db_fen.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2023-07-29 09:18:52
#Description:
#########################
# MySQL连接信息
db_user="root"
db_password="RedHat@123"
db_cmd="-u${db_user} -p${db_password}"
exclude_db="information_schema|mysql|performance_schema|sys|Database"
bak_dir=/backup/db/mysqldump_test/
# 判断备份路径是否存在
[ -d ${bak_dir} ] || mkdir ${bak_dir}
# 查找出需要备份的数据库
mysql ${db_cmd} -e"show databases" -N 2>/dev/null | egrep -v "$exclude_db" > dbtmp
# 循环遍历数据库列表
while read db
do
#对数据库进行备份
mysqldump ${db_cmd} --set-gtid-purged=off $db 2>/dev/null | gzip > ${bak_dir}/`date +%F`-$db.sql.gz
#判断是否备份成功
if [ $? -eq 0 ]
then
echo "database $db is being backed up ... success!"
else
echo "database $db is being backed up ... failure!"
fi
#根据数据库进行分表备份
[ -d ${bak_dir}/$db ] || mkdir -p ${bak_dir}/$db
# 获取数据库中的表名列表
mysql ${db_cmd} $db -e "SHOW TABLES;" | grep -v "Tables_in" > tbtmp
# 循环遍历表名列表
while read tb
do
# 对表进行备份
mysqldump ${db_cmd} --set-gtid-purged=off $db $tb 2>/dev/null | gzip > ${bak_dir}/$db/`date +%F`-$db-$tb.sql.gz
# 判断是否备份成功
if [ "$?" -eq 0 ]; then
echo "Backup of $db.$tb successful!"
else
echo "Backup of $db.$tb failed!"
fi
done < tbtmp
done < dbtmp
#删除临时文件
rm -rf tbtmp
rm -rf dbtmp
shell脚本:数据库的分库分表
wada642023-08-02 18:16
相关推荐
Minxinbb2 小时前
MySQL中Performance Schema库的详解(上)mmsx3 小时前
android sqlite 数据库简单封装示例(java)zpjing~.~4 小时前
Mongo 分页判断是否有下一页2401_857600954 小时前
技术与教育的融合:构建现代成绩管理系统秋恬意4 小时前
Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别潇湘秦4 小时前
一文了解Oracle数据库如何连接(1)雅冰石4 小时前
oracle怎样使用logmnr恢复误删除的数据web前端神器4 小时前
mongodb给不同的库设置不同的密码进行连接从以前4 小时前
Berlandesk 注册系统算法实现与解析Muko_0x7d24 小时前
Mongodb