从MySQL到OBMySQL平滑切换之连接方式
从MySQL到OBMySQL平滑切换之连接方式(简化用户名-设置所有用户默认连接的租户)
一、背景说明
在非云环境部署的 OceanBase 集群中,OBProxy 默认要求用户名必须包含租户和集群信息(格式:用户名@租户#集群)。为适配传统 MySQL 连接习惯(仅使用 -u用户名),需通过调整 OBProxy 参数实现简化登录。本文档提供完整配置方案及验证流程。
二、环境信息
| 组件 | 版本 | 部署方式 | 网络说明 |
|---|---|---|---|
| OBServer | 4.2.5 | 多节点集群 | IP: xx.xx.xx.xx |
| OBProxy | 4.3.1 | configurl/rslist | 代理端口: 3306 |
| 客户端工具 | MySQL 8.0 | - | - |
三、关键参数说明
enable_full_username作用:控制用户名是否强制包含租户和集群信息。默认值:true(OBProxy ≥3.2.2 版本默认由 OCP 设置为 false)。非云场景:需手动设置为 false 以支持简化用户名登录。
proxy_tenant_name作用:绑定 OBProxy 连接的默认租户,避免客户端显式指定租户。推荐值:设为业务租户名(如 obmysql)。
**rootservice_cluster_name **
根据登录方式的不同,rootservice_cluster_name 配置项有如下几种作用:
- 通过 Service Name 登录时,该配置项表示读写分离下的默认备集群。
- 非 Service Name 登录时,该配置项用于设置 rootservice_list 的默认集群名,或云用户的默认集群名。
该配置项自 ODP 4.3.3 版本起更新,区分是否通过 Service Name 登录,通过 Service Name 登陆时,该配置项表示读写分离下的默认备集群。
![rootservice_cluster_name]()
四、配置操作步骤
1. 修改 OBProxy 参数
通过 OBProxy 管理连接执行:
-- 启用简化用户名模式
ALTER PROXYCONFIG SET enable_full_username = 'false';
-- 绑定默认租户(示例为 obmysql 租户)
ALTER PROXYCONFIG SET proxy_tenant_name = 'obmysql';
alter proxyconfig set rootservice_cluster_name='obcluster435';
-- 查看参数生效状态
SHOW PROXYCONFIG LIKE '%username%';
SHOW PROXYCONFIG LIKE '%proxy_tenant%';
2. 配置验证
验证场景 1:传统MySQL用户名登录
# 使用简化用户名连接(无需 @tenant#cluster 后缀)
mysql -uroot -h<OBProxy_IP> -P3306 -p****** -A oceanbase
预期结果:
- 连接成功,可正常执行 SQL 查询。
- 验证场景 2:完整用户名登录(兼容性测试)
# 使用完整用户名格式连接(原有方式)
mysql -uroot@obmysql#obcluster -h<OBProxy_IP> -P3306 -p****** -A oceanbase
预期结果:
- 连接成功,新旧格式并存不影响业务。
五、操作前后对比
| 配置项 | 修改前 | 修改后 |
|---|---|---|
| 用户名格式要求 | 必须包含 @租户#集群 | 支持简化用户名(如 -uroot) |
| 连接示例 | -uroot@sys#obdemo63 | -uroot |
| 业务适配性 | 需改造应用连接字符串 | 兼容 MySQL 原生习惯 |
| 多租户管理 | 客户端需显式指定租户 | 通过 proxy_tenant_name 自动路由 |
六、注意事项
1.权限控制:确保 proxy_tenant_name 对应租户具备最小必要权限。
2.版本兼容性OBProxy ≥3.2.2 版本支持 enable_full_username 参数,低版本需升级。
3.混合部署环境若存在多集群,需通过 proxy_cluster_name 参数指定默认集群,避免路由冲突。
七、效果总结
通过调整 enable_full_username 和 proxy_tenant_name 参数:
1.简化连接方式:适配传统 MySQL 客户端,减少应用改造成本。
2.平滑迁移:支持新旧用户名格式并存,保障业务连续性。
3.租户隔离:通过代理层自动路由请求,提升多租户管理效率。
八、其他解决方案(租户+集群名称的几种写法)
由于obproxy支持OceanBase的多集群部署,因此通过obproxy访问OceanBase服务时,还需要指定集群名,三段式格式有四种:
(注意:仅Oracle模式下狭义的username不区分大小写,其它所有的字段都区分大小的,包括MySQL模式下狭义的username也是区分大小写的:ERROR 4669 (HY000): cluster not exist 可能是集群名称填错了(注意:集群名大小写也是敏感的哦!)ERROR 4012 (HY000): Get Location Cache Fail:一般都是因为租户名字写错了,或者该租户根本就不存在的!(注意:租户名大小写也是敏感的哦!)
username@tenantname#clustername,如:root@trade#xxbank
clustername:tenantname:username,如:xxbank:trade:root
clustername-tenantname-username,如:xxbank-trade-root
clustername.tenantname.username,如:xxbank.trade.root
附录:参数持久化说明
OBProxy 重启配置保留:若通过 ALTER PROXYCONFIG 修改参数,配置将自动持久化至 OBProxy 元数据库,无需额外操作。


浙公网安备 33010602011771号