分布式数据库DBLE 快速入门
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机器中。
入坑指南
- 读写分离的时候一定要在schema.xml中配置table,否则启动dble会报错
在新的机器上如果没有安装mysql,会报没有mysql命令,需要在另外一台安装了mysql的机器上进行dble的sql下发和管理
dble启动可能会因为内存不足,启动失败,建议买一个服务器自己搭建,自带docker。
分布式数据库DBLE 快速入门相关推荐
- 开源分布式中间件 DBLE 快速入门指南
2019独角兽企业重金招聘Python工程师标准>>> 环境准备 DBLE项目资料 DBLE官方网站:https://opensource.actionsky.com 可以详细了解D ...
- 视频教程-MySQL数据库应用快速入门培训课程-MySQL
MySQL数据库应用快速入门培训课程 5年JAVA 开发经验,2年系统架构经验,PMP项目管理资格认证,ACP 项目管理认证,工作过程同时参与性能.自动化测试工作,负责测试部门的测试架构,项目服务器运 ...
- 分布式锁-Redisson快速入门
分布式锁-Redisson快速入门 一.引入依赖 二.配置Redisson客户端 三.使用Redisson的分布式锁 一.引入依赖 <dependency><groupId>o ...
- 【TDengine】 TDengine时序数据库的快速入门总结
本文记录一些有效文档地址,其中很多不乏是官方文档的地址. 主要目的是快速定位,节省找文档的时间, 避免找到参差不齐的资料. 文章目录 时序数据库选型: 建库建表快速入门语句: 建表原则 TDengin ...
- git语言包安装_Git分布式版本管理系统快速入门指南
为什么要使用版本管理系统 无论有没有使用过专业化工具,每个人都或多或少地有版本管理的需求.我们在做论文.写报告或者设计方案时,因为难以避免的不断改动,总会形成很多个不同的版本,我们可能会用" ...
- SQLite3数据库的快速入门菜鸟教程
SQLite3是一个轻量级嵌入式数据库,其主要有以下的特点: 1.零配置无需安装和管理配置: 2.储存在单一磁盘文件中: 3.数据库文件可在不同字节序的机器自由共享: 4.比目前流行的大多数数据库对数 ...
- 从2021分布式数据库开发者大会里,我们找出了这8个关键词
历经近12个小时酣畅淋漓的在线直播,DC 2021分布式数据库开发者大会于1月6日晚上21:00圆满结束.本次大会以"数聚未来"为主题,由中国电子技术标准化研究院指导.CSDN主办 ...
- Celery 分布式任务队列快速入门
Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置cel ...
- apache2.4.9 开启path_info访问_【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)...
新建项目 打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框: 注意我们的选择项: 运行平台:.NET FrameWork 4.5 项目模板:ASP.NET Web Ap ...
- Spread for Windows Forms快速入门(10)---绑定到数据库
下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库. 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. ...
最新文章
- java.lang.OutOfMemoryError: Java heap space错误及...
- 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...
- android 注解点击事件,android click事件注解
- Key_EXTI_Config:神舟IV
- python绘制如下图形、小三角形边长20_OpenGL学习脚印_ 绘制移动三角形 - 王定桥的专栏.pdf...
- LAMP_PHP配置
- 6.看板方法---价值流映射
- Android视频会议--彩蛋
- 自动驾驶中ROS操作系统的重要性
- 图片转化成矩阵,灰度处理,黑白对调--ByMatlab
- 尺度不变特征转换(Scale-invariant feature transform 或 SIFT)
- angular 路由快照和 aggrid 结合后,导致aggrid 表头消失的问题
- 大数据时代,你应该具备的大数据思维
- Photoshop Elements 2023 for mac/win(PS简化版2023)​
- JavaWeb核心技术系列教程(23)——JSP标签
- html转换pdf java_java转pdf(html转为pdf)
- uniapp教室实验室会议室预约app源码
- 毕业后距离就这样慢慢拉开的
- 微信小程序-编写图标的方法
- java创建user类在哪里_java中创建对象有哪几种方式