-
DBLE 版本:3.23.08.0
-
依赖环境:JDK 1.8+ (推荐使用 1.8.0_202 及以上版本)
-
本文示例配置:
-
DBLE 服务地址:
127.0.0.1 -
管理端口:
9066(用于管理) -
服务端口:
8066(用于业务连接) -
MySQL 主库:
172.28.108.60:3306 -
MySQL 从库:
172.28.108.63:3306
-
安装前请确保后端 MySQL 实例已完成主从复制配置,且复制状态正常。
二、安装与启动
-
下载安装包 从官方 GitHub 仓库下载 3.23.08.0 版本的 tar 压缩包:
wget https://github.com/actiontech/dble/releases/download/3.23.08.0/dble-3.23.08.0.tar.gz tar -xzvf dble-3.23.08.0.tar.gz -C /usr/local/ cd /usr/local/dble
-
基本参数检查 在启动前,建议确认
conf/bootstrap.cnf中 JVM 内存分配和基础端口是否合理。对于生产环境,建议调整-Xmx和-Xms参数。 -
启动 DBLE
./bin/dble start启动后,可通过以下命令检查服务状态和端口监听:
./bin/dble status netstat -tlnp | grep -E '8066|9066'
三、核心配置文件详解
DBLE 3.23.08.0 版本的配置由 conf 目录下的多个 XML 文件共同完成。以下是实现读写分离必备的三个核心文件及其配置要点。
配置文件均位于
$DBLE_HOME/conf目录下。
1. db.xml:后端数据源配置
此文件定义 DBLE 连接后端 MySQL 实例的连接池信息。rwSplitMode 参数控制读写分离的路由策略。
-
rwSplitMode="3":读操作尽量在所有从实例中均衡(当从库不可用时,会降级到主库)。
<dble:db xmlns:dble="http://dble.cloud/" version="4.0"> <!-- 主从实例配置在同一 dbGroup 中 --> <dbGroup name="db_dble" rwSplitMode="3" delayThreshold="30"> <!-- 心跳检测语句,用于监控后端实例健康状态 --> <heartbeat>show slave status</heartbeat> <!-- 主库实例配置 --> <dbInstance name="instanceM1" url="172.28.108.60:3306" user="root" password="X" maxCon="1000" minCon="30" primary="true" readWeight="1"/> <!-- 从库实例配置 --> <dbInstance name="instanceS1" url="172.28.108.63:3306" user="root" password="X" maxCon="1000" minCon="30" primary="false" readWeight="10" /> </dbGroup> </dble:db>
2. user.xml:用户访问权限配置
此文件定义 DBLE 的访问用户。使用 rwSplitUser 可以让该用户仅拥有读写分离权限,而无需加载分库分表功能(sharding.xml),这与 3.20.10.0 版本及以后引入的纯读写分离特性一致。
<dble:user xmlns:dble="http://dble.cloud/" version="4.0"> <!-- 管理端用户,用于连接 9066 管理端口 --> <managerUser name="admin" password="123456" maxCon="200"/> <!-- 读写分离专用用户,无需配置 schemas,直接指向 dbGroup --> <rwSplitUser name="rwuser" password="123456" dbGroup="db_dble" maxCon="20"/> </dble:user>
3. sharding.xml:分库分表规则配置(非必须)
如果只使用读写分离,可以保留此文件中的空配置或默认内容,甚至可以不创建此文件。DBLE 会依据 user.xml 中用户类型决定是否加载分片规则。
4.bootstrap.cnf:JVM与系统级参数
这是您之前提醒我的关键文件,必须配置fakeMySQLVersion与后端MySQL版本兼容。
# 关键配置:伪造的MySQL版本,必须 <= 后端MySQL最低版本 -DfakeMySQLVersion=5.7.39 # 基础端口配置 -DserverPort=8066 # 业务端口 -DmanagerPort=9066 # 管理端口 # 内存配置(根据实际调整) -Xmx4G -Xms1G # 连接超时相关(虽然socketTimeout无法修改,但sqlExecuteTimeout可调) -DsqlExecuteTimeout=900 # SQL执行总超时,单位秒 # 其他保留默认...
配置说明:
-
fakeMySQLVersion=5.7.39:必须与您的实际MySQL版本一致或更低,否则DBLE启动时会报版本不兼容错误。 -
这个文件不需要也不支持添加
db.socketTimeout或backSocketSoTimeout,我们之前已验证。
5. sharding.xml:分库分表规则
在纯读写分离场景下,此文件不需要配置,可以直接删除或保留默认空配置。因为rwSplitUser会指导DBLE跳过加载此文件。
6. cluster.cnf:集群协调配置
如果使用单机模式(不依赖ZooKeeper),保持默认即可:
clusterEnable=false
四、应用连接与验证
完成配置后,重启 DBLE 使配置生效。
./bin/dble restart
-
连接测试
mysql -urwuser -p123456 -h127.0.0.1 -P8066 -
验证读写分离 执行 SQL 后,分别在后端 MySQL 主从库上开启
general_log进行验证:-- 在主从库上分别执行,检查 SQL 执行记录 SET GLOBAL general_log = 'ON'; SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 10;
-
DML 语句 (INSERT/UPDATE/DELETE):应只在主库
172.28.108.60上出现。 -
查询语句 (SELECT):应分发到从库
172.28.108.63上,并遵循readWeight设定的权重(示例中从库权重为 10)。
-
五、关键注意事项
-
配置参数不可随意修改:根据之前的排查,
db.xml中的<dbInstance>标签不支持添加connectionProperties、<property>或在url中拼接socketTimeout等参数。错误的修改会导致 DBLE 无法启动,请严格参考上述示例配置。 -
超时问题:如遇到存储过程或复杂查询执行超时,建议优先优化 SQL 或调整 MySQL 服务端的
net_read_timeout、net_write_timeout参数,而不是试图修改 DBLE 配置文件。 -
版本差异:不同 DBLE 版本(如
v3.20.10.0与v3.23.08.0)的配置文件结构和特性可能存在差异,配置前请确认官方文档

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏