dble 简介与整体架构
dble简介
dble是上海爱可?信息技术股份有限公司基于mysql的?可扩展性的分布式中间件,存在以下?个优势特性:
- 数据?平拆分 随着业务的发展,您可以使?dble来替换原始的单个MySQL实例。
- 兼容Mysql 与MySQL协议兼容,在?多数情况下,您可以?它替换MySQL来为你的应?程序提供新的存储,??需更改任何代码。
- ?可?性 dble服务器可以?作集群,业务不会受到单节点故障的影响。
- SQL?持 ?持SQL 92标准和MySQL??。我们?持复杂的SQL查询,如group by,order by,distinct,join,union,sub-query等等。
- 复杂查询优化 优化复杂查询,包括但不限于全局表连接分?表,ER关系表,?查询,简化选择项等。
- 分布式事务?持 使?两阶段提交的分布式事务。您可以为了性能选择普通模式或者为了数据安全采?XA模式。当然,XA模式依赖于MySQL-5.7的XATransaction,MySQL节点的?可? 性和数据的可靠性。
dble由来
- dble 是基于开源项?MyCat的,江湖人送外号 “MyCat Plus”
- DBLE 定位是企业级开源分布式中间件,专注于MySQL,取消了对其他数据库的?持,对兼容性,复杂查询和分布式事务的?为进?了深?的改进/优化。 当然,还修复了?些bugs。
DBLE项目资料
DBLE官方网站:https://opensource.actionsky.com
可以详细了解DBLE的背景和应用场景,本文不涉及到的细节都可在官方文档获得更细节都信息;对于刚了解到同学,可以以本文为快速入门基础
DBLE官方项目:https://github.com/actiontech/dble
如对源码有兴趣或者需要定制的功能的可以通过源码编译
DBLE下载地址:https://github.com/actiontech/dble/releases
建议下载最新的releases版本,下载tar压缩包即可,如有源码编译需求的,可以下载源码包
快速开始
介绍如何使?dble安装包快速部署并启动?个dble服务,并简单了解dble的使?和管理
1.安装准备
-
两个启动的MySQL实例
dble是通过连接mysql数据库实例来进?数据的存储,所以请?少准备两个正在运?的mysql实例
主机 IP 端口 说明 study01 10.186.65.68 8066/9066 DBLE实例,服务端口8066,管理端口9066 study01 10.186.65.71 5555 MySQL实例M1 study01 10.186.65.72 4444 MySQL实例M2 -
JVM环境
dble是使?java开发的,所以需要启动dble您先需要在机器上安装java版本1.8或以上,并且确保JAVA_HOME参数被正确的设置
[root@study01 ~]# yum install -y java [root@study01 ~]# java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
2.下载并安装
-
通过此链接( https://github.com/actiontech/dble/releases )下载最新版本的安装包
-
解压到指定文件夹中
tar -zxvf dble-3.21.02.0-20210419095547-linux.tar.gz -C /data [root@study01 ~]# cd /data/dble/ [root@study01 dble]# ls algorithm bin conf lib logs version.txt
3.配置文件基础
DBLE的配置文件都在conf目录里面
[root@study01 dble]# cd conf/
[root@study01 conf]# ls
bootstrap.dynamic.cnf dbseq.sql partition-enum.txt sequence_db_conf.properties
bootstrap_template.cnf db_template.xml partition-number-range.txt sharding_template.xml
cacheservice.properties ehcache.xml partition-pattern.txt template_table.sql
cluster_template.cnf log4j2.xml sequence_conf.properties user_template.xml
[root@study01 conf]# cp -a bootstrap_template.cnf bootstrap.cnf
[root@study01 conf]# cp -a cluster_template.cnf cluster.cnf
[root@study01 conf]# cp -a db_template.xml db.xml
[root@study01 conf]# cp -a sharding_template.xml sharding.xml
[root@study01 conf]# cp -a user_template.xml user.xml
-
配置?档列表以及相关对应功能
- cluster.cnf:集群参数配置
- bootstrap.cnf:实例参数配置,包括JVM启动参数,dble性能,定时任务,端?等
- user.xml:dble ??配置 db.xml:数据库相关配置
- sharding.xml:数据拆分相关配置
- log4j.xml:log4j2.xml,配置?志参数
-
重要?志及?件
- /logs/wrapper.log:启动?志,如果dble启动失败,将会有?志出现在这个?件中
- /logs/dble.log:dble?志,?志记录并反馈dble执?过程中的重要信息
4.dble的初始化配置
修改db.xml,找到其中的 instanceM1 和 instanceM2,将数据库信息替换成已经安装启动的 MySQL 实例:
<dbInstance name="instanceM1" url="ip1:3306" user="your_user" password="your_psw" maxCon="1000" minCon="10" primary="true">
<dbInstance name="instanceM2" url="ip2:3306" user="your_user" password="your_psw" maxCon="1000" minCon="10" primary="true"/>
5.启动DBLE
- 启动命令
[root@study01 dble]# ./bin/dble start
Starting dble-server...
- 如果启动失败请使?此命令查看失败的详细原因
tail -f logs/wrapper.log
6.连接DBLE
-
安装MySQL客户端
[root@study01 dble]# yum install -y mysql [root@study01 dble]# mysql -V mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
-
使?mysql客?端直接连接dble管理端?,默认用户
man1
密码654321
mysql -uman1 -p -h127.0.0.1 -P9066
-
您可以使?mysql?样的?式执?以下语句?于在实例上建?虚拟结点对应的schema
create database @@shardingnode=‘dn$1-6‘;
- 在后端MySQL实例M2上查看建好的schema
mysql> show databases; +--------------------+ | Database | +--------------------+ | db_2 | | db_4 | | db_6 |
-
使?mysql客?端直接连接dble服务,默认用户
root
密码123456
[root@study01 dble]# mysql -uroot -p -h127.0.0.1 -P8066
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| testdb |
+----------+
- 您可以使?mysql?样的?式执?以下语句
use testdb;
drop table if exists tb_enum_sharding;
create table if not exists tb_enum_sharding ( id int not null, code int not null, content varchar(250) not null, primary key(id) )engine=innodb charset=utf8;
insert into tb_enum_sharding values(1,10000,‘1‘),(2,10010,‘2‘),(3,10000,‘3‘),(4,10010,‘4‘);
-
- 管理端口只能接受DBLE的管理命令,这里不做展开
- 服务端口即DBLE的业务访问端口,可以接受SQL语句