Загрузка не удалась, пожалуйста, помогите :(

Пытаюсь обновить, но Discourse не может завершить инициализацию. Подскажите, пожалуйста, какие шаги мне предпринять, чтобы вернуть сайт в онлайн? Я запускал discourse-doctor, но он тоже не смог выполнить пересборку. Ниже привожу логи моей (третьей?) попытки:

 I, [2020-04-11T13:05:40.743940 #1]  INFO -- : Загрузка --stdin
I, [2020-04-11T13:05:40.750131 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-04-11T13:05:40.800464 #1]  INFO -- : Генерация локалей (это может занять время)...
Генерация завершена.

I, [2020-04-11T13:05:40.800750 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-04-11T13:05:40.804473 #1]  INFO -- : 
I, [2020-04-11T13:05:40.804720 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-04-11T13:05:40.809297 #1]  INFO -- : 
I, [2020-04-11T13:05:40.809573 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-04-11T13:05:40.813859 #1]  INFO -- : 
I, [2020-04-11T13:05:40.814113 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-04-11T13:05:40.818749 #1]  INFO -- : 
I, [2020-04-11T13:05:40.819005 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-04-11T13:05:40.823149 #1]  INFO -- : 
I, [2020-04-11T13:05:40.823401 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/04/11 13:05:40 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Connection refused
I, [2020-04-11T13:05:40.831215 #1]  INFO -- : 
I, [2020-04-11T13:05:40.831436 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-04-11T13:05:40.837350 #1]  INFO -- : 
I, [2020-04-11T13:05:40.837549 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-04-11T13:05:40.843241 #1]  INFO -- : 
I, [2020-04-11T13:05:40.843486 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-04-11T13:05:40.848311 #1]  INFO -- : 
I, [2020-04-11T13:05:40.848643 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-04-11T13:05:40.853421 #1]  INFO -- : 
I, [2020-04-11T13:05:40.863897 #1]  INFO -- : Файл > /etc/service/postgres/run  chmod: +x  chown: 
I, [2020-04-11T13:05:40.873965 #1]  INFO -- : Файл > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2020-04-11T13:05:40.884485 #1]  INFO -- : Файл > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2020-04-11T13:05:40.895036 #1]  INFO -- : Файл > /root/upgrade_postgres  chmod: +x  chown: 
I, [2020-04-11T13:05:40.895478 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
I, [2020-04-11T13:06:09.192272 #1]  INFO -- : 
I, [2020-04-11T13:06:09.192593 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-04-11T13:06:09.197837 #1]  INFO -- : 
I, [2020-04-11T13:06:09.197992 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-04-11T13:06:09.228153 #1]  INFO -- : 
I, [2020-04-11T13:06:09.228375 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-04-11T13:06:09.233425 #1]  INFO -- : 
I, [2020-04-11T13:06:09.233760 #1]  INFO -- : > /root/upgrade_postgres
I, [2020-04-11T13:06:09.243357 #1]  INFO -- : 
I, [2020-04-11T13:06:09.243596 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2020-04-11T13:06:09.249007 #1]  INFO -- : 
I, [2020-04-11T13:06:09.249495 #1]  INFO -- : Замена data_directory = '/var/lib/postgresql/10/main' на data_directory = '/shared/postgres_data' в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.272106 #1]  INFO -- : Замена (?-mix:#?listen_addresses *=.*) на listen_addresses = '*' в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.272853 #1]  INFO -- : Замена (?-mix:#?synchronous_commit *=.*) на synchronous_commit = $db_synchronous_commit в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.273496 #1]  INFO -- : Замена (?-mix:#?shared_buffers *=.*) на shared_buffers = $db_shared_buffers в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.274139 #1]  INFO -- : Замена (?-mix:#?work_mem *=.*) на work_mem = $db_work_mem в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.274757 #1]  INFO -- : Замена (?-mix:#?default_text_search_config *=.*) на default_text_search_config = '$db_default_text_search_config' в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.275288 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-04-11T13:06:09.282029 #1]  INFO -- : 
I, [2020-04-11T13:06:09.282556 #1]  INFO -- : Замена (?-mix:#?max_wal_senders *=.*) на max_wal_senders = $db_max_wal_senders в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.330309 #1]  INFO -- : Замена (?-mix:#?wal_level *=.*) на wal_level = $db_wal_level в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.331016 #1]  INFO -- : Замена (?-mix:#?checkpoint_segments *=.*) на checkpoint_segments = $db_checkpoint_segments в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.331655 #1]  INFO -- : Замена (?-mix:#?logging_collector *=.*) на logging_collector = $db_logging_collector в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.332347 #1]  INFO -- : Замена (?-mix:#?log_min_duration_statement *=.*) на log_min_duration_statement = $db_log_min_duration_statement в /etc/postgresql/10/main/postgresql.conf
I, [2020-04-11T13:06:09.333020 #1]  INFO -- : Замена (?-mix:^#local +replication +postgres +peer$) на local replication postgres  peer в /etc/postgresql/10/main/pg_hba.conf
I, [2020-04-11T13:06:09.333660 #1]  INFO -- : Замена (?-mix:^host.*all.*all.*127.*$) на host all all 0.0.0.0/0 md5 в /etc/postgresql/10/main/pg_hba.conf
I, [2020-04-11T13:06:09.334205 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main
I, [2020-04-11T13:06:09.338659 #1]  INFO -- : > sleep 5
2020-04-11 13:06:09.481 UTC [49] LOG:  прослушивание IPv4-адреса "0.0.0.0", порт 5432
2020-04-11 13:06:09.482 UTC [49] LOG:  прослушивание IPv6-адреса "::", порт 5432
2020-04-11 13:06:09.544 UTC [49] LOG:  прослушивание Unix-сокета "/var/run/postgresql/.s.PGSQL.5432"
2020-04-11 13:06:10.813 UTC [52] LOG:  система баз данных была прервана при выключении; последнее известное состояние активности — 2020-04-11 12:42:48 UTC
2020-04-11 13:06:12.356 UTC [52] LOG:  система баз данных была выключена некорректно; выполняется автоматическое восстановление
2020-04-11 13:06:12.416 UTC [52] LOG:  повторное выполнение начинается с 84/BD1A85B0
2020-04-11 13:06:12.446 UTC [52] LOG:  недопустимая длина записи в 84/BD7B3570: ожидалось 24, получено 0
2020-04-11 13:06:12.446 UTC [52] LOG:  повторное выполнение завершено в 84/BD7B3530
2020-04-11 13:06:12.446 UTC [52] LOG:  последняя завершенная транзакция была в момент времени лога 2020-04-11 11:53:53.069757+00
I, [2020-04-11T13:06:14.343128 #1]  INFO -- : 
I, [2020-04-11T13:06:14.343449 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2020-04-11 13:06:14.409 UTC [56] postgres@postgres FATAL:  система баз данных запускается
2020-04-11 13:06:14.411 UTC [57] postgres@template1 FATAL:  система баз данных запускается
createdb: не удалось подключиться к базе данных template1: FATAL:  система баз данных запускается
I, [2020-04-11T13:06:14.413548 #1]  INFO -- : 
I, [2020-04-11T13:06:14.413822 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2020-04-11 13:06:14.493 UTC [68] postgres@discourse FATAL:  система баз данных запускается
psql: FATAL:  система баз данных запускается
I, [2020-04-11T13:06:14.495917 #1]  INFO -- : 
I, [2020-04-11T13:06:14.496250 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
2020-04-11 13:06:14.574 UTC [79] postgres@discourse FATAL:  система баз данных запускается
psql: FATAL:  система баз данных запускается
I, [2020-04-11T13:06:14.576284 #1]  INFO -- : 
I, [2020-04-11T13:06:14.576674 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
2020-04-11 13:06:14.655 UTC [90] postgres@discourse FATAL:  система баз данных запускается
psql: FATAL:  система баз данных запускается
I, [2020-04-11T13:06:14.658074 #1]  INFO -- : 
I, [2020-04-11T13:06:14.658635 #1]  INFO -- : Прерывание асинхронных процессов
I, [2020-04-11T13:06:14.658722 #1]  INFO -- : Отправка INT процессу HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 49
2020-04-11 13:06:14.658 UTC [49] LOG:  получен запрос быстрого выключения
I, [2020-04-11T13:06:24.659800 #1]  INFO -- : HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid:49 не завершился корректно, принудительное завершение!


ОШИБКА
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' завершился с ошибкой #<Process::Status: pid 80 exit 2>
Место возникновения ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec завершился с ошибкой с параметрами "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
3956a617d80571dd1ef87fcf7d23a319190bd909477e703ccb22cb25d0e137c8
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и найдите сообщения об ошибках, которые появились ранее; их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

Похоже, ваша база данных повреждена. Достаточно ли у вас места на диске? (Сомневаюсь, что это проблема, но было бы здорово, если бы это так и было.)

Самое простое решение — удалить каталог базы данных, после чего будет создана новая база данных. Затем вы сможете восстановить данные из вашей последней резервной копии.

Чтобы дать вам обновление, теперь, когда я вышел из самой жаркой фазы: перезагрузка сервера позволила приложению перестроиться. Это было предложение от @merefield, которое я случайно нашел здесь же и применил как отчаянную меру.

Так что, что бы там ни беспокоило Postgres, для меня это остается загадкой. Теперь у меня есть новые, но менее критичные проблемы. С другой стороны, мне не пришлось уничтожать мою большую базу данных.

@pfaffman, у нас значительный объем хранилища, мы даже близко не подошли к лимиту.

Спасибо за всю обратную связь, надеюсь, мой болезненный опыт поможет кому-то еще :slight_smile:

Привет,

мы только что получили аналогичное сообщение при повторной сборке в рамках обновления версии…

… и подумали, что с нами происходит то же самое — впервые за всё время —

… и с некоторой осторожностью начали искать каталог резервных копий ;]. Там оказалась свежая резервная копия, поэтому мы немного успокоились.

Мы также хотели поделиться тем, что, хотя мы и не перезагружали сервер, мы немного подождали, попытка пересборки второй раз завершилась неудачей с тем же сообщением об ошибке invalid record length at, но теперь процесс обновления, похоже, работает при третьей попытке. На сервере достаточно места на диске, но в настоящее время наблюдается некоторая нагрузка по вводу-выводу.

Возможно, это поможет другим, кто может столкнуться с аналогичной ситуацией. Исходя из этого опыта, мы рекомендуем: а) снизить чрезмерное потребление ресурсов на хост-системе перед попыткой повторной пересборки и б) не сдаваться слишком рано.

С наилучшими пожеланиями,
Андреас.

Что ж, там сказано, что процесс восстановления идет, так что, возможно, стоит дать ему восстановиться? Думаю, вам, возможно, нужно перезапустить старый контейнер, чтобы это произошло.

Всё ли уже уладилось?

Всё прошло успешно, и обновление завершилось без ошибок с третьей попытки. Спасибо и с Новым годом!

Подобные проблемы, ранее наблюдавшиеся, удавалось решить, изменив значение тайм-аута:

Или просто выждав: