@pgsql

Страница 462 из 1062
Аггей
07.09.2017
08:43:10
Переключение делается бэкэндом haproxy

Vadim
07.09.2017
08:44:26
ну ладно, а типо проверки какие-то ручные, или восстановление бывшего мастера в качестве standby надо действия осуществлять

Аггей
07.09.2017
08:50:46
Сейчас попробую схему нарисовать

Artem
07.09.2017
08:53:58
Всем привет, проблема с Segmentation fault Постгреса на распараллеливании запросов была решена.

Google
Mike Chuguniy
07.09.2017
08:54:14
Как?

Artem
07.09.2017
08:54:19
Апдейтом до версии 9.6.5

:)

Vadim
07.09.2017
09:00:11
как то можно запросом посмотреть в каком режиме БД?

Sergey
07.09.2017
09:02:08
"Prevent crash when passing fixed-length pass-by-reference data types to parallel worker processes (Tom Lane)" Оно?

Аггей
07.09.2017
09:09:15
Vadim
07.09.2017
09:09:51
спасибо)

Аггей
07.09.2017
09:09:53
как то можно запросом посмотреть в каком режиме БД?
Я мониторю по https://github.com/mhagander/bgw_replstatus

Vadim
07.09.2017
09:10:15
мне нужна инструкцию что делать) не чтобы делать, а просто документик

типо действия при аварии

Аггей
07.09.2017
09:14:11
При аварии происходит автопереключение и все работает дальше, но мастер старый - недееспособен (и это хорошо). После того как мы поняли - что автофайловер у нас сработал и убедились что с бд все хорошо (на новом мастере) - мы убиваем старый мастер и накатываем его как реплику к новому мастеру

Инструкции к сожалению под рукой такой нет

Vadim
07.09.2017
09:17:36
После того как мы поняли - что автофайловер у нас сработал и убедились что с бд все хорошо (на новом мастере) — вот как это делать?

Google
Аггей
07.09.2017
09:35:15
Ну что сработал - будет понятно по странице статуса в haproxy, приложению, логам postgres и repmgr

У repmgr есть команда - cluster show в которой тоже видно

Убедились что с БД все хорошо - это уже сложнее - по сути при переключении - repmgr выбирает реплику с наименьшим лагом... и пишет лаг в лог

Vadim
07.09.2017
09:54:18
а переключение switchover мастера есть? в ручном режиме

и вообще при переключении мастера, на новый мастер не дозаписываются изменения которые не успели на него дойти в асинхронном режиме допустим, или там по-любому будет потеря?

Igor
07.09.2017
10:02:04
привет, подскажите, поменял postgresql.conf и кластер не запускается, говорит postgresql.conf contains errors, есть вариант понять что именно не подошло?

Vadim
07.09.2017
10:04:19
Есть
какой командой выполнить?

Игорь
07.09.2017
10:05:07
тоже потеря. Синхронная реплика поможет, но это больно

Аггей
07.09.2017
10:07:36
standby switchover

Выполняется на standby

Vadim
07.09.2017
10:08:31
repmgr -f /etc/repmgr.conf -C /etc/repmgr.conf standby switchover

типо как-то так видимо

спасибо

Mikhail
07.09.2017
11:38:56
Всем привет! Как в одно update можно проапдейтить несколько строк разными значениями?

Ilya
07.09.2017
11:39:26
алгоритмом

формулой, в которой есть разветвление

Mikhail
07.09.2017
11:41:45
не понял, можно пример?

Google
Ilya
07.09.2017
11:42:28
CASE ...

Mikhail
07.09.2017
11:44:42
Ага, только почему то этот способ не рекомендуют

какие там проблемы?

https://stackoverflow.com/questions/6446250/sql-statement-with-multiple-sets-and-wheres

вот тут второй ответ

Ilya
07.09.2017
11:45:21
Ну это тоже компромис...

Mikhail
07.09.2017
11:45:57
между чем и чем?

Ilya
07.09.2017
11:46:16
Можешь времянку создать и джойнить

через with

Mike Chuguniy
07.09.2017
11:48:31
https://stackoverflow.com/questions/6446250/sql-statement-with-multiple-sets-and-wheres
Почитал. Прикинул оверхед. А позвольте поинтересоваться, из откуда такая дикая задача вылезла? Уж очень интересно...

Mikhail
07.09.2017
11:49:12
А не отдельными запросами каждую строку

Darafei
07.09.2017
11:50:16
вставь в temporary через copy, сделай индексов если надо и заапдейти из неё

Sergey
07.09.2017
11:50:54
update sigle_field_table set id = id+1;

Mikhail
07.09.2017
11:51:38
вставь в temporary через copy, сделай индексов если надо и заапдейти из неё
Хм, типо вставить во временную таблицу, а потом из нее апдейтить? А разве через CASE не проще и быстрее будет?

Darafei
07.09.2017
11:52:13
ну кто тебя знает, сколько тебе апдейтить надо

миллионы записей в case так себе будет работать

Mikhail
07.09.2017
11:52:41
Можно еще вставлять через upsert, используя ON CONFLICT

через ON CONFLICT быстрее будет чем update c CASE или со временной таблицей?

Darafei
07.09.2017
11:55:04
полином, который описывает асимптотику этих решений, будет давать разные оценки времени на разных объёмах входных данных

Google
Mikhail
07.09.2017
11:58:29
Darafei
07.09.2017
11:58:39
да

три строчки скорее всего лучше обновить кейсом

Mikhail
07.09.2017
11:58:51
Понял, спасибо

Darafei
07.09.2017
11:59:09
тысячу - временной таблицей

Mike Chuguniy
07.09.2017
11:59:22
да
И для базы куча UPDATE-ов будет всегда легче, нежели один развесистый UPDATE.

Darafei
07.09.2017
11:59:26
on conflict - где-то посередине

Mikhail
07.09.2017
12:00:09
И для базы куча UPDATE-ов будет всегда легче, нежели один развесистый UPDATE.
да, но тогда добавиться дополнительные итерации отправки по сети

Mike Chuguniy
07.09.2017
12:00:19
Ну... ON CONFLICT - это вообще отдельная песТня.

с парамерами.

Или неименованный блок.

Darafei
07.09.2017
12:01:01
хранимка точно хуже копи+апдейт

любой расписанный руками seq scan хуже нативного seq scan :)

Mikhail
07.09.2017
12:04:31
Хранимка.
т.е. написать хранимку которая возьмет на вход параметры и составит из них апдейты?

Mike Chuguniy
07.09.2017
12:04:43
Да.

Mikhail
07.09.2017
12:05:19
Да.
А есть где нибудь пример такой хранимки?

Mike Chuguniy
07.09.2017
12:05:34
В документации по ПГ.

Mikhail
07.09.2017
12:07:37
В документации по ПГ.
Ага, спасибо. А в хранимку можно передавать массивы?

Google
Mike Chuguniy
07.09.2017
12:09:20
Кстати, я глянул, где оно в доках: https://www.postgresql.org/docs/10/static/plpgsql-control-structures.html

Блин, 10-ка

Mikhail
07.09.2017
12:09:42
Не знаю, не писал никогда для постгриса, только для oracle :)

Mike Chuguniy
07.09.2017
12:09:42
https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html

Mikhail
07.09.2017
12:10:40
Ага, спасибо :)

Mike Chuguniy
07.09.2017
12:11:09
https://www.postgresql.org/docs/9.6/static/plpgsql.html pl/pgsql, собственно.

Николай
07.09.2017
12:21:13
Подскажите, а можно ли сделать SQL-инъекцию для команды COPY? Ну то есть я создал файл с инъекцией, юзер выполняет copy файл, у него там дропается таблица например.

Darafei
07.09.2017
12:21:47
нет, copy не проходит через выполнение

Darafei
07.09.2017
12:22:53
в инлайн копи можно закончить поток как обычно

Николай
07.09.2017
12:22:55
Хочешь крутой дамп смастерить?
Просто у меня идет обновление таблицы с помощью copy, а таб не экранировался - скрипт упал. Думаю насколько всё может быть серьезно

Darafei
07.09.2017
12:23:09
нет, у тебя просто неправильный csv

Николай
07.09.2017
12:25:19
Ясно, спасибо

lemi
07.09.2017
12:45:46
индекс по primary key ни у кого не ломался ?

или по unique индексу отдельному ?

такое вообще возможно ?

Айтуар
07.09.2017
13:11:18
Потом дубли отгребал

lemi
07.09.2017
13:11:40
и как проявляется такое действо ?

Страница 462 из 1062