web-dev-qa-db-ja.com

膨大な数のテーブルを含むデータベースをバックアップする

膨大な数のテーブルを持つ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。)

6
krlmlr

本当に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を変更する必要があると思います。

4
eppesuig