将 InnoDB table 复制到 FEDERATED table

Replicate an InnoDB table into a FEDERATED table

我想要一个新的 table 与 FEDERATED 引擎,从另一个现有的 InnoDB table 创建(克隆)。像这样:

CREATE TABLE balance_live
  AS SELECT * FROM balance
  ENGINE=FEDERATED
  CONNECTION='mysql://user:pass@8.8.8.8:3306/db/balance'

但是由于某些原因这不起作用。

您需要明确指定的实际 table 定义。这不是视图,而是 table。请参阅此处了解正确的语法: https://dev.mysql.com/doc/refman/8.0/en/federated-create-connection.html

在远程主机上执行 SHOW CREATE TABLE balance; 并将其用作定义,只需更改 ENGINE=FEDERATED 并添加 CONNECTION 子句。

正如 creating federated tables 上的 mysql 手册所说:

Create the table on the local server with an identical table definition, but adding the connection information that links the local table to the remote table.

您不能使用 as select ... ,因为在 from 子句中您只能指定本地 table。联合 table 为远程 table 创建了 link。

只需从远程 table 复制 table 定义即可。