DBLE快速开始

dble 简介与整体架构

dble简介

dble是上海爱可⽣信息技术股份有限公司基于mysql的⾼可扩展性的分布式中间件,存在以下⼏个优势特性:

  1. 数据⽔平拆分 随着业务的发展,您可以使⽤dble来替换原始的单个MySQL实例。
  2. 兼容Mysql 与MySQL协议兼容,在⼤多数情况下,您可以⽤它替换MySQL来为你的应⽤程序提供新的存储,⽽⽆需更改任何代码。
  3. ⾼可⽤性 dble服务器可以⽤作集群,业务不会受到单节点故障的影响。
  4. SQL⽀持 ⽀持SQL 92标准和MySQL⽅⾔。我们⽀持复杂的SQL查询,如group by,order by,distinct,join,union,sub-query等等。
  5. 复杂查询优化 优化复杂查询,包括但不限于全局表连接分⽚表,ER关系表,⼦查询,简化选择项等。
  6. 分布式事务⽀持 使⽤两阶段提交的分布式事务。您可以为了性能选择普通模式或者为了数据安全采⽤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 关注我,不走丢!
原文地址:https://www.cnblogs.com/easydb/p/14753642.html