当前位置: 首页 > news >正文

mysql的分库分表脚本

目录

  • 一.分库分表优点
  • 二.过程思路
  • 脚本实现
  • 验证

一.分库分表优点

1,提高系统的可扩展性和性能:通过分库分表,可以将数据分布在多个节点上,从而提高系统的负载能力和处理性能。
2,精确备份和恢复:分库分表备份可以确保每个数据库和表的数据都得到备份,同时也可以针对需要恢复的具体数据进行恢复操作,提高了备份和恢复的精确性。
3,部分故障隔离:当某个库或表发生故障时,只需恢复受影响的库或表,而不需要恢复整个数据库系统。

二.过程思路

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

1,确定要备份的数据库列表:首先确定要备份的数据库列表,这些数据库可能是分布在不同的库中。
2,遍历数据库:对于每个数据库,遍历其中的表。
3,备份表:对于每个表,使用mysqldump命令备份表结构和数据到指定的备份文件中。
重复以上步骤:对其他数据库中的表重复执行步骤3,直到所有的数据库和表都备份完成。

脚本实现

# 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 ]thenecho "database $db is being backed up ... success!"elseecho "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 tbdo# 对表进行备份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 ]; thenecho "Backup of $db.$tb successful!"elseecho "Backup of $db.$tb failed!"fidone < tbtmp
done < dbtmp

验证

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

http://www.lryc.cn/news/106146.html

相关文章:

  • JavaEE初阶之文件操作 —— IO
  • 客户端代码 VS 服务端代码 简述
  • 【娱乐圈明星知识图谱2】信息抽取
  • C++ rand的用法
  • element时间选择器的默认值
  • fiddler过滤器
  • 面试必考精华版Leetcode2130.链表最大孪生和
  • qemu kvm 新建虚拟机
  • Charles抓包工具使用(一)(macOS)
  • 2023年8月美团外卖3-18元红包优惠券天天领取活动日历及美团外卖红包领取使用
  • 深度学习各层负责什么内容?
  • 【硬件设计】模拟电子基础二--放大电路
  • 基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)
  • 控件旋转90度,并跟随大小缩放
  • 软件外包开发的PHP开发框架
  • D2L学习记录-10-词嵌入word2vec
  • 海外独立站怎么搭建?7个海外独立站搭建指南
  • flask中实现restful-api
  • Centos7 安装man中文版手册
  • untiy代码打压缩包,可设置密码
  • 【iOS】—— UIKit相关问题
  • Linux系统防火墙Firewalld
  • STM3232 GPIO的配置寄存器(为了移植IIC)
  • K8s的详细介绍
  • JavaWeb(8)——前端综合案例2(节流和防抖)
  • Spring优雅的在事务提交/回滚前后插入业务逻辑
  • day48-ajax+SSM分页
  • 如何在本地环境使用 CodeQL 扫描出代码中的安全漏洞?
  • 关于领导要求logback日志时间格式要求为“年-月-日 时:分:秒,毫秒”
  • 软件测试--一些生命周期