#!/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
相关推荐
小白学大数据13 分钟前
JavaScript重定向对网络爬虫的影响及处理time never ceases34 分钟前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)Frank牛蛙38 分钟前
1.每日SQL----2024/11/7Ciderw40 分钟前
块存储、文件存储和对象存储详细介绍薛晓刚41 分钟前
数据库优化指南:如何将基本功能运用到极致?stars_User44 分钟前
MySQL数据库面试题(下)未来之窗软件服务1 小时前
sql速度优化多条合并为一条语句山东布谷科技官方1 小时前
布谷直播源码部署服务器关于数据库配置的详细说明易云码2 小时前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)newxtc2 小时前
【客观理性深入讨论国产中间件及数据库-科创基础软件】