我在计算机上有一个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/