繁体   English   中英

PHP备份整个PostgreSQL数据库然后恢复表的一部分

[英]PHP backup entire PostgreSQL database and then restore part of table

我目前正在使用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查询功能。

在我看来,最简单有效的解决方案是:

  • 在另一台机器上安装备份服务器,
  • 定期执行转储/恢复或根据需要执行
  • 使用外部数据包装器postgres_fdw连接主服务器和备份服务器。

在我的实践中,即使是相对较小的项目,备份服务器也是必需的 数据复制可以通过多种方式完成。 转储/恢复(可能使用cron)是最简单的之一,但配置流复制也不是特别困难。

如果我们必须考虑成本,备份服务器可以是任何具有任何操作系统的PC或笔记本电脑。 我认为这甚至可以在家里轻松完成。

拥有备份服务器的好处是多方面的。 有时它是省力的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM