备份包含大量表的数据库

krl*_*mlr 6 postgresql backup dump mac-os-x

有没有办法备份包含大量表的 PostgreSQL 数据库?

尝试使用pg_dump大约 28000 个表的数据库导致以下错误消息:

pg_dump: WARNING:  out of shared memory
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.
pg_dump: The command was: LOCK TABLE public.link10292 IN ACCESS SHARE MODE
pg_dump: *** aborted because of error
Run Code Online (Sandbox Code Playgroud)

增加到max_locks_per_transaction256 而不是 64 会导致无法启动服务器。

还有什么我可以尝试的吗?(PostgreSQL 9.0,Mac OS X。)

epp*_*uig 4

您确实应该增加 max_locks_per_transaction。正如http://www.postgresql.org/docs/9.0/static/runtime-config-locks.html中所指定的,更改此参数可能还需要更改 System V 共享内存。您还必须增加该值。在 OS X 中,可以按照http://www.postgresql.org/docs/9.0/static/kernel-resources.html#SYSVIPC中的说明完成此操作(查找 OS X 部分)。我认为你至少应该改变 shmmax。