好的,首先这不是备份工作,我知道使用phpmyadmin等等。
我拥有的是Live服务器和TEST服务器,人们在实时服务器上工作,不断修改它。我希望每晚都能将LIVE服务器上的数据库复制到TEST服务器。
有没有人有一个PHP脚本我可以运行或者复制整个事情(或至少是特定的表)?我对使用命令行没有那么自信,所以如果有办法这样做,我可以用一些非常具体的指令来做:P
我已经挖过,但似乎每个人都建议手动或使用第三方工具。
任何帮助都非常感激。
答案 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