将行从一个数据库复制到另一个数

时间:2015-03-27 19:54:14

标签: mysql

我有两个在不同计算机(和不同主机)上托管相同架构(dev / prod)的数据库。

是否有任何机制或工具可以对一个数据库中的特定行进行选择并将它们插入另一个数据库中?

1 个答案:

答案 0 :(得分:1)

您可以使用MySQL的FEDERATED存储引擎:

  

FEDERATED存储引擎允许您从远程MySQL数据库访问数据,而无需使用复制或群集技术。查询本地FEDERATED表会自动从远程(联合)表中提取数据。没有数据存储在本地表中。

所以,要创建一个连接:

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';

定义了这样一个表后,您可以根据需要执行INSERT ... SELECT

INSERT INTO federated_table SELECT * FROM local_table WHERE ...

或者

INSERT INTO local_table SELECT * FROM federated_table WHERE ...

如果您要从同一服务器联合多个表,您可能希望改为使用CREATE SERVER