2010-06-04 91 views
0

我有一个名为'empData'的本地服务器中的数据库,我希望将该数据库中的所有数据复制到另一个名为'empDataBackup'的服务器(Web服务器)中的另一个数据库。 我试过这段代码mysql_query("INSERT INTO empData.backup_emp SELECT * FROM empData.emp"); 但它没有工作,因为两个数据库都不在同一台服务器上......(在我们的情况下,一个在本地,另一个在web服务器).. 请帮忙..如何在PHP中将数据库从一台服务器复制到另一台服务器?

+0

做第二服务器允许从外到MySQL的连接?大多数情况下它只配置为本地主机。 – opHASnoNAME 2010-06-04 08:18:55

+0

我试图连接,但给错误...“警告:mysql_connect()[function.mysql连接]:访问被拒绝用户...” – 2010-06-04 08:24:00

回答

2

使用mysqldump转储您的数据,然后将该文件传输到mysql以将数据导入其他地方。

在server1上:

mysqldump empData > empData.sql 

Server2上:

mysql < empData.sql 

如果你想获得幻想,你可以直接使用管道和SSH管道将数据从服务器1到Server2。

+0

但我必须保持检查,数据已经存在或为避免重复,上述方法将在备份数据库中追加数据.... – 2010-06-04 08:22:21

+0

使用可以将'--insert-ignore'标志传递给'mysqldump'来告诉它写出'插入所有数据的IGNORE'语句。这样,如果密钥已经存在,它不会覆盖一行。 http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_insert-ignore – 2010-06-04 08:27:31

+0

嘿谢谢..我会尝试这种方式... – 2010-06-04 08:30:04

1

这不是一个PHP的答案,但也许它可以让你开始:

mysqldump --host=db1.example.com --user=db1user --password=db1pass --single-transaction myschema mytable | \ 
    mysql --host=db2.example.com --user=db2user --password=db2pass myschema 

如果你不能从一台计算机同时访问主机,可以使用ssh,例如

ssh db1.example.com 'mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable' | \ 
    mysql --user=db2user --password=db2pass myschema 

mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable | \ 
    ssh db2.example.com 'mysql --user=db2user --password=db2pass myschema' 
0

你要转储原始服务器上的数据库,然后将其复制到其他服务器,并恢复它。

对于这些操作中的每一个,都有“服务器端”方式和“PHP侧”方式。如果可以,请使用第一个。如果你不能使用第二个,但你需要特别注意安全性。

服务器端:1.和3 .:使用mysqldump。 2.使用scp传输文件。

PHP方面:1.使用脚本来转储数据库,如this one。 2.使用CURL复制文件,或将其放在可用目录中,以某种方式保护它。 3.从第二台服务器检索文件,并通过mysql_exec运行它以恢复数据库。

1

总是有直MySQL Replication拉泽的rthan依靠你的PHP脚本保持同步的数据库的选项

相关问题