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

问题描述:

我有两个mysql数据库,一个是测试&其他是生产(它们位于两个不同的服务器上),我想将少量用户从测试迁移到生产。将数据从一个数据库复制到另一个数据库

有几个表通过主键&关联(因此重复条目不应该存储)。

什么是最好的实施方式?任何查询样本?

+0

你想要做什么?也许保持测试和生产服务器同步? – blankabout 2011-04-25 22:59:50

+0

例如,有1000个prod.users和200个测试用户,我想将这200个用户数据移动到prod。 – Sharpeye500 2011-04-25 23:08:55

最简单的方法是使用联邦引擎设置一些表格,以便您可以简单地复制数据,执行任何您需要的检查以防止重复。

首先检查是否有可用的联邦引擎,在MySQL外壳中做“秀引擎”,希望你会有这样一行:

FEDERATED | YES | Federated MySQL storage engine| NO | NO | NO ||

如果没有,尝试字当头“联合”的本身在你的my.cnf文件中(通常在/ etc中),然后停止&重新启动mysqld服务。

如果守护进程没有重启,那么您的安装没有联合插件,请从my.cnf中取出该行以启用重启。如果是这种情况,那么你必须下载,安装并启用插件。

一旦你可用你可以设置表这样的发动机:

 
create table tb1 (col1 varchar(10)) ENGINE=FEDERATED CONNECTION='mysql://mysqlusername:[email protected]:3306/databasename/tablename'; 
凡在联合(本地)表中的列是相同的远程表中的列到你正在连接。

运行'create table'命令后,运行'show create table ...'并确保联合引擎确实被使用,因为如果出现错误,MySQL将使用MyISAM引擎而不发出消息在配置中。

确保您已在数据库上设置权限以允许从远程系统登录。

就是这样,一旦联邦表成立,它可以被读取为&,就好像它是本地的(但不要忘记,如果你链接到你的生产数据库,那么你正在处理真实的数据! )。

+0

我没有使用联合引擎,你有一些例子吗? – Sharpeye500 2011-04-26 00:27:15