Первичный серверКак восстанавливается перезагрузка WAL-файла PostgreSQL?
# postgresql.conf
wal_level = hot_standby
archive_mode = on
archive_timeout = 10
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
Резервный сервер
hot_standby = on
Я скопировал /archive/*
в основной сервер для $PGDATA/pg_xlog
в режиме ожидания, и ничего не случится. Когда я перезапустить резервный сервер, я получил сообщение об ошибке из журнала сервера:
2016-11-21 17:56:09 CST [17762-3] LOG: invalid primary checkpoint record
2016-11-21 17:56:09 CST [17762-4] LOG: record with zero length at 0/6000100
2016-11-21 17:56:09 CST [17762-5] LOG: invalid secondary checkpoint record
2016-11-21 17:56:09 CST [17762-6] PANIC: could not locate a valid checkpoint record
2016-11-21 17:56:09 CST [17761-1] LOG: startup process (PID 17762) was terminated by signal 6: Aborted
2016-11-21 17:56:09 CST [17761-2] LOG: aborting startup due to startup process failure
Вопросы:
это достаточно для синхронизации данных на резервный сервер, просто скопировав
/archive/*
на первичном сервере в$PGDATA/pg_xlog
в в режиме ожидания?Как и когда восстанавливается файл WAL, запускаемый на горячем резервном сервере? Проверяет ли резервный сервер его каталог
$PGDATA/pg_xlog
для новых файлов WAL? Или мне нужно запускать его вручную?Я говорю о горячего резерва, не потоковой репликации; поэтому я предполагаю, что мне не нужно настраивать
conninfo
. Я прав?После настройки
hot_standby = on
и перезагрузки сервера, я все еще могу сделатьINSERT
без ошибок. Как настроить, чтобы сделать его действительно доступным только для чтения?
Шаги I после создания резервной копии: 1. 'psql postgres -c" выберите pg_start_backup ('backup') "'. 2. Скопируйте каталог $ PGDATA в файловую систему режима ожидания. 3. 'psql postgres -c" выберите pg_stop_backup() "'. 4. Установите 'hot_standby = on' в' postgresql.conf'. 5. Перезапустите сервер postgresql. –
Это выглядит хорошо (если у вас есть 'fsync = on'). Возможно, вы не скопировали достаточно архивов WAL, а тот, который содержит контрольную точку из 'backup_label', не существует. У вас есть файл 'backup_label', верно? Прочтите запись «START WAL LOCATION» и убедитесь, что там есть соответствующий файл WAL. –