Существует главный сервер (9.6) и одна реплика. Уже более 1 года работает нормально. Нам пришлось перенастроить число процессоров на главном компьютере и забыть применить его к реплике, что фактически привело к его поломке из-за отсутствия архивированных файлов pg_xlog (мы храним только небольшое количество). Мы попытались реинициализировать реплику (событие с переустановкой VM + PostgreSQL) как обычно, но в итоге мы получили:
FATAL: the database system is starting up.
Проверенная конфигурация как на главном, так и на ведомом устройствах - выглядит хорошо. Он восстанавливал последовательные сегменты, не застрял здесь. Свободное дисковое пространство доступно как на главном, так и на ведомом устройствах. Невозможно подключиться к базе данных через psql
.
strace
в том процессе, который восстанавливает сегменты:
lseek(907, 0, SEEK_END) = 429228032
read(6, 0x7ffffb3dafc7, 1) = -1 EAGAIN (Resource temporarily unavailable)
lseek(3, 11747328, SEEK_SET) = 11747328
read(3, "\223\320\1\0\2\0\0\0\0@\263\272V\25\0\0y\v\0\0\0\0\0\0\0\210\20\33\0008@["..., 8192) = 8192
read(6, 0x7ffffb3dafc7, 1) = -1 EAGAIN (Resource temporarily unavailable)
lseek(808, 0, SEEK_END) = 44916736
lseek(3, 11755520, SEEK_SET) = 11755520
read(3, "\223\320\1\0\2\0\0\0\0`\263\272V\25\0\0\325\10\0\0\0\0\0\00025400041"..., 8192) = 8192
read(6, 0x7ffffb3dafc7, 1) = -1 EAGAIN (Resource temporarily unavailable)
lseek(840, 0, SEEK_END) = 860676096
read(6, 0x7ffffb3dafc7, 1) = -1 EAGAIN (Resource temporarily unavailable)
lseek(855, 0, SEEK_END) = 302235648
read(6, 0x7ffffb3dafc7, 1) = -1 EAGAIN (Resource temporarily unavailable)
Мысль о:
- разрешениях наrecovery.conf (значение 600)
- PostgreSQL не читает postgresql.conf (маловероятно)
- проблема с сетью
- повреждение мастера
- транзакции при восстановлении главной блокировкина ведомом устройстве
Есть идеи?
Реплика инициализируется с помощью:
pg_basebackup -D /var/lib/pgsql/9.6/data -P --xlog-method=stream -R --checkpoint=fast -U replica -W -h IP
pg_log как раз перед тем, как она столкнулась с отсутствием файлов pg_xlog и начала принимать соединения:
< 2019-10-24 14:02:52.930 CEST > FATAL: the database system is shutting down
< 2019-10-24 14:03:32.169 CEST > LOG: shutting down
< 2019-10-24 14:03:57.270 CEST > LOG: database system is shut down
< 2019-10-24 14:04:55.694 CEST > LOG: 00000: database system was shut down in recovery at 2019-10-24 14:03:57 CEST
< 2019-10-24 14:04:55.694 CEST > LOCATION: StartupXLOG, xlog.c:6060
< 2019-10-24 14:04:55.694 CEST > LOG: 00000: entering standby mode
< 2019-10-24 14:04:55.694 CEST > LOCATION: StartupXLOG, xlog.c:6135
< 2019-10-24 14:04:55.712 CEST > LOG: 00000: redo starts at 1553/E2012790
< 2019-10-24 14:04:55.712 CEST > LOCATION: StartupXLOG, xlog.c:6833
< 2019-10-24 14:06:02.320 CEST > FATAL: 57P03: the database system is starting up
< 2019-10-24 14:06:02.320 CEST > LOCATION: ProcessStartupPacket, postmaster.c:2221
< 2019-10-24 14:12:43.461 CEST > LOG: 00000: received fast shutdown request
< 2019-10-24 14:12:43.461 CEST > LOCATION: pmdie, postmaster.c:2679
< 2019-10-24 14:14:17.410 CEST > LOG: 00000: shutting down
< 2019-10-24 14:14:17.410 CEST > LOCATION: ShutdownXLOG, xlog.c:8095
< 2019-10-24 14:15:41.730 CEST > LOG: 00000: database system is shut down
< 2019-10-24 14:15:41.730 CEST > LOCATION: UnlinkLockFiles, miscinit.c:763
< 2019-10-24 14:17:13.492 CEST > LOG: 00000: database system was shut down in recovery at 2019-10-24 14:15:40 CEST
< 2019-10-24 14:17:13.492 CEST > LOCATION: StartupXLOG, xlog.c:6060
< 2019-10-24 14:17:13.553 CEST > LOG: 00000: entering standby mode
< 2019-10-24 14:17:13.553 CEST > LOCATION: StartupXLOG, xlog.c:6135
< 2019-10-24 14:17:15.654 CEST > LOG: 00000: redo starts at 1555/C0019B8
< 2019-10-24 14:17:15.654 CEST > LOCATION: StartupXLOG, xlog.c:6833
< 2019-10-24 14:17:29.507 CEST > FATAL: 57P03: the database system is starting up
< 2019-10-24 14:17:29.507 CEST > LOCATION: ProcessStartupPacket, postmaster.c:2221
< 2019-10-24 14:29:46.171 CEST > LOG: 00000: consistent recovery state reached at 1557/5A30CB8
< 2019-10-24 14:29:46.171 CEST > LOCATION: CheckRecoveryConsistency, xlog.c:7647
< 2019-10-24 14:29:46.171 CEST > LOG: 00000: database system is ready to accept read only connections
< 2019-10-24 14:29:46.171 CEST > LOCATION: sigusr1_handler, postmaster.c:5023
< 2019-10-24 14:29:46.386 CEST > LOG: 00000: started streaming WAL from primary at 1557/6000000 on timeline 2
< 2019-10-24 14:29:46.386 CEST > LOCATION: WalReceiverMain, walreceiver.c:384