15.8.2.1 使用 CONNECTION 创建 FEDERATEDtable

要使用第一种方法,必须在CREATE TABLE语句中的引擎类型之后指定CONNECTION字符串。例如:

CREATE TABLE federated_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=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';

Note

CONNECTION替换了 MySQL 早期版本中使用的COMMENT

CONNECTION字符串包含连接到包含将用于物理存储数据的 table 的远程服务器所需的信息。连接字符串指定服务器名称,登录凭据,端口号和数据库/table 信息。在该示例中,远程 table 位于服务器remote_host上,使用端口 9306.名称和端口号应与要用作远程 table 的远程 MySQL 服务器实例的主机名(或 IP 地址)和端口号匹配。

连接字符串的格式如下:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

Where:

    • scheme :公认的连接协议。此时仅支持mysql作为 scheme *值。
    • user_name *:连接的用户名。此用户必须已在远程服务器上创建,并且必须具有适当的特权才能在远程 table 上执行所需的操作(SELECTINSERTUPDATE等)。
    • password * :(可选)* user_name *的相应密码。
    • host_name *:远程服务器的主机名或 IP 地址。
    • port_num * :(可选)远程服务器的端口号。默认值为 3306.
    • db_name *:保存远程 table 的数据库的名称。
    • tbl_name *:远程 table 的名称。本地 table 和远程 table 的名称不必匹配。

示例连接字符串:

CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'