mysql的分库分表脚本

目录

一.分库分表优点

1,提高系统的可扩展性和性能:通过分库分表,可以将数据分布在多个节点上,从而提高系统的负载能力和处理性能。

2,精确备份和恢复:分库分表备份可以确保每个数据库和表的数据都得到备份,同时也可以针对需要恢复的具体数据进行恢复操作,提高了备份和恢复的精确性。

3,部分故障隔离:当某个库或表发生故障时,只需恢复受影响的库或表,而不需要恢复整个数据库系统。

二.过程思路

使用mysqldump实现分库分表备份的基本思路如下:

1,确定要备份的数据库列表:首先确定要备份的数据库列表,这些数据库可能是分布在不同的库中。

2,遍历数据库:对于每个数据库,遍历其中的表。

3,备份表:对于每个表,使用mysqldump命令备份表结构和数据到指定的备份文件中。

重复以上步骤:对其他数据库中的表重复执行步骤3,直到所有的数据库和表都备份完成。

脚本实现

sql 复制代码
# MySQL连接信息
db_user="root"
db_password="fu@192.168.128.128"
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

验证

最后,可以用tree命令看看数据库及表对应的结构关系

相关推荐
wgzrmlrm743 分钟前
如何加固SQL环境部署_删除默认安装的示例数据库
jvm·数据库·python
雨墨✘44 分钟前
golang如何实现设备指纹识别_golang设备指纹识别实现详解
jvm·数据库·python
程序员大辉1 小时前
没想到!一直要开会员的Navicat 终于有免费版了
数据库
数厘1 小时前
2.15 sql基础查询(SELECT、FROM、字段别名、常量与表达式)
数据库·sql·oracle
可观测性用观测云1 小时前
观测云数据转发和存档最佳实践
数据库
披着羊皮不是狼2 小时前
(7)为 RAG 系统接入 Redis Stack 实现向量持久化
数据库·redis·缓存
SelectDB2 小时前
基于 SelectDB 实现 Hive 数据湖统一分析:洋钱罐全球一体化探索分析平台升级实践
大数据·数据库·数据分析
飞yu流星2 小时前
mysql 基础
数据库·mysql·oracle
零陵上将军_xdr2 小时前
MySQL 事务写入流程详解
android·数据库·mysql
若阳安好3 小时前
【提效小工具】IN SQL、UPDATE SQL、INSERT SQL
java·数据库·sql