0

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

我所拥有的是一个实时服务器和一个测试服务器,人们在实时服务器上工作,不断地对其进行修改。我希望每晚将 LIVE 服务器上的数据库复制到 TEST 服务器。

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

我已经四处寻找,但似乎每个人都建议手动或使用第三方工具进行操作。

非常感谢任何帮助。

4

2 回答 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 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.
于 2013-08-07T16:34:28.223 回答
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
于 2013-08-07T16:30:17.457 回答