簡體   English   中英

將mysql數據庫從一台服務器自動復制到另一台PHP cron Job

[英]Copy a mysql database from one server to another PHP cron Job automated

好吧,首先這不是備份工作,我知道使用phpmyadmin等。

我所擁有的是一台實時服務器和一台TEST服務器,People在實時服務器上工作,並不斷對其進行修改。 我希望每天晚上將LIVE服務器上的數據庫復制到TEST服務器。

有沒有人有一個PHP腳本,我可以運行該腳本來復制整個內容(或至少復制特定的表)? 我對使用命令行不太有把握,所以如果有一種方法可以執行一些非常具體的說明,請執行:P

我已經挖了周圍,但每個人似乎都建議手動或使用第三方工具來做。

任何幫助,不勝感激。

您可以執行以下操作:

在您的mysql主機中:

1- Create a .sh file
2- Inside of this sh, put:
 - mysqldump -u myuser -p mypass mydatabasename > mydumpfile.sql
 - scp mydumfile.sql user@remote_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.

刪除測試表-

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的表,該表將鏡像名為livedata的表。

然后設置一個cron作業以在需要時觸發腳本-

php /path/to/script.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM