DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus”;以其简单稳定,持续维护,良好的社区环境和广大的群众基础得到了社区的大力支持;

环境准备

DBLE项目资料

DBLE官方网站:https://opensource.actionsky.com
可以详细了解DBLE的背景和应用场景,本文不涉及到的细节都可在官方文档获得更细节都信息;对于刚了解到同学,可以以本文为快速入门基础DBLE官方项目:https://github.com/actiontech/dble
如对源码有兴趣或者需要定制的功能的可以通过源码编译DBLE下载地址:https://github.com/actiontech/dble/releases
建议下载最新的releases版本,下载tar压缩包即可,如有源码编译需求的,可以下载源码包

安装JDK环境

DBLE是使用java开发的,所以需要启动dble需要先在机器上安装java版本1.8或以上,并且确保JAVA_HOME参数被正确的设置;

安装DBLE

DBLE的安装其实只要解压下载的目录就可以了,非常简单。

  • 通过此连接下载最新安装包 github.com/actiontech/…

(注意:我们这边下载的是2.8版本的)

  • 解压并安装dble到指定文件夹中
mkdir -p $working_dir
cd $working_dir
tar -xvf actiontech-dble-$version.tar.gz
cd $working_dir/dble/conf
mv schema_template.xml schema.xml
mv rule_template.xml rule.xmlmv server_template.xml server.xml

应用场景一:数据拆分

scheam.xml

自行修改数据库地址,用户名,密码即可。

<?xml version="1.0"?>
<!DOCTYPE dble:schema SYSTEM "schema.dtd">
<dble:schema xmlns:dble="http://dble.cloud/"><schema name="testdb"><table name="users" primaryKey="ID"  dataNode="dn1,dn2" rule="sharding-by-mod2" /></schema><!-- 分片配置 --><dataNode name="dn1" dataHost="Group1" database="testdb"/><dataNode name="dn2" dataHost="Group2" database="testdb"/><!-- 物理数据库配置 --><dataHost name="Group1" maxCon="1000" minCon="10" balance="0" switchType="1" slaveThreshold="100"><heartbeat>show slave status</heartbeat><writeHost host="MySQLA" url="172.16.3.1:14014" user="test" password="password"/></dataHost><dataHost name="Group2" maxCon="1000" minCon="10" balance="0" switchType="1" slaveThreshold="100"><heartbeat>show slave status</heartbeat><writeHost host="MySQLA" url="172.16.3.1:14015" user="test" password="password"/></dataHost>
</dble:schema>

rule.xml

    <tableRule name="sharding-by-mod2"><rule><columns>id</columns><algorithm>hashmod2</algorithm></rule></tableRule><function name="hashmod2" class="Hash"><property name="partitionCount">2</property><property name="partitionLength">1</property></function>

验证配置生效

## 进入DBLE安装目录,执行start命令
./bin/dble start
tail -f logs/wrapper.log查看启动日志

通过DBLE流量入口8066登陆数据库

mysql  -P8066 -h 127.0.0.1 -utest -ppassword

插入两条用户记录,并获取DBLE侧的查询记录

mysql> insert into users(id,user) values(1,"zhangsan");
Query OK, 1 row affected (0.09 sec)
mysql> insert into users(id,user) values(2,"lisi");
Query OK, 1 row affected (0.09 sec)mysql> explain select * from users;
+-----------+----------+---------------------+
| DATA_NODE | TYPE     | SQL/REF             |
+-----------+----------+---------------------+
| dn1       | BASE SQL | select * from users |
| dn2       | BASE SQL | select * from users |
+-----------+----------+---------------------+
2 rows in set (0.00 sec)mysql> select * from users;
+----+----------+
| id | user     |
+----+----------+
|  2 | lisi     |
|  1 | zhangsan |
+----+----------+
2 rows in set (0.01 sec)

获取MySQLA和MySQLB的记录

# mysql  -P14014 -h 127.0.0.1 -utest -ppassword
mysql> select * from users;
+----+----------+
| id | user     |
+----+----------+
|  2 | lisi     |
+----+----------+
1 rows in set (0.01 sec)# mysql  -P14015 -h 127.0.0.1 -utest -ppassword
mysql> select * from users;
+----+----------+
| id | user     |
+----+----------+
|  1 | zhangsan |
+----+----------+
1 rows in set (0.01 sec)

从上面的验证流程,往DBLE插入的数据,会按照取模的方式下发到真实的物理库,来实现数据库的自动分片;同时通过DBLE下发的查询会被DBLE自动下发给实际的物理库,合并返回给客户端,可以通过explain执行计划观察到下发的实际下发给物理库的SQL语句

应用场景二:读写分离

搭建主从数据库

通过docker搭建,可以推荐一个链接,但是还是有个坑,

配置schema.xml

一定要记得配置table,要不然启动会报错。

验证

通过mysql命令下发查询sql发现读操作都在slave机器上,写操作都在master机器中。

入坑指南

  1. 读写分离的时候一定要在schema.xml中配置table,否则启动dble会报错

  1. 在新的机器上如果没有安装mysql,会报没有mysql命令,需要在另外一台安装了mysql的机器上进行dble的sql下发和管理

  2. dble启动可能会因为内存不足,启动失败,建议买一个服务器自己搭建,自带docker。

分布式数据库DBLE 快速入门相关推荐

  1. 开源分布式中间件 DBLE 快速入门指南

    2019独角兽企业重金招聘Python工程师标准>>> 环境准备 DBLE项目资料 DBLE官方网站:https://opensource.actionsky.com 可以详细了解D ...

  2. 视频教程-MySQL数据库应用快速入门培训课程-MySQL

    MySQL数据库应用快速入门培训课程 5年JAVA 开发经验,2年系统架构经验,PMP项目管理资格认证,ACP 项目管理认证,工作过程同时参与性能.自动化测试工作,负责测试部门的测试架构,项目服务器运 ...

  3. 分布式锁-Redisson快速入门

    分布式锁-Redisson快速入门 一.引入依赖 二.配置Redisson客户端 三.使用Redisson的分布式锁 一.引入依赖 <dependency><groupId>o ...

  4. 【TDengine】 TDengine时序数据库的快速入门总结

    本文记录一些有效文档地址,其中很多不乏是官方文档的地址. 主要目的是快速定位,节省找文档的时间, 避免找到参差不齐的资料. 文章目录 时序数据库选型: 建库建表快速入门语句: 建表原则 TDengin ...

  5. git语言包安装_Git分布式版本管理系统快速入门指南

    为什么要使用版本管理系统 无论有没有使用过专业化工具,每个人都或多或少地有版本管理的需求.我们在做论文.写报告或者设计方案时,因为难以避免的不断改动,总会形成很多个不同的版本,我们可能会用" ...

  6. SQLite3数据库的快速入门菜鸟教程

    SQLite3是一个轻量级嵌入式数据库,其主要有以下的特点: 1.零配置无需安装和管理配置: 2.储存在单一磁盘文件中: 3.数据库文件可在不同字节序的机器自由共享: 4.比目前流行的大多数数据库对数 ...

  7. 从2021分布式数据库开发者大会里,我们找出了这8个关键词

    历经近12个小时酣畅淋漓的在线直播,DC 2021分布式数据库开发者大会于1月6日晚上21:00圆满结束.本次大会以"数聚未来"为主题,由中国电子技术标准化研究院指导.CSDN主办 ...

  8. Celery 分布式任务队列快速入门

    Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置cel ...

  9. apache2.4.9 开启path_info访问_【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)...

    新建项目 打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框: 注意我们的选择项: 运行平台:.NET FrameWork 4.5 项目模板:ASP.NET Web Ap ...

  10. Spread for Windows Forms快速入门(10)---绑定到数据库

    下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库. 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. ...

最新文章

  1. java.lang.OutOfMemoryError: Java heap space错误及...
  2. 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...
  3. android 注解点击事件,android click事件注解
  4. Key_EXTI_Config:神舟IV
  5. python绘制如下图形、小三角形边长20_OpenGL学习脚印_ 绘制移动三角形 - 王定桥的专栏.pdf...
  6. LAMP_PHP配置
  7. 6.看板方法---价值流映射
  8. Android视频会议--彩蛋
  9. 自动驾驶中ROS操作系统的重要性
  10. 图片转化成矩阵,灰度处理,黑白对调--ByMatlab
  11. 尺度不变特征转换(Scale-invariant feature transform 或 SIFT)
  12. angular 路由快照和 aggrid 结合后,导致aggrid 表头消失的问题
  13. 大数据时代,你应该具备的大数据思维
  14. Photoshop Elements 2023 for mac/win(PS简化版2023)​
  15. JavaWeb核心技术系列教程(23)——JSP标签
  16. html转换pdf java_java转pdf(html转为pdf)
  17. uniapp教室实验室会议室预约app源码
  18. 毕业后距离就这样慢慢拉开的
  19. 微信小程序-编写图标的方法
  20. java创建user类在哪里_java中创建对象有哪几种方式

热门文章

  1. 【程序员节】1024程序员节专属程序员的浪漫
  2. TotalCommander查看文件夹大小和文件夹排序
  3. 百度指数批量查询器,百度指数
  4. 计算机远程协助是什么,Windows7系统下远程协助和远程桌面有什么区别?
  5. 洛谷—— P1069 细胞分裂
  6. C++关于函数声明定义的位置
  7. 使用Fiddler修改百度的Logo
  8. html上下两个箭头符号怎么打出来,往返双箭头符号怎么打
  9. 4.2 metasploit 开发 exploit
  10. 《奇迹的超级速读法》一书中集中注意力的训练方法