2013-08-07 112 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. 
相關問題