Какие параметры нужно настроить для текстового восстановления PG? - PullRequest
3 голосов
/ 26 мая 2011

Каждую ночь мы сбрасываем и восстанавливаем базу данных объемом 200 ГБ, используя:

# Production, PG 9:
pg_dump DATNAME | some-irrelevant-pipe

# QA, PG 8.3:
some-irrelevant-pipe | psql -d DATNAME

Мне пришлось пойти на текстовые резервные копии, чтобы восстановить дамп с 9 на 8.3.

Восстановление мучительно и неоправданно медленно. Я заметил, что мой журнал полон этих:

2011-05-22 08:02:47 CDT LOG:  checkpoints are occurring too frequently (9 seconds apart)
2011-05-22 08:02:47 CDT HINT:  Consider increasing the configuration parameter "checkpoint_segments".
2011-05-22 08:02:54 CDT LOG:  checkpoints are occurring too frequently (7 seconds apart)
2011-05-22 08:02:54 CDT HINT:  Consider increasing the configuration parameter "checkpoint_segments".

Мой вопрос: возможно ли, что настройка checkpoint_segments является узким местом? Какие еще параметры можно настроить для ускорения процесса?

Эта машина имеет 4 ГБ оперативной памяти. Другие возможные параметры в postgresql.conf:

shared_buffers = 1000MB
work_mem = 200MB
maintenance_work_mem = 200MB
effective_cache_size = 2000MB
# fsync and checkpoint settings are default

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

Вы читали это ?См. Специально sec 14.4.9

3 голосов
/ 26 мая 2011

В целях восстановления базы данных измените:

# I don't think PostgreSQL 8.3 supports synchronous_commit
synchronous_commit = off
# only change fsync = off if your version of PG is too old to support synchronous_commit. If you do support synchronous_commit, don't ever change fsync to anything but on. Ever.
#fsync = off
checkpoint_segments = 25

Относительно checkpoint_segments , установите это значение равным размеру буфера записи контроллера диска.25 = 400 МБ

Также убедитесь, что ваш psql загружает все за одну транзакцию:

some-irrelevant-pipe | psql -1 -d DATNAME
...