如何创建Federated表

本文介绍了在PolarDB MySQL版中如何创建Federated表。

前提条件

集群版本需为PolarDB MySQL版8.0版本且修订版本需满足如下条件:

  • 8.0.1.1.28或以上。

  • 8.0.2.2.4或以上。

如何查看集群版本,请参见查询版本号

使用限制

  • 目前仅支持使用公网地址连接远端服务器的数据库。

  • 不支持远程连接在ECS上自建的数据库。

  • 不支持Federated引擎使用公网地址访问当前集群的数据库。

操作步骤

  1. 创建远端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

    远程服务器上创建的数据库名称。

  2. 创建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表的方式中,相关账号和密码是明文保存,因此不建议使用该方式。