将mysql数据库从一台服务器复制到另一台PHP cron Job自动化

时间:2013-08-07 16:20:30

标签: php mysql cron

好的,首先这不是备份工作,我知道使用phpmyadmin等等。

我拥有的是Live服务器和TEST服务器,人们在实时服务器上工作,不断修改它。我希望每晚都能将LIVE服务器上的数据库复制到TEST服务器。

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

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

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

在你的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.

答案 1 :(得分: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的表,该表镜像名为livedata的表。

然后设置一个cron作业以在需要时触发脚本 -

php /path/to/script.php