我有以下情况。
我有一个PHP脚本,用于导入CSV文件,然后更新postgres数据库
现在我需要在导入发生之前创建数据库的备份
PHP文件在一台服务器上运行,而postgres数据库在另一台服务器上运行
我尝试了exec(pg_dump db_name -CdiOv > /tmp/db_name_backup.sql)
,但认为这不会起作用,因为db在另一台服务器上。
我不确定如何做到这一点,我可以在PHP执行备份时使用正确的代码但是可以运行年龄。
任何adwise将不胜感激
答案 0 :(得分:4)
正如depesz所说,您需要使用-h选项来定义远程主机,但它仍会提示输入有问题的密码。尝试:
exec("export PGPASSWORD=mypassword && export PGUSER=myuser && pg_dump -h yourremotehost db_name -CdiOv > /tmp/db_name_backup.sql && unset PGPASSWORD && unset PGUSER");
或者您可以使用〜/ .pgpass文件,但我从未尝试过这个。查看http://www.issociate.de/board/post/43225/pg_dump_+_cronjob.html和http://forum.soft32.com/linux/Backup-Postgressql-ftopict460054.html
答案 1 :(得分:1)
pg_dump可以轻松连接到远程主机 - 只需选中-h选项。
另外 - 你想通过“-CdiOv”实现什么目标?