
Fike
09.09.2018
05:07:51
вот с тем народом я бы действительно в один проект не пошел

Yukari
09.09.2018
06:39:31

Alexey
09.09.2018
07:05:44

MikaelBox
09.09.2018
07:12:06

Google

Ilia
09.09.2018
07:13:54


MikaelBox
09.09.2018
07:29:36

Ilia
09.09.2018
07:39:06

Alexey
09.09.2018
07:45:15

Nikolai
09.09.2018
09:17:15

Alexey
09.09.2018
09:51:46

Terminator
09.09.2018
10:08:45
@mvikharev будет жить. Поприветствуем!


Max
09.09.2018
10:17:02
Коллеги, приветсвую.
Апгрейднули постгрес с 9.4 до 10.5 на весьма нагруженной базе и теперь имеет проблемы с валовой репликацией. На мастере все ок но после некоторого времени работы происходит отваливание слейва. Wal sender и wal receiver отваливаются. В логе
на primary
2018-09-09 04:50:23 MSK [5542]: [1-1] LOG: terminating walsender process due to replication timeout
на реплике
2018-09-09 04:50:46 MSK [5728]: [2-1] FATAL: could not send data to WAL stream: server closed the connection unexpectedly
репликация warm standby or log shipping
в это время SELECT * FROM pg_stat_replication;
отдаёт пустую табличку, а должен показывать статистику вал сендера,
Репликация восстаналивается только после рестарта слейва.
Те как будто слейв не переподключается к мастеру после сетевого сбоя. Кто-нибудь сталкивался с подобным поведением?
подскажите куда копать. wal_level = 'hot_standby'
master
max_wal_senders 5
max_replication_slots 10
wal_keep_segments 20000
wal_sender_timeout 1min
track_commit_timestamp off
synchronous_standby_names
vacuum_defer_cleanup_age 0
slave
hot_standby on
max_standby_archive_delay 1h
max_standby_streaming_delay 1h
wal_receiver_status_interval 10s
hot_standby_feedback off
wal_receiver_timeout 1min
wal_retrieve_retry_interval 5s
пробовали менять hot_standby_feedback = on -> off, воспроизводится


Yaroslav
09.09.2018
10:23:46

Google

Max
09.09.2018
10:29:54

Yaroslav
09.09.2018
10:32:25

Max
09.09.2018
10:32:44
сеть может сбоить, но на 9.4 не было проблем
вокруг этих сообщений ничего подозрительного, обычные лог записи по стате работы чекпойнта, вакума и медленные запросы

Nort
09.09.2018
10:37:36
Чуваки из говноаутсорса пожрали первого в жизни говна, столкнулись с тем что работу надо выбирать, а не просто идти в первое попавшееся место и жалуются
Все какое то однотипное и тупое
It happens было повеселее

Fike
09.09.2018
10:39:17

Yaroslav
09.09.2018
10:41:16

Max
09.09.2018
10:42:55
Настройки стабильны несколкько лет. в 10 Ничего вроде особо не поменялось судя по докам, кроме альтернативного именования wal_level
и оно работает, те вот сутки работает после ресинка. потом - бац, и сендер отваливается
на сколько я понимаю - это в приницпе допустимая ситуация, но ресивер как будто не перезапускается после этого FATAL'а

Yaroslav
09.09.2018
10:51:53

Max
09.09.2018
11:15:43

Yaroslav
09.09.2018
11:21:54

Nikolai
09.09.2018
12:02:11
Подтверждаю. Мы тоже ловили приветы в конфигах

Max
09.09.2018
12:03:02
master
max_wal_senders 5
max_replication_slots 10
wal_keep_segments 20000
wal_sender_timeout 1min
track_commit_timestamp off
synchronous_standby_names
vacuum_defer_cleanup_age 0
slave
hot_standby on
max_standby_archive_delay 1h
max_standby_streaming_delay 1h
wal_receiver_status_interval 10s
hot_standby_feedback off
wal_receiver_timeout 1min
wal_retrieve_retry_interval 5s
видимо при сбое сети wal_sender_timeout - мастер убивает сендера для слейва и слейв отваливается с FATAL

Google

Max
09.09.2018
12:05:46
предполагаю что увеличение этого значения больше чем на слейве исправит ситуацию
но хз - нормально ли это что если мастер первый рвет репликационное соединение то слейв не реконнектится

Dmitry
09.09.2018
13:24:34
мда...

Terminator
09.09.2018
13:26:26
@uabeautifull будет жить. Поприветствуем!

me
09.09.2018
13:29:03
Есть мысли как улучшить delete в mysql innodb?
Покрутил cashe , добавил памяти innodb buffer, вообщем то все настройки такие покрутил
Пробовал удалять в цикле, подавая через limit и все записи сразу delete через условие с помощью join
Иди psql лучше справится?
В таблице 35 мл записей

Adikhanov
09.09.2018
14:33:41

me
09.09.2018
14:34:40
insert получается намного быстрее delete?
нужно что то менять в настройках памяти?

Adikhanov
09.09.2018
14:39:55

me
09.09.2018
14:40:08
35мл из 40мл
дальше база будет еще больше
~200мл

Adikhanov
09.09.2018
14:50:42
Для начала Вам необходимо проверить сам запрос с помощью EXPLAIN

me
09.09.2018
14:53:10
а я смотрел его
индексы есть везде где нужно, там идет полный скан таблицы
и его не обойти(

MikaelBox
09.09.2018
14:55:21

me
09.09.2018
14:59:50
получается не правильно задача связь таблиц по внешнему ключу?
так?

Google

Mike Chuguniy
09.09.2018
15:18:02

MikaelBox
09.09.2018
15:28:18
Тогда для меня загадка существования индексов ))) 1000 записей - используем индекс, лям - да зачем он нужен? %)

Max
09.09.2018
15:31:29
Скорее всего планировщик намерено выбирает секскан тк большую часть таблицы обновлять. ему придется обоити каждую строку и пометить ее как дуаленную. тут особо не ускоришь. если вам позарещ нужен индексскан - попробуйте перед эксплейном сделать set enable_seqscan =off;
если у вас всгде будет 95 процентов удаляться то лучше вам делать
BEGIN;
CREATE new_table as select * from old_tabl where INDEX_CONDITION;
DROP TABLE old_tabl;
ALTER TABLE new_table RENAME to old_tabl;
commit;
индекс по 5% вставки будет эффективнее.

me
09.09.2018
18:18:08
понял
спасибо!

Ilshat
09.09.2018
18:33:17
Думаю, можно партицировать таблицу и удалить партиции?

Ilia
09.09.2018
19:01:02

Ilshat
09.09.2018
22:46:12

Terminator
09.09.2018
23:36:18
Alexy AV будет жить. Поприветствуем!
Анастасия Габлеева будет жить. Поприветствуем!

Let Eat
10.09.2018
07:56:54
Если люди упоролись и хранят всю строку как один jsonb , то чтобы его обновлять ничего кроме serializable придумать нельзя?

Fike
10.09.2018
08:02:01
По идее SI (стандартный RR/RC) должен отменять такие транзакции, но я не настоящий сварщик

Yaroslav
10.09.2018
08:07:26

crux
10.09.2018
08:12:24
CREATE OR REPLACE FUNCTION my_func (arg TYPE ... )
RETURNS TABLE (
field1 type,
field2 type
.....
)
Какая разница, в пгадмине это делать или ещё где.
ну вот за то время что ты узнаёшь, как быстро и удобно натыкать мышкой в пгадмине ты уже сделал бы медленно и неудобно ))
ок, как быстро и удобно я не знаю, устраняюсь )

Let Eat
10.09.2018
09:11:18
Эээ... а как это связано?
Ну чтобы его обновить открывают транзакцию, читают, меняют джсон, пишут обратно. Есди это одновременно происходит из двух и более транзакций, то кто последний записал, того и тапки, записи всех остальных просто стираются, хотя им об успехе доложили :)

Denis
10.09.2018
09:14:20
на RR - вторая транзакция должна быть заблокирована на чтение, пока не завершится первая. то есть, теоретически, вам подходит. а вот с RC вы не заметите конфликта, да: "кто последний записал, того и тапки"