通过 DIST SQL(Distributed SQL) 在 ShardingSphere-Proxy 中查询读写分离的读库 IP 信息,可以使用以下命令:
1. 查询读写分离资源状态
-- 查看所有读写分离数据源的状态(包含读库连接信息)
SHOW READWRITE_SPLITTING READ RESOURCES [FROM schema_name];
示例输出:
+----------+-----------+----------------+------------+-------------+
| name | type | host | port | status |
+----------+-----------+----------------+------------+-------------+
| replica0 | MySQL | 192.168.1.101 | 3306 | enabled |
| replica1 | MySQL | 192.168.1.102 | 3306 | enabled |
+----------+-----------+----------------+------------+-------------+
2. 查询具体读写分离规则配置
-- 查看读写分离规则的详细配置(包含数据源URL)
SHOW READWRITE_SPLITTING RULES [FROM schema_name];
示例输出:
+------------------+---------------------+---------------------------------------+----------------------+
| name | write_data_source | read_data_sources | load_balancer_type |
+------------------+---------------------+---------------------------------------+----------------------+
| readwrite_ds | primary-ds | replica0,replica1 | ROUND_ROBIN |
+------------------+---------------------+---------------------------------------+----------------------+
3. 结合系统表查询(如果需要更多细节)
-- 查看数据源的具体连接信息(部分版本支持)
SELECT * FROM information_schema.resources WHERE schema = 'your_schema';
4. 使用Hint强制路由到特定读库后查询
-- 强制路由到某个读库
SET readwrite_splitting hint source = 'replica0';
-- 然后查询当前连接信息(MySQL示例)
SELECT @@hostname as host_ip, USER() as connection_info;
⚠️注意事项:
- 版本要求:需要 ShardingSphere-Proxy 5.0.0+ 版本才支持完整的 DIST SQL 功能
- 权限需求:用户需要有相应的权限才能查询系统信息
- 输出格式:不同版本的输出格式可能略有差异
推荐使用方式:
-- 最直接的方式:查看读库资源状态
SHOW READWRITE_SPLITTING READ RESOURCES;
-- 或者查看所有资源详情
SELECT * FROM information_schema.resources;
这样就能通过 DIST SQL 直接获取到读库的 IP地址、端口、状态等信息。
内容由零声教学AI助手提供,问题来源于学员提问