好的,首先这不是备份工作,我知道使用 phpmyadmin 等等。
我所拥有的是一个实时服务器和一个测试服务器,人们在实时服务器上工作,不断地对其进行修改。我希望每晚将 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