首批通过分布式安全可靠测评,为关键业务系统打造
创建 DBLink
更新时间:2026-04-12 09:24:14
OceanBase 数据库的 DBLink 功能实现了跨数据源访问的能力,您可以在本地数据库上访问远端数据库。
当前,对于 OceanBase 数据库的 MySQL 模式,支持创建 OceanBase 数据库的 MySQL 租户到其他 OceanBase 数据库的 MySQL 租户的 DBLink,同一集群下不同 MySQL 租户之间也可以创建 DBLink。
使用限制
- 暂不支持创建 OceanBase 数据库的 MySQL 租户到 MySQL 数据库的 DBLink。
- MySQL 模式暂不支持 DBLink 写及反向 Link 特性。
前提条件
创建 DBLink 的用户需要具备 CREATE DATABASE LINK 权限。为用户授权的相关操作请参见 直接授予权限。
创建 OceanBase 数据库到 OceanBase 数据库的 DBLink
如果要访问远端的 OceanBase 数据库,可以创建 OceanBase 数据库的 MySQL 租户到其他 OceanBase 数据库的 MySQL 租户的 DBLink。
创建一个访问指定远端数据库的 DBLink 时,需要指定该 DBLink 的名称并提供远端数据库的用户名、租户名、数据库名,密码、IP 地址、端口号以及集群名。
MySQL 模式下创建 OceanBase 数据库的 MySQL 租户到 OceanBase 数据库的 MySQL 租户的 DBLink 的 SQL 语法如下:
CREATE DATABASE LINK [IF NOT EXISTS] dblink_name CONNECT TO user@tenant DATABASE database_name IDENTIFIED BY 'remote_password' HOST 'ip:port' [CLUSTER "cluster_name"];
相关参数说明如下:
dblink_name:待创建的 DBLink 的名称。IF NOT EXISTS:兼容 MySQL 数据库的语法。如果指定IF NOT EXISTS,即使待创建的 DBLink 已存在,也不会报错;如果不指定且待创建的 DBLink 已存在,则系统会报错。user:远端 OceanBase 数据库的用户名。tenant:远端 OceanBase 数据库的租户名。remote_password:远端 OceanBase 数据库的用户名的登录密码。当密码里含有类似@#!等除数字、字母以外的特殊字符时,需要使用单引号或双引号将密码括起来避免报语法错误。database_name:远端 MySQL 租户的数据库名。通过 DBLink 读取数据时,默认访问该数据库,如果需要访问其他数据库可以在 SQL 语句中为表指定特定的数据库。ip:远端 OceanBase 数据库的 IP 地址。IP 地址可以指定为集群的 Proxy 的 IP 地址,或者也可以指定为集群中某个 OBServer 节点的 IP 地址。当 IP 地址为指定 OBServer 节点的 IP 地址时,要求本地数据库与指定 OBServer 节点之间的网络可以互通。
说明
除了 IP 地址外,OceanBase 数据库还支持域名地址。例如,
example.com:port。您可以根据实际环境,使用相应的域名地址来连接远端的数据库。port:远端 OceanBase 数据库的端口号。可以指定为集群的 Proxy 的端口号(默认为 2883),或者也可以指定为集群中某个 OBServer 节点的 SQL 端口号(默认为 2881)。当端口号为指定 OBServer 节点的 SQL 端口号时,要求本地数据库与指定 OBServer 节点之间的网络可以互通。
cluster_name:远端 OceanBase 数据库对应的集群的名称。仅当 IP 和端口号为集群的 Proxy 的 IP 和端口号,且 Proxy 是由 ConfigUrl 方式部署时,才需要指定集群名称。由于集群名称对大小写敏感,集群名称需要使用双引号括起来。说明
在部署集群的 Proxy(例如 ODP) 时,有以下两种部署方式:
- ConfigUrl 部署方式:表示在启动 ODP 时,通过在命令中指定
obproxy_config_server_url参数项来查询获取 OceanBase 集群的 Root Server 信息的方式。 - RsList 部署方式:表示在启动 ODP 时,通过在命令中指定
-r参数来指定 OceanBase 集群的 Root Server 信息的方式。
- ConfigUrl 部署方式:表示在启动 ODP 时,通过在命令中指定
示例如下:
创建一个连接到远端 OceanBase 数据库的名为
ob_dblink的 DBLink,且 IP 地址和端口号为指定 OBServer 节点的 IP 地址和端口号。CREATE DATABASE LINK IF NOT EXISTS ob_dblink CONNECT TO username@mysql DATABASE test IDENTIFIED BY '********' HOST 'xx.xx.xx.xx:2881';创建一个连接到远端 OceanBase 数据库的名为
ob_dblink_proxy的 DBLink,且 IP 地址和端口号为集群的 Proxy 的 IP 地址和端口号,同时 Proxy 由 ConfigUrl 方式部署。CREATE DATABASE LINK IF NOT EXISTS ob_dblink_proxy CONNECT TO username@mysql DATABASE test IDENTIFIED BY '********' HOST 'xx.xx.xx.xx:2883' CLUSTER "obcluster";注意
在填写集群名称时,需要加双引号,防止集群名称的字母被升格为大写字母。
相关文档
更多 DBLink 相关的操作,请参见以下信息: