
PostgreSQL 18.6 安装记录
一、环境 项值主机192.168.6.98系统CentOS Stream 9(x86\64)SELinuxEnforcing防火墙firewalld(active)安装方式PGDG
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目录下。
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>
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>
sharding.xml:分库分表规则配置(非必须)如果只使用读写分离,可以保留此文件中的空配置或默认内容,甚至可以不创建此文件。DBLE 会依据 user.xml 中用户类型决定是否加载分片规则。
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,我们之前已验证。
sharding.xml:分库分表规则在纯读写分离场景下,此文件不需要配置,可以直接删除或保留默认空配置。因为rwSplitUser会指导DBLE跳过加载此文件。
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)的配置文件结构和特性可能存在差异,配置前请确认官方文档
评论 0