2013-08-07 80 views
0

首先,这不是一项备份工作,而且我知道如何使用phpmyadmin等。将mysql数据库从一台服务器复制到另一台服务器PHP cron Job自动化

我有一台Live服务器和一台TEST服务器,人们在现场服务器上工作,不断修改它。我希望每晚都将LIVE服务器上的数据库复制到TEST服务器。

有没有人有一个PHP脚本我可以运行要么复制整个事情(或至少具体表)?我对使用命令行并没有那么自信,所以如果有这样一种方式,我可以用一些非常特定的指令来做到这一点:P

我已经挖过,但每个人似乎都建议手动或通过使用第三方工具。

任何帮助非常感谢。

+0

您应该查看数据库复制,因为它的确如此,但实时。 http://dev.mysql.com/doc/refman/4.1/en/replication-howto.html – SamV

+0

'mysqldump'是你的朋友。如果您害怕使用命令行工具,那么您不应该运行服务器... –

+0

您是否看过Pentaho PDI之类的ETL工具:http://kettle.pentaho.com/? – Maximus2012

回答

0

跌落试验台 -

DROP TABLE testdata; 

,然后重新创建它们作为直播表的副本 -

CREATE TABLE testdata LIKE livedata; 
INSERT INTO testdata SELECT * FROM livedata; 

这可以通过PHP来实现这样的 -

<?php 

$host = '127.0.0.1'; 
$dbname = 'database' 
$user = 'user'; 
$pass = 'pass'; 

try { 

    $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 

} 

catch(PDOException $e) { 

    echo $e->getMessage(); 

} 

$STH = $DBH->('DROP TABLE testdata'); 
$STH->execute(); 

$STH = $DBH->('CREATE TABLE testdata LIKE livedata'); 
$STH->execute(); 

$STH = $DBH->('INSERT INTO testdata SELECT * FROM livedata'); 
$STH->execute(); 

$DBH = null; 

?> 

您可以根据需要添加额外的表,但在我的示例中,它将创建一个名为testdata的表,该表反映表ca lled livedata。

然后设置一个cron作业需要何时启用脚本 -

php /path/to/script.php 
+0

这看起来很有前途。我想我可以看到你要去的地方,也会尝试这个以及...感谢您的帮助 –

+0

好吧,这似乎只适用于一台服务器 - 我实际上需要跨越2(本地和现场) –

3

你可以做这样的事情:

在你的MySQL主机:

1- Create a .sh file 
2- Inside of this sh, put: 
- mysqldump -u myuser -p mypass mydatabasename > mydumpfile.sql 
- scp mydumfile.sql [email protected]_host:remote_dir 
3- Add that sh to a cron Job, to a daily execute 
    (or something that meets your requeriments) 

在远程机器:

1- One sh script that look for a file(mysqldumpfile.sql) in the specific dir 
2- This line : mysql -u remotemysqluser -p remotemysqlpass database < mydumpfile.sql 
3- rm mydumpfile.sql 
4- Add this sh on a daily cron 1 or two hours past the host cron. 
相关问题