Имя: Пароль:
1C
1С v8
POSTGRESQL. Загадочные явления.
0 bvn-2005
 
04.02.19
15:59
Win 2008R2 + PostgreSQL + 1C. После аварийного отключения питания postgre не стартует. При попытке вручную запустить службу выдается сообщение: "Службы была запущена и сразу остановлена". Но самое интересное то, что в какой-то момент 1С запустилась, хотя служба postgre по-прежнему не запущена...
Собственно, 2 вопроса:
почему не запускается postgre  и почему запустилась 1С?
1 mikecool
 
04.02.19
16:09
почему не запускается postgre - смотреть журналы событий, скорее всего - логин пароль юзера не походят для запуска или прав нет
почему запустилась 1С - какая разница, главное чтобы работало постоянно
2 Valkyrie
 
04.02.19
16:14
(0) Было такое, разбираться не стали, помогла переустановка PostgreSQL
3 bolero
 
04.02.19
16:22
(2) отличный подход!

ТС, в логи смотреть ни в коем случае не надо! просто переустанови!

(0) кластер 1с запускается при недоступной базе, только не может запустить фоновые задания, и каждому пользователю отвечает, что sql недоступен. Как только sql появится - рестарт сервера 1с не понадобится.
4 Valkyrie
 
04.02.19
16:24
(3) :)
База была нужна срочно, поэтому анализ логов проводился после. Запустить нужно было здесь и сейчас.
5 eklmn
 
гуру
04.02.19
16:42
(4) ну значит в логах ничего не нашли или ничего не поняли, если все равно советуете переустановить?
Выхлоп и анализ логов привели к чему то?
6 Valkyrie
 
04.02.19
16:48
(5) Хехе, там после этого проблемы с отключением питания продолжились, упал рейдконтроллер и клиент купил новый сервер)
Так что советую сразу покупать новый сервер!
7 Valkyrie
 
04.02.19
16:49
(5) А если серьезно, то анализ логов дал понять, что накрывались жесткие диски в стойке, что и подтвердилось впоследствии.
8 bvn-2005
 
05.02.19
08:26
" смотреть журналы событий"
В виндовом журнале событий куча сообщений такого вида:
"FATAL:  the database system is starting up"

"анализ логов"
Можно про это подробнее... хотя бы где искать эти логи?

" кластер 1с запускается при недоступной базе, только не может запустить фоновые задания, и каждому пользователю отвечает, что sql недоступен"
ТАк база-то доступна и полноценно работает...???
9 Nikoss
 
05.02.19
08:53
(8) ты в гугле был?

https://forum.lissyara.su/bazy-dannyh-f52/srochno-nujna-pomosch-upal-posgresql-t37927.html

[При ошибках в логах транзакций сервер postgresql не запускается.
Т.е. их необходимо почистить т.е. сделать pg_resetxlog.]
10 DrLekter
 
05.02.19
09:29
Встречался с таким. При этом процессы postgre активны и работают с процом, но служба не стартует. Если оставить его в покое на некоторое время, запустится само. Время зависит от базы и производительности машины. На i7 это занимало минут двадцать, на дохленьком компе с копией той же базы - полдня.
Предполагаю, при аварийном отключении что-то в базах ломается (там же в памяти многое происходит) и он перед запуском службы восстанавливает базу.
11 bvn-2005
 
05.02.19
09:39
"запустится само"
Прошли почти сутки - не запустилось...
"что-то в базах ломается и он перед запуском службы восстанавливает базу"
Сейчас обнаружил: в журнал событий непрерывно пишутся сообщения такого вида:
LOG:  autovacuum: found orphan temp table "pg_temp_21"."tt5" in database "rzp2"

Действительно, восстанавливает?
12 bolero
 
05.02.19
15:45
(8) "system is starting up" - это он время от времени говорит, что пытается стартовать, чтобы не молчать

FATAL в этом случае лишь уровень, чтобы в лог упало при любых настройках логов

"system is ready to accept connections" - это стартанул

(8) > хотя бы где искать эти логи?
В том же каталоге, где лежит база, каталог pg_log (либо просто log в версии 10)

(11) вряд ли, просто симптомы

(10) > перед запуском службы восстанавливает базу
верно, при нормальной работе сначала падает на диск лог транзакций, а потом заменяются файлы таблиц. Если питание пропало после записи лога транзакций, но до записи таблиц - из WAL пытается восстановить правильное состояние базы.

Самая стрёмная ситуация - когда лог транзакций записался с ошибкой, что видимо и произошло. В таком случае (9) может помочь, но несколько последних документов/действий будет потеряно.
13 igork1966
 
05.02.19
16:00
(10) +1000
Тоже не раз бывало... чего-то оног там делает с незавершенными транзакциями судя по всему.
14 ansh15
 
05.02.19
16:02
(11) >>Действительно, восстанавливает?
Не всегда, иногда приходится что-нибудь делать вручную - https://habr.com/ru/company/postgrespro/blog/282770/
15 igork1966
 
05.02.19
16:03
(13) + пишет что-то вроде:
2018-12-10 11:30:02 MSK СООБЩЕНИЕ:  работа системы БД была прервана; последний момент работы: 2018-12-10 11:18:41 MSK
2018-12-10 11:30:02 MSK ВАЖНО:  система баз данных запускается
2018-12-10 11:30:03 MSK ВАЖНО:  система баз данных запускается
2018-12-10 11:30:04 MSK ВАЖНО:  система баз данных запускается
.....
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  система БД была остановлена нештатно; производится автоматическое восстановление
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  запись REDO начинается со смещения C1/3C3B7548
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  запись нулевой длины по смещению C1/3C3C69E0
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  записи REDO обработаны до смещения C1/3C3C69B0
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  последняя завершённая транзакция была выполнена в 2018-12-10 11:27:51.952+03
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  Защита от наложения мультитранзакций сейчас включена
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  система БД готова принимать подключения
2018-12-10 11:31:06 MSK СООБЩЕНИЕ:  процесс запуска автоочистки создан
2018-12-10 11:47:40 MSK NOTICE:  table "tt1" does not exist, skipping
2018-12-10 11:47:40 MSK STATEMENT:  drop table if exists tt1 cascade;create temporary table tt1 (_Fld29433RRef bytea, _Fld29434 numeric(14, 0), _Fld29435 numeric(15, 0), _Fld29436 timestamp, _Fld29437 numeric(15, 3), _Fld29438 numeric(10, 0), _Fld29439 mvarchar(1000), _Fld29440 timestamp, _Fld29441 numeric(14, 0), _Fld29442 mvarchar(128), _Fld29443 timestamp, _Fld29444 boolean ) without oids
2018-12-10 11:50:21 MSK NOTICE:  table "tt2" does not exist, skipping
2018-12-10 11:50:21 MSK STATEMENT:  drop table if exists tt2 cascade;create temporary table tt2 (_Fld28213 numeric(1, 0), _Fld28214 timestamp, _Fld28215 mvarchar(100), _Fld28216 bytea, _Fld28217 numeric(15, 3), _Fld28218 timestamp ) without oids
2018-12-10 11:50:22 MSK NOTICE:  table "tt3" does not exist, skipping
2018-12-10 11:50:22 MSK STATEMENT:  drop table if exists tt3 cascade;create temporary table tt3 (_Q_000_F_000RRef bytea ) without oids
2018-12-10 11:50:22 MSK NOTICE:  index "tmpind_0" does not exist, skipping

.....
16 ansh15
 
05.02.19
16:19
Здесь еще разбирались PostgeSQL не стартует: pg_resetxlog: could not create pg_control file: File exists
Насчет копии каталога data перед опытами не забудьте.
Ошибка? Это не ошибка, это системная функция.