运维高级--shell脚本完成分库分表

这篇具有很好参考价值的文章主要介绍了运维高级--shell脚本完成分库分表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么要进行分库分表

     随着系统的运行,存储的数据量会越来越大,系统的访问的压力也会随之增大,如果一个库中的表数据超过了一定的数量,比如说MySQL中的表数据达到千万级别,就需要考虑进行分库分表;
     其次随着表数据的不断增大,会发现查询也随着变得缓慢,如果添加索引的话,会发现影响到了新增和删除的性能,如果我们将数据库分散到不同的表上,单表的索引大小就得到了控制,对索引以及表结构的变更会变得很方便和高效;
      当数据库实例的吞吐量达到性能的瓶颈时,我们需要扩展数据库实例,让每个数据库实例承担其中一部分数据库的请求,分解总体的大请求量的压力;在数据库进行扩容的时候对应用层的配置改变最少, 就需要在每个数据库实例中预留足够的数据库量

什么是分库分表

简而言之就是数据拆分:将一个表结构分为多个表,或者将一个表数据分片后放入多个表,这些表可以放在同一个数据库里,也可以放到不同的数据库中,甚至可以放到不同的数据库实例中数据拆分的方式

使用shell脚本完成分库操作

运维高级--shell脚本完成分库分表,运维,shell
以这个数据库为例

#!bin/bash
mysql_cmd='-uroot -p123456'  #数据库账号密码
exclude_db='information_schema|performance_schema|sys|mysql' #不用备份的库(数据库自带的那几个)
bak_path=/backup/db #备份到哪个目录
[ -d ${bak_path} ] || mkdir -p ${bak_path} #如果目录不存在就创建
mysql $mysql_cmd -e 'show databases' -N | egrep -v "${exclude_db}" >dbname #获取要备份的库

while read line
do
mysqldump $mysql_cmd --set-gtid-purged=OFF -B $line | gzip > ${bak_path}/${line}_$(date +%F).sql.gz #备
份数据库
done< dbname
rm -f dbname

运行此shell脚本
运维高级--shell脚本完成分库分表,运维,shell
tree指令显示目录树形结构
运维高级--shell脚本完成分库分表,运维,shell

使用shell脚本完成分表操作

mysql_cmd='-uroot -p123456'  #数据库账号密码
exclude_db='information_schema|performance_schema|sys|mysql' #不需要备份的库
bak_path=/backup/tb  #备份到哪个目录
#获取需要备份的库
mysql ${mysql_cmd} -e 'show databases' -N |egrep -v "${exclude_db}" >dbname 


while read line
do
  [ -d ${bak_path}/$line ] || mkdir -p ${bak_path}/$line  #为每个备份的库创建目录
  #备份库
  mysqldump $mysql_cmd --set-gtid-purged=OFF -B $line | gzip > ${bak_path}/${line}/${line}_$(date +%F).sql.gz 
  mysql -uroot -p123456 -N -e "show tables from $line" >tbname #将表存放在tbname文件中
  while read tb
  do
  #备份表
   mysqldump ${mysql_cmd} --set-gtid-purged=OFF $line $tb | gzip > ${bak_path}/${line}/${line}_${tb}_$(date +%F).sql.gz 
  done <tbname
done< dbname
rm -rf dbname tbname

运行脚本
运维高级--shell脚本完成分库分表,运维,shell
使用tree命令查看目录树形结构
运维高级--shell脚本完成分库分表,运维,shell文章来源地址https://www.toymoban.com/news/detail-610670.html

到了这里,关于运维高级--shell脚本完成分库分表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用mysqldump实现分库分表备份的shell脚本

    linux版本:CentOS 7.9 mysql版本:MySQL 5.7.36 脚本实现功能:利用mysqldump工具实现对mysql中的数据库分库备份,和对所备份数据库中的表分表备份 1)定义变量 定义了备份用户、备份用户密码、备份参数命令(简化代码)、不需要备份的数据库、备份目录这些变量。 2)分库备份 首

    2024年02月15日
    浏览(37)
  • 编写shell脚本,利用mysqldump实现MySQL数据库分库分表备份

     查看数据和数据表 删除头部Database和数据库自带的表  编写脚本 检查脚本运行备份数据库 分表分库备份成功 还原检测 删除数据库并查看库 开始还原 使用备份的库进行还原,由于是压缩文件,使用压缩还原 查看数据库  

    2024年02月05日
    浏览(47)
  • mysql运维------分库分表

    随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈 :热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。 CPU瓶颈 :排序、分组、连接查询、

    2023年04月11日
    浏览(43)
  • MySQL运维6-Mycat分库分表之垂直分库

    场景:在业务系统中,涉及一下表结构,但是由于用户与订单每天都会产生大量的数据,单台服务器的数据存储以及处理能力是有限的,可以对数据库表进行拆分,原有数据库如下 说明1:整个业务系统中的表,大致分为四个,商品信息类的表,订单相关的表,用户相关表及

    2024年02月04日
    浏览(44)
  • MySQL运维3-分库分表策略

    单库瓶颈:如果在项目中使用的都是单MySQL服务器,则会随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行存储,存在一下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率低下,请求数据太多,带宽不够,

    2024年02月05日
    浏览(39)
  • MySQL运维13-Mycat分库分表之按月分片

    使用场景为按照自然月来分片,每个自然月为一个分片,但是一年有12个月,是不是要有12个数据节点才行呢?并不是。例如我现在只有三个分片数据库,这样就可以1月在第一个数据分片中,2月在第二个数据分片中,3月在第三个数据分片中,当来到4月的时候,就会重新开始

    2024年02月04日
    浏览(47)
  • 15天学习MySQL计划(运维篇)分库分表-监控-第十四天

    1.介绍 1.问题分析 ​ 随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增加,若采用但数据进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。 CPU瓶颈:排序,分

    2024年02月05日
    浏览(48)
  • MySQL 数据存储和优化------MySQL索引原理和优化 ---- (架构---索引---事务---锁---集群---性能---分库分表---实战---运维)持续更新

    Mysql架构体系全系列文章主目录(进不去说明还没写完) https://blog.csdn.net/grd_java/article/details/123033016 本文只是整个系列笔记的第二章:MySQL索引原理和优化,只解释索引相关概念。 索引可以提高查询效率,影响where查询和order by排序,它可以从多方面进行分类,但是实际创建时

    2024年02月02日
    浏览(51)
  • 运维Shell脚本小试牛刀(一)

    运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试牛刀(五):until循环 运维Shell脚本小试牛刀

    2024年02月11日
    浏览(41)
  • 运维Shell脚本小试牛刀(二)

    运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 [root@www shelldic]# cat checkpass.sh  #!/bin/bash - #================================================================================================================== # # #                          

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包