本文介绍了在PolarDB MySQL版中如何创建Federated表。
前提条件
集群版本需为PolarDB MySQL版8.0版本且修订版本需满足如下条件:
8.0.1.1.28或以上。
8.0.2.2.4或以上。
如何查看集群版本,请参见查询版本号。
使用限制
目前仅支持使用公网地址连接远端服务器的数据库。
不支持远程连接在ECS上自建的数据库。
不支持Federated引擎使用公网地址访问当前集群的数据库。
操作步骤
创建远端Server。语法如下:
CREATE SERVER <server_name> FOREIGN DATA WRAPPER mysql OPTIONS (HOST "<host_name>", PORT 3306, USER "<user_name>", PASSWORD "<password>", DATABASE "<db_name>");
参数说明如下表所示:
参数名称
参数说明
server_name
远端服务器名称。
host_name
远程服务器的主机名或IP地址。
user_name
远程服务器上创建的用户名。
password
远程服务器上用户名对应的密码。
db_name
远程服务器上创建的数据库名称。
创建Federated表。
您可以通过三段式名称方式、指定远端Server或Connection来连接到远程表创建Federated表。
(推荐)通过三段式名称方式来创建Federated表。语法如下:
说明仅支持PolarDB MySQL版8.0.2版本,且小版本为8.0.2.2.25及以上。
CREATE FOREIGN TABLE tbl_name for <server_name>.<remote_db_name>.<tbl_name>;
示例如下:
CREATE FOREIGN TABLE t1 for server.test.t1;
通过指定远端Server来创建Federated表。语法如下:
CREATE TABLE <tbl_name> (create_definition,...) ENGINE=FEDERATED CONNECTION='<server_name>/<tbl_name>';
示例如下:
CREATE TABLE `t1`(`a` VARCHAR(100),UNIQUE KEY(`a`(30))) ENGINE=FEDERATED CONNECTION='server_name/t1';
(不推荐)通过指定Connection来创建Federated表。语法如下:
CREATE TABLE <tbl_name> (create_definition,...) ENGINE=FEDERATED CONNECTION='<MYSQL://<user_name>:<password>@<host_name>:3306/<db_name>/<tbl_name>';
示例如下:
CREATE TABLE `t1`(`a` VARCHAR(100),UNIQUE KEY(`a`(30))) ENGINE=FEDERATED CONNECTION='MYSQL://username:passsword@127.0.0.1:3306/test/t1';
说明由于指定Connection来创建Federated表的方式中,相关账号和密码是明文保存,因此不建议使用该方式。
文档内容是否对您有帮助?