膨大な数のテーブルを持つPostgreSQLデータベースをバックアップする方法はありますか?
約28000テーブルのデータベースに対してpg_dump
を使用すると、次のエラーメッセージが表示されました。
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
max_locks_per_transaction
を64ではなく256に増やすと、サーバーの起動に失敗しました。
他にできることはありますか? (PostgreSQL 9.0、Mac OSX。)
本当に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を変更する必要があると思います。