MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表

由于数据库数据越来越多,之前采用的主从复制的方式来完成读写分离,但是渐渐的主服务器已经不能很好的完成写操作的功能了。现在就只能采取分库分表来解决写操作负载。

把一个实例中的多个数据库拆分到不同的实例

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第1张图片

把一个库中的表分离到不同的数据库中

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第2张图片

以上两种方式如果还没有解决那就只能对数据库进行分片处理

 

数据库分片前的准备

对一个库中的相关表进行水平拆分到不同实例的数据库中

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第3张图片

如何选择分区键

分区键要能尽量避免跨分片查询的发送

分区键要能尽量使各个分片中的数据平均

 如何存储无需分片的表

每个分片中存储一份相同的数据

使用额外的节点统一存储

如何在节点上部署分片

每个分片使用单一数据库,并且数据库名也相同

将多个分片表存储在一个数据库中,并在表名上加入分片号后缀

在一个节点中部署多个数据库,每个数据库包含一个分片

如何分配分片中的数据

按分区键的Hash值取模来分配分片数据

按分区键的范围来分配分片数据

利用分区键和分片的映射表来分配分片数据

如何生成全局唯一ID
MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第4张图片

 

数据库分片演示

以下是我们要演示的业务场景

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第5张图片

分片工具:

 oneProxyp 安装和配置(因为是未开源的,所以只需要解压之后直接安装即可)

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第6张图片

 数据库操作:

服务器192.168.3.102

下载好安装包

解压

查看oneproxy的启动脚本

修改为当前目录

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第7张图片

我们可以看到查看demo.sh里面只是存放了一个参数

进入到conf文件夹下修改proxy.conf

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第8张图片

修改MySQL版本号 、ip、以及 控制的其他数据库节点

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第9张图片

保留proxy-user-list,删掉proxy-user-group 

 MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第10张图片

服务器192.168.3.100

创建用户

 创建数据库orders并授权

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第11张图片

服务器192.168.3.101

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第12张图片

服务器192.168.3.102

修改数据库名

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第13张图片

 现在运行一下oneproxy

ps -ef 是用标准的格式显示进程的

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第14张图片

 通过oneproxy加密password

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第15张图片

将上面生成的加密密码copy过来

根据自身情况进行配置

查看默认配置的分区表

 MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第16张图片

打开我们自己定义的分区表

分区表表名 订单表

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第17张图片

分区键 

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第18张图片

分区键类型

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第19张图片

分区方式

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第20张图片

分片组

 MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第21张图片

另外一张表 订单商品表

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第22张图片

 分类表

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第23张图片

服务器192.168.3.100

创建三张上面配置的表

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第24张图片

 服务器192.168.3.101

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第25张图片

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第26张图片

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第27张图片

服务器192.168.3.102

重启oneproxy

进入到oneproxy,查看配置情况

查看启动情况 

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第28张图片

写一个测试脚本进行测试

 起始order_id

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第29张图片

每insert操作order_id默认+1

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第30张图片

完成表的插入

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第31张图片

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第32张图片

运行脚本

“Ctrl+C” 停止,

在三个服务器中进行汇总,看汇总数据是否 一致

MySql的高可用之路--9.数据库分库分表及oneproxy实现分库分表_第33张图片

你可能感兴趣的:(数据库)