Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Creating a FEDERATED Table Using CREATE SERVER

18.8.2.2 使用 CREATE SERVER 创建 FEDERATED 表

如果您在同一个服务器上创建多个FEDERATED表,或者想简化创建FEDERATED表的过程,可以使用CREATE SERVER语句来定义服务器连接参数,就像使用CONNECTION字符串一样。

CREATE SERVER语句的格式是:

CREATE SERVER
server_name
FOREIGN DATA WRAPPER wrapper_name
OPTIONS (option [, option] ...)

在创建新FEDERATED表时,使用的server_name是在连接字符串中。

例如,创建一个与CONNECTION字符串相同的服务器连接:

CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

您将使用以下语句:

CREATE SERVER fedlink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'fed_user', HOST 'remote_host', PORT 9306, DATABASE 'federated');

要创建使用这个连接的FEDERATED表,您仍然使用CONNECTION关键字,但是指定在CREATE SERVER语句中使用的名称。

CREATE TABLE test_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb4
CONNECTION='fedlink/test_table';

这个示例中的连接名包含连接名(fedlink)和要链接到的表名(test_table),用斜杠分隔。如果只指定连接名而不指定表名,使用本地表的表名。

关于CREATE SERVER的更多信息,请见第15.1.18节,“CREATE SERVER 语句”

CREATE SERVER 语句接受与CONNECTION字符串相同的参数。CREATE SERVER 语句更新了mysql.servers 表中的行。见以下表格,了解连接字符串中参数、CREATE SERVER 语句中的选项和mysql.servers 表中的列对应关系。参考连接字符串的格式如下:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
Description CONNECTION string CREATE SERVER option mysql.servers column
Connection scheme scheme wrapper_name Wrapper
Remote user user_name USER Username
Remote password password PASSWORD Password
Remote host host_name HOST Host
Remote port port_num PORT 端口
Remote database db_name 数据库 Db