我的任务是创建数据的每周和每日快照备份。 由于我刚刚开始使用Postgres,我找到了使用pg_dump进行备份的选项。 不幸的是,正在使用的服务器在运行备份的/ var目录中没有剩余空间。执行后,它会耗尽空间并中途停止。使用pg_dump dbname>运行数据库备份file.gz超过7gb,因为我尝试在/ tmp目录中运行它并且它也崩溃了。作为替代方案,我尝试使用您在下面看到的opt / app目录,因为它具有最多的可用数据但我可以拒绝权限消息。有没有其他选择来完成我的任务?我应该考虑获得/ opt / app目录的权限,还是不应该存储备份?
pg_dump名称>输出用作完整的每周备份,还是每日快照?
非常感谢任何帮助。
答案 0 :(得分:1)
您必须首先考虑数据库大小。 使用psql:
postgres=# select datname, pg_size_pretty(pg_database_size(datname)) from pg_database;
步骤:
使用/ opt / app,创建一个新目录以分配数据库备份。验证权限,或者您可以使用root用户创建目录。
cd /opt/app/
mkdir backups
#change your directory backup group and permissions to postgres user.
chown postgres:postgres /opt/app/backups
chmod 750 /opt/app/backups
现在您有权将文件写入/ opt / app / backups 使用postgres用户(或任何地方)备份数据库
NOW=`date +"%Y%m%d"`
# generate a plain dump
# The -F option to create a custom backup (compressed and perform with pg_restore)
pg_dump database_name >/opt/app/backups/backup-$NOW.sql
注意: 您可以使用-F选项pg_dump
生成自定义转储pg_dump是完全数据库备份而非增量。
您可以每天或每周进行cron活动。 cron
如果您在数据库中关联了角色,请务必小心。在这种情况下,您可以使用pg_dumpall来备份pg_catalog。
抱歉我的英语难以理解......我说西班牙语如此接近:)