我们每晚使用 pg_dump 来制作我们数据库的快照。我们用一个简单的命令做了很长时间
pg_dump -Fc database_name
这大约需要一个小时并生成一个 30+GByte 的文件。
我们怎样才能加快速度?
我们每晚使用 pg_dump 来制作我们数据库的快照。我们用一个简单的命令做了很长时间
pg_dump -Fc database_name
这大约需要一个小时并生成一个 30+GByte 的文件。
我们怎样才能加快速度?
我为运行多个模式的 postgresql pg_dump 编写了这个脚本。由于完成所有操作需要很长时间,因此我通过同时运行转储来改进它:
for SCHEMA in $SCH
do
while [ $(jobs | wc -l | xargs) -ge $PROC ]; do sleep 5; done
/usr/pgsql-$PGVER/bin/pg_dump -h $PGHOST -p $PORT -U postgres -d $DB -n $SCHEMA -Fc -Z 1 2> $LOGDIR/$SCHEMA'-'$DATA'.log' | $ENCCMD $DUMPDIR/$SCHEMA'-'$DATA.bkp.enc $ENCKEY &
done
wait
所以基本上这样做是让作业的数量运行,如果大于或等于 5,它会等到进程数量减少,保持至少 5 个转储同时运行,直到完成所有模式。
问题是:有时它会卡在“while 循环”中,“jobs | wc -l”总是返回数字 5,并且检查 linux 进程没有运行任何转储
我想使用sudo -u postgres pg_dump database_name > db_backup.sql
. 有一些多个表每秒插入一行,因此这些表非常大。
我有两个问题:
在创建转储时,我(或其他用户、网站……)是否能够在任何表中插入新行?
转储是否一致?