需求:添加创建了分库分表后,业务可能将数据已经写入,但未来得及接入到otter汇总库。接入汇总库前需要初始化这部分数据。

1.导出

ip_port_list=(5.5.5.101:3306 5.5.5.102:3306)

len=${#ip_port_list[@]}
for ((i=0;i<=$len-1;i++))
do db_ip=`echo ${ip_port_list[i]} | awk -F[:] '{print $1}'`
db_port=`echo ${ip_port_list[i]} | awk -F[:] '{print $2}'`
mysql -h$db_ip -P$db_port -uroot -proot 2>/dev/null -Ns>test_shard_${db_ip}_${db_port} <<EOF
select table_schema,table_name from information_schema.TABLES where table_schema like 'test_shard_%' and table_name like 'test_%';
EOF cat test_shard_${db_ip}_${db_port} |while read line
do
schema_name=`echo $line | awk '{print $1}'`
table_name=`echo $line | awk '{print $2}'`
echo `date "+%Y-%m-%d %H:%M:%S"` "start dump ${schema_name}_${table_name}..."| tee -a all_tables.log
mysqldump -h$db_ip -P$db_port -uroot -proot 2>/dev/null --databases ${schema_name} --tables ${table_name} -t -c --single-transaction > $table_name.sql
sed -i "s/$table_name/test/g" $table_name.sql
done
done

导出脚本

2.导入

 ls -l *.sql |awk '{print $9}' | while read line
do
mysql -h5.5.5.101 -uroot -proot -P3306 test < $line
done

导入脚本

3.数据量统计

ip_port_list=(5.5.5.101:3306 5.5.5.102:3306)

len=${#ip_port_list[@]}
sum=0 for ((i=0;i<=$len-1;i++))
do db_ip=`echo ${ip_port_list[i]} | awk -F[:] '{print $1}'`
db_port=`echo ${ip_port_list[i]} | awk -F[:] '{print $2}'`
mysql -h$db_ip -P$db_port -uroot -proot 2>/dev/null -Ns>test_shard_${db_ip}_${db_port} <<EOF
select concat(table_schema,'|',table_name) from information_schema.TABLES where table_schema like 'test_shard_%' and table_name like 'test_%';
EOF for line in `cat test_shard_${db_ip}_${db_port}`
do
schema_name=`echo $line | awk -F['|'] '{print $1}'`
table_name=`echo $line | awk -F['|'] '{print $2}'`
query_sql="select count(*) from $schema_name.$table_name;"
cnt=$( echo "$query_sql" | mysql -h$db_ip -uroot -proot -P$db_port 2>/dev/null -s)
echo "$schema_name.$table_name have $cnt rows."
let "sum=sum+cnt"
#rm -rf test_shard_${db_ip}_${db_port}
done
done
echo $sum

数据量统计脚本

Mysql分库分表导出导入和数据量统计测试的更多相关文章

  1. mysql分库分表,做到永不迁移数据和避免热点

    作者:老顾聊技术   搜云库技术团队  来源:https://www.toutiao.com/i6677459303055491597 一.前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就 ...

  2. 【转】mysql分库分表,数据库分库分表思路

    原文:https://www.cnblogs.com/butterfly100/p/9034281.html 同类参考:[转]数据库的分库分表基本思想 数据库分库分表思路   一. 数据切分 关系型数 ...

  3. MYSQL分库分表和不停机更改表结构

    在MYSQL分库分表中我们一般是基于数据量比较大的时间对mysql数据库一种优化的做法,下面我简单的介绍一下mysql分表与分库的简单做法. .分库分表 很明显,一个主表(也就是很重要的表,例如用户表 ...

  4. mysql分库分表(二)

    mysql分库分表 参考: https://www.cnblogs.com/dongruiha/p/6727783.html https://www.cnblogs.com/oldUncle/p/64 ...

  5. MySQL分库分表的一些技巧

    分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...

  6. Mysql分库分表方案

    Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. m ...

  7. mysql分库 分表

    原文链接:http://www.jianshu.com/p/89311703b320 传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库.分库分库的原因 首先, ...

  8. 【分库、分表】MySQL分库分表方案

    一.Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. ...

  9. Java互联网架构-Mysql分库分表订单生成系统实战分析

    概述 分库分表的必要性 首先我们来了解一下为什么要做分库分表.在我们的业务(web应用)中,关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量.连接数.处理能力等都很有限,数据库本身的“有状态性” ...

随机推荐

  1. MATLAB添加工具箱及无法连接到MathWorks问题

    版本信息:官网下载的MATLAB R2019b 学生版 操作系统:Windows 10 在安装MATLAB时,需要我们自行选择要安装工具箱,如何在已安装MATLAB后添加当初没有选择安装的工具箱呢?第 ...

  2. js 递归总结

    1.根据子id 递归查找所有父级 id  主要用于vue  element 中 Cascader 级联选择器展示 在编辑中回显默认展示 tree 数据 var arr = [{ "label ...

  3. python随用随学20200220-异步IO

    啥是异步IO 众所周知,CPU速度太快,磁盘,网络等IO跟不上. 而程序一旦遇到IO的时候,就需要等IO完成才能进行才能进行下一步的操作. 严重拖累了程序速度. 因为一个IO操作就阻塞了当前线程,导致 ...

  4. package包

    为什么需要package? 为了解决类之间的重名问题.为了方便管理类,合适的类放在合适的包. 怎么用package? 通常是类的第一句非注释性语句. 包名,域名倒着写,加上模块名,并与内部管理类. 命 ...

  5. Linux中screen命令

    screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本.它提 ...

  6. Linux学习Day2:安装RedHat Linux和新手必须掌握的命令

    今天是Linux线上培训的第二天,主要是Linux环境的安装和几个常见命令的学习,具体如下: 一.RHEL7系统的安装 首先是VMware WorkStation 12.0软件的安装,然后是RHEL7 ...

  7. .Net框架的模块代码生成器--其三(dotnet tool指令的参数)

    别人已经写好了一个这种处理指令参数的库,我们这里是使用别人的库来实现规范的指令系统 继续上一篇的gfile或者新建一个.Net Core控制台程序也可以 1.安装nuget包,程序包管理器控制台运行 ...

  8. #《Essential C++》读书笔记# 第一章 C++ 编程基础

    前言 Stanley B.Lippman 先生所著的<C++ Primer>是学习C++的一本非常优秀的教科书,但<C++ Primer>作为一本大部头书,显然不适合所有的初学 ...

  9. iMacros 入门教程-内置变量介绍(5)

    iMacros 的变量类型 1.!VAR0 到 !VAR9,这是系统定义的内置变量,专门给你赋值用 就是程序设定了这几个名字给你赋值 2.内建变量 就是 imacros 设定的特别作用的变量,例如 ! ...

  10. java基础--------arraylist(动态数组)和linkedlist(双向链表)的区别

    arraylist使用数组存储数据,所以这样存储的数据根据索引查询的数据速度快,但是新增或者删除元素时需要设计到位移操作,所以比较慢. linkedlist使用双向链表方式存储数据,每个元素都记录前后 ...