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

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

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

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

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

 

数据库分片前的准备

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

如何选择分区键

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

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

 如何存储无需分片的表

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

使用额外的节点统一存储

如何在节点上部署分片

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

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

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

如何分配分片中的数据

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

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

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

如何生成全局唯一ID

 

数据库分片演示

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

分片工具:

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

 数据库操作:

服务器192.168.3.102

下载好安装包

解压

查看oneproxy的启动脚本

修改为当前目录

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

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

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

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

 

服务器192.168.3.100

创建用户

 创建数据库orders并授权

服务器192.168.3.101

服务器192.168.3.102

修改数据库名

 现在运行一下oneproxy

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

 通过oneproxy加密password

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

根据自身情况进行配置

查看默认配置的分区表

 

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

分区表表名 订单表

分区键 

分区键类型

分区方式

分片组

 

另外一张表 订单商品表

 分类表

服务器192.168.3.100

创建三张上面配置的表

 服务器192.168.3.101

服务器192.168.3.102

重启oneproxy

进入到oneproxy,查看配置情况

查看启动情况 

写一个测试脚本进行测试

 起始order_id

每insert操作order_id默认+1

完成表的插入

运行脚本

“Ctrl+C” 停止,

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值