数据库的分库分表

bash 复制代码
#!/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
相关推荐
DTS小夏13 分钟前
Linux 系统 + IDEA+Scala 插件:新手进阶开发指南
linux·scala·intellij-idea
老黄编程22 分钟前
--gpu-architecture <arch> (-arch)
linux·人工智能·机器学习
肖爱Kun24 分钟前
LINUX中USB驱动架构—URB请求块
linux·驱动
Codeking__2 小时前
mysql基础——库与表的操作
数据库·mysql
silver98863 小时前
再谈golang的sql链接dsn
mysql·golang
知星小度S3 小时前
系统核心解析:深入操作系统内部机制——进程管理与控制指南(一)【进程/PCB】
linux·运维·服务器·进程
Empty_7777 小时前
SELinux安全上下文
linux·服务器·安全
bug攻城狮8 小时前
解决Ubuntu中apt-get -y安装时弹出交互提示的问题
linux·运维·ubuntu
xiachong278 小时前
ubuntu18.04安装PCL1.14
linux·ubuntu
夜阑珊夭夭9 小时前
linux自定义网卡名字
linux·运维