我目前正在使用pg_dump备份整个数据库:
<?php
include_once("../db.php");
$password = getPGPassword();
$user = getPGUser();
$db = getPGDb();
putenv("PGPASSWORD=" . $password);
$dumpcmd = array("pg_dump", "-i", "-U", escapeshellarg($user), "-F", "c", "-b", "-v", "-f", escapeshellarg('/var/www/backups/backup-'.time().'.sql'), escapeshellarg($db));
exec( join(' ', $dumpcmd), $cmdout, $cmdresult );
putenv("PGPASSWORD");
?>
我知道我可以使用psql来恢复整个数据库,但有没有办法可以使用查询有选择地恢复表的一部分?我能想到的最简单的事情是使用psql创建一个临时数据库,从所需的表中读取行,删除基于主串行密钥的冲突行,然后插入表中。
有更好的方法吗?我需要完整的SQL查询功能。
答案 0 :(得分:1)
在我看来,最简单有效的解决方案是:
在我的实践中,即使是相对较小的项目,也必须使用备份服务器。 数据复制可以通过多种方式完成。 转储/恢复(可能使用cron)是最简单的方法之一,但配置流式复制也不是特别困难。
如果我们必须考虑成本,备份服务器可以是任何具有任何操作系统的PC或笔记本电脑。 我认为这甚至可以在家里轻松完成。
拥有备份服务器的好处是多方面的。有时它是省钱的解决方案。