DBLE快速开始
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语句
因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:easydb.net
微信公众号:easydb
关注我,不走丢!
因为有悔,所以披星戴月;因为有梦,所以奋不顾身!
个人博客首发:easydb.net
微信公众号:easydb
关注我,不走丢!