DBLE 三分片的数据拆分场景

1、准备后端 MySQL 节点

DBLE 的架构其实很好理解,DBLE 是代理中间件,DBLE 后面是物理数据库。对于应用来说,访问的都是 DBLE,不会接触到后端的数据库。

部署架构表如下图:

服务 IP:Port 说明
DBLE 10.186.65.68:8066 DBLE实例,连接数据库时,连接此IP:Port
MySQL A 10.186.65.71:1111 物理数据库实例A,真正存储数据的数据库
MySQL B 10.186.65.72:1111 物理数据库实例B,A,B为主从关系

2、修改 sharding.xml 配置文件

<?xml version="1.0"?>
<!DOCTYPE dble:sharding SYSTEM "sharding.dtd">
<dble:sharding xmlns:dble="http://dble.cloud/" version="4.0"><schema name="testdb" sqlMaxLimit="-1"><shardingTable name="account" shardingNode="dn_01,dn_02,dn_03" sqlMaxLimit="-1" shardingColumn="id" function="sharding-by-hash"></shardingTable></schema><shardingNode name="dn_01" dbGroup="dh-mysql-dble" database="dh_dn_01"></shardingNode><shardingNode name="dn_03" dbGroup="dh-mysql-dble" database="dh_dn_03"></shardingNode><shardingNode name="dn_02" dbGroup="dh-mysql-dble" database="dh_dn_02"></shardingNode><function name="sharding-by-hash" class="Hash"><property name="partitionCount">3</property><property name="partitionLength">100</property></function><function name="default_mod_two" class="Hash"><property name="partitionCount">2</property><property name="partitionLength">1</property></function>
</dble:sharding>

参数说明

  • schema 逻辑数据库信息,此数据库为逻辑数据库

    1. schema name 逻辑库名,程序连接的库名;name 与 user.xml 中 schemas 对应;
    2. shardingTable name 表名,物理数据库中表名程序连接的表名;
    3. shardingNode 表存储到哪些节点,多个节点用逗号分隔;
    4. shardingColumn 分片字段;
    5. function 分片规则,引⽤ function 节中的拆分规则名称那个;
  • shardingNode 分片节点
    1. shardingNode name 分片节点名称
    2. dbGroup shardingNode 对应的数据库组,参考 db.xml 中的 dbGroup 名称,可以配置单个或多个使⽤,例如"dh,dh$0-5"
    3. databaseshardingNode 对应的存在于 mysql 物理实例中的 schema, 可以配置单个或多个使⽤,例如"db,db$0-5"
  • function 拆分算法定义
    1. name 定义分区算法名,在分区规则定义中被引⽤
    2. class 拆分算法,指定分区算法实现类
    3. ⽬前,已⽀持的分区算法有: hash, stringhash, enum, numberrange, patternrange, date,jumpstringhash
    4. property name部分⽤于指定相应分区算法的参数,partitionCount指定分区的区间数,partitionLength指定各区间⻓度

3、修改 db.xml 配置文件

<?xml version="1.0"?>
<!DOCTYPE dble:db SYSTEM "db.dtd">
<dble:db xmlns:dble="http://dble.cloud/" version="4.0"><dbGroup name="dh-mysql-dble" rwSplitMode="0" delayThreshold="-1"><heartbeat timeout="0" errorRetryCount="0">show slave status</heartbeat><dbInstance name="10.186.65.71-1111-dh-1" url="10.186.65.71:1111" user="dble" password="dble" maxCon="100" minCon="10" primary="true" readWeight="0"></dbInstance><dbInstance name="10.186.65.72-1111-dh-2" url="10.186.65.72:1111" user="dble" password="dble" maxCon="100" minCon="10" primary="false" readWeight="0"></dbInstance></dbGroup>
</dble:db>

参数说明

包含具体的数据库组和实例配置,可以配置多组,每组可以配置多个实例

  • dbGroup 数据库组

    1. name 数据库组名
    2. rwSplitMode 在进⾏读负载均衡的时候会根据这个配置 进⾏0:不做均衡,直接分发到主实例,从实 例将被忽略,不会尝试建⽴连接池,但会有 ⼼跳连接 1:读操作在所有从实例中均衡,当所有 从实例都不可⽤时,下发语句会报错。 2:读操作在所有实例中均衡。 3:读操作在所有从实例中均衡,当所有 从实例都不可⽤时,将语句发往主实例。
    3. delayThreshold 指定主从延迟阀值,默认-1,表⽰不会进⾏延迟检测
  • heartbeat 该配置会⽤于进⾏ mysql 实例状态的判断
    1. timeout ⼼跳超时阈值,默认0秒
    2. errorRetryCount ⼼跳失败后的尝试次数
  • dbInstance 后端 mysql 实例连接信息
    1. name 写节点名称,url 写节点地址ip:port,user 写节点⽤⼾,password 写节点⽤⼾密码,minCon 空闲时保有最⼩连接数,maxCon 最⼤连接数,primary 主实例需要配置成true,readWeight 节点权重(负载均衡时候使⽤),disabled 标记该实例不可⽤

4、修改 user.xml 配置文件

<dble:user xmlns:dble="http://dble.cloud/" version="4.0"><managerUser name="man1" password="654321" maxCon="100"/><shardingUser name="app" password="app" schemas="testdb" readOnly="false" maxCon="0"/>
</dble:user>

参数说明

  • managerUser(管理⽤⼾)
  • shardingUser(分库⽤⼾)
  • rwSplitUser(读写⽤⼾)

5、建库

在DBLE管理端口上,创建后端物理库

[root@study01 logs]# mysql -uman1 -p -h127.0.0.1 -P9066
Enter password: MySQL [(none)]> create database @@shardingnode='dn_0$1-3';
Query OK, 1 row affected (0.03 sec)

5、建表

在DBLE服务端口上,创建表;

mysql -uroot -p -h127.0.0.1 -P8066use testdb;create table account(id int, addr varchar(20));

6、导入数据

[root@study01 tmp]# cat acc.txt
5,shanghai
155,beijing
255,shenzhen
355,guanzhou
455,tianjin
555,kunming
655,wuhanmysql> load data local infile '/tmp/acc.txt' into table account fields terminated by ',';

7、登录后端服务器查看结果

mysql> select * from dh_dn_01.account;
+------+----------+
| id   | name     |
+------+----------+
|    5 | shanghai |
|  355 | guanzhou |
|  655 | wuhan    |
+------+----------+mysql> select * from dh_dn_02.account;
+------+---------+
| id   | name    |
+------+---------+
|  155 | beijing |
|  455 | tianjin |
+------+---------+mysql> select * from dh_dn_03.account;
+------+----------+
| id   | name     |
+------+----------+
|  255 | shenzhen |
|  555 | kunming  |
+------+----------+

因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:easydb.net 微信公众号:easydb 关注我,不走丢!

DBLE分库分表示例相关推荐

  1. DBLE分库分表实战

    环境: DBLE 2.19.03.0 OS版本: CentOS Linux release 7.6.1810 (Core) IP:  192.168.20.10/24 MySQL版本: MySQL-社 ...

  2. MySQL:互联网公司常用分库分表方案汇总!

    本文来源: cnblogs.com/littlecharacter/p/9342129.html 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数 ...

  3. 分库分表介绍和Sharding-JDBC快速入门

    1.分库分表介绍 垂直分表:可以把一个宽表的字段按访问频次.是否是大字段的原则拆分为多个表,这样既能使业务清晰,还能提升部分性能.拆分后,尽量从业务角度避免联查,否则性能方面将得不偿失. 比如我们可以 ...

  4. 互联网公司常用分库分表方案汇总

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 来源:rrd.me/g9zP3 一.数据库瓶颈 不管是I ...

  5. mysql多字段分库分表基因码_一文学会常用 MySQL 分库分表方案

    来源 | https://www.cnblogs.com/littlecharacter/p/9342129.html 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增 ...

  6. MyCat(三)分库分表

    1.简介 分库:将原本一个数据库中的数据,拆分到多个数据库进行保存,然后我们通过访问一个数据库,在MyCat中成为逻辑库. 分表:如果一个数据表的数据量已经超过千万,那么查询速度会比较慢,这时候可以考 ...

  7. 数据库之互联网常用分库分表方案

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  8. 【数据库与事务系列】分库分表中间件

    前面讲了利用mybatis插件进行多数据源切换和分表的方案,但是对业务侵入性较强,当然给予mybatis-plus的对业务侵入性还好,但是支持的策略有限.场景有限. 所以业界诞生了很多分库分表中间件来 ...

  9. 数据库之分库分表-垂直?水平?

    一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...

  10. MySQL:常用分库分表方法

    目录 一.数据库瓶颈 1.IO瓶颈 2.CPU瓶颈 二.分库分表 1.水平分库 2.水平分表 3.垂直分库 4.垂直分表 三.分库分表工具 四.分库分表步骤 1.非partition key的查询问题 ...

最新文章

  1. Grape和Sinatra结合使用
  2. 转 awk 使用方法
  3. Flutter开发之认识Flutter(二)
  4. [MySQL]经常无故崩溃amd.dll , boot1.exe病毒
  5. 【记录】利用jar包制作docker镜像
  6. MySQL数据库如何管理与维护_MySQL安全管理、数据库维护及改善性能
  7. pytorch Sampler
  8. 解决python安装包无法正常安装问题
  9. proteus中ISIS软件的各种器件的添加
  10. 小卡机器人积木教程_一盒56种玩法!这套智能积木机器人秒杀家中99%的益智玩具!| 新年礼物...
  11. java删除浏览器cookies_清除浏览器cookie
  12. Altium Designer 21 实例贴片0603封装的创建
  13. 拼多多批发是什么?常见的问题有哪些?
  14. 云呐|国有资产管理信息系统,资产管理信息系统功能描述
  15. 冬季无锡旅游攻略,无锡太湖、鼋头渚之游小记!!!!
  16. 【计算机体系结构量化与研究方法笔记】
  17. PMP第二轮复习:整本书内容融会贯通
  18. Android电视直播 v5.6,龙龙直播app下载|龙龙直播apk2019官方版下载 v5.6.1 安卓版 - 数码资源网...
  19. XC3071充电IC(耐高压,带OVP)
  20. 几种软件开发方法对比

热门文章

  1. 解决python osdir() 函数 文件夹排序问题
  2. 自学自用 = B站(操作系统_清华大学(向勇、陈渝)) 未完待续。。(转载)
  3. 如何有效降低网站跳出率
  4. 【LeetCode】求众数(四种方法)
  5. java io 系列(转载skywang12345)
  6. 详解Docker的网络模式之host模式(host网络模式)
  7. STM32F1系列与STM32F4系列的GPIO
  8. 2022大淘宝技术工程师推荐书单
  9. 【LKM】make 错误:make -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/xxx
  10. 清华大学计算机夏文韬,太猛了--南京外国语学校2007届高三毕业生去向