在您提供的 ShardingSphere-Proxy 配置中,数据库加载源的指定是通过 dataSources
部分和 rules
部分的 !READWRITE_SPLITTING
规则共同完成的。以下是关键解析:
1. 数据源定义(dataSources
)
配置中明确定义了两个数据源:
- 写数据源 (
write_ds
):指向主库10.19.83.26:9906
- 读数据源 (
read_ds_0
):指向从库10.19.83.27:9906
每个数据源均包含完整的连接信息(URL、用户名、密码、连接池参数等)。
2. 读写分离规则(!READWRITE_SPLITTING
)
通过标签 !READWRITE_SPLITTING
声明读写分离规则,关键配置如下:
rules:
- !READWRITE_SPLITTING
dataSourceGroups:
readwrite_ds: # 逻辑数据源组名称
writeDataSourceName: write_ds # 绑定写操作的数据源
readDataSourceNames:
- read_ds_0 # 绑定读操作的数据源列表
loadBalancerName: random # 读负载均衡策略
loadBalancers:
random:
type: RANDOM # 随机选择读库
3. 数据库加载源的生效逻辑
- 写操作:所有 SQL 写入请求会自动路由到
write_ds
(主库)。 - 读操作:读请求会通过
RANDOM
策略从read_ds_0
(从库)中选择一个执行。 - 逻辑数据库名:顶层配置的
databaseName: emm_manager
是客户端连接时使用的逻辑库名,ShardingSphere-Proxy 会将其映射到实际物理库。
⚠️注意事项:
- 依赖主从同步:需确保 MySQL 主从复制已正确配置,ShardingSphere 不负责数据同步。
- 负载均衡扩展:如需更多读库,可在
readDataSourceNames
中添加多个数据源。 - 其他规则:若需分片或加密等功能,需在
rules
下追加其他规则(如!SHARDING
)。
如果需要验证配置是否生效,可通过 Proxy 执行 SQL 并观察日志中的实际路由结果。
内容由零声教学AI助手提供,问题来源于学员提问