玩具网站 下载,建站软件移动版,a032网站模版,城乡建设和住房建设部八大员为什么要进行分库分表 随着系统的运行#xff0c;存储的数据量会越来越大#xff0c;系统的访问的压力也会随之增大#xff0c;如果一个库中的表数据超过了一定的数量#xff0c;比如说MySQL中的表数据达到千万级别#xff0c;就需要考虑进行分库分表#xff1b; 其…为什么要进行分库分表 随着系统的运行存储的数据量会越来越大系统的访问的压力也会随之增大如果一个库中的表数据超过了一定的数量比如说MySQL中的表数据达到千万级别就需要考虑进行分库分表 其次随着表数据的不断增大会发现查询也随着变得缓慢如果添加索引的话会发现影响到了新增和删除的性能如果我们将数据库分散到不同的表上单表的索引大小就得到了控制对索引以及表结构的变更会变得很方便和高效 当数据库实例的吞吐量达到性能的瓶颈时我们需要扩展数据库实例让每个数据库实例承担其中一部分数据库的请求分解总体的大请求量的压力在数据库进行扩容的时候对应用层的配置改变最少 就需要在每个数据库实例中预留足够的数据库量
什么是分库分表
简而言之就是数据拆分将一个表结构分为多个表或者将一个表数据分片后放入多个表这些表可以放在同一个数据库里也可以放到不同的数据库中甚至可以放到不同的数据库实例中数据拆分的方式
使用shell脚本完成分库操作 以这个数据库为例
#!bin/bash
mysql_cmd-uroot -p123456 #数据库账号密码
exclude_dbinformation_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-purgedOFF -B $line | gzip ${bak_path}/${line}_$(date %F).sql.gz #备
份数据库
done dbname
rm -f dbname运行此shell脚本 用tree指令显示目录树形结构
使用shell脚本完成分表操作
mysql_cmd-uroot -p123456 #数据库账号密码
exclude_dbinformation_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-purgedOFF -B $line | gzip ${bak_path}/${line}/${line}_$(date %F).sql.gz mysql -uroot -p123456 -N -e show tables from $line tbname #将表存放在tbname文件中while read tbdo#备份表mysqldump ${mysql_cmd} --set-gtid-purgedOFF $line $tb | gzip ${bak_path}/${line}/${line}_${tb}_$(date %F).sql.gz done tbname
done dbname
rm -rf dbname tbname运行脚本 使用tree命令查看目录树形结构