我在计算机上有一个MySQL数据库,而在另一台服务器上有相同的MySQL数据库。我需要它们在结构和包含数据方面完全相同,并且我已经讲到要做到这一点的唯一方法是截断一个表,然后将另一个表的所有行插入其中。相同)表。

我希望通过MySQL查询而不是通过备份然后将其导入(而不是通过数据库迁移等)而是通过查询来实现,因为我计划在VB项目中使用此查询,并在发生任何更改时使用它两个表中的任何一个。

我知道如果这些表在同一服务器上的查询将如下所示:

INSERT INTO db.table1 SELECT * FROM db.table2

但是我不知道如何编写SELECT子句以及如何告诉它.table2在另一台服务器上。

我认为应该是这样的
INSERT INTO db.table1 SELECT * FROM (ServerName/IP).db.table2

但是我不能完全自己弄清楚,有什么想法吗?

最佳答案

您可以设置federated tables,它基本上是将一台服务器上的表链接到另一台服务器上的表。然后,使用联合进行数据传输。


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=MyISAM
DEFAULT CHARSET=latin1;


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

然后,您可以像查询其他任何表一样查询它。

但是,有相当数量的limitations you should read about,包括以纯文本格式存储的远程密码。如果这是纯粹的一次性复制临时设置,并且服务器不对公众开放,则您已经将与之相关的大多数风险降到了最低。

关于mysql - 将包含数据的表从一台MySQL服务器复制到另一台,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23822678/

10-09 05:34