
Andrew
16.09.2018
15:06:17

Fike
16.09.2018
15:08:41
Благодарю!
Там скорее всего полприложения придется переписывать, поэтому не подойдет. Но вообще самый каноничный метод, в будущем сможете применить.

Terminator
16.09.2018
15:40:07
@GrandAleks будет жить. Поприветствуем!

Slava
16.09.2018
15:57:54

Google

ivan
16.09.2018
16:28:51

╰─═ঊঈGooDeeJaYঊঈ═─╯
16.09.2018
16:41:12
что интересует?
Нужна хорошая инфа о пулах и транзакциях, в доке прочитал чуть не понял

Slava
16.09.2018
17:23:09

Timur
17.09.2018
05:33:47
добрый день. Подскажите, чем можно относительно быстро мигрировать БД размером где-то в 300 гигабайт с сервера на сервер? Перетаскивать дамп или сами файлы займёт в районе часа (а дамп восстанавливать - ещё дольше), а останавливать БД не хотелось бы. Хотелось бы поднять master-slave репликацию без остановки экземпляра самой БД
пинки в документацию приветствуются, конечно
официальная документация рекомендует либо pg_dump, либо перетаскивать файлы, эхма
т.е. вопрос даже не в быстроте, а в том, чтобы не останавливать мастер на время осуществления копирования

Mikhail
17.09.2018
05:40:01
pg_basebackup

Timur
17.09.2018
05:41:04
pg_basebackup
т.е. он сделает консистентный снапшот без остановки, и для старта слейва мне достаточно будет иметь WAL начиная с момента старта pg_basebackup?

Mikhail
17.09.2018
05:41:23
Вас в гугле забанили?

Timur
17.09.2018
05:43:03
чат на английском языке: ты задаёшь вопрос, тебе отвечают. Чат на русском языке: ты задаёшь вопрос, а потом тебе долго рассказывают, какой ты мудак :)
тем не менее, большое спасибо

Сергей
17.09.2018
05:51:28

Google

Terminator
17.09.2018
06:03:57
@InessaHr будет жить. Поприветствуем!

Aleksandr
17.09.2018
06:05:58
единственное нужно будет перезагрузить мастер что бы добавить в pg_hba.conf новую запись для разрешения удаленного подключения к пользователю у которого права репликации
возможно и не нужно перезагружать а есть какой то способ релоада , но повторюсь, с ПГ начал только знакомство ?

Timur
17.09.2018
06:16:20
спасибо большое :)
у меня однократная по сути задача, полноценную репликацию уже потом поднимать буду
надеюсь не придётся задавать тупых вопросов

Айтуар
17.09.2018
06:17:15

Aleksandr
17.09.2018
06:17:56

Alexander
17.09.2018
06:20:42

Timur
17.09.2018
06:21:39

Alexander
17.09.2018
06:23:34
А OS какие?

Mike Chuguniy
17.09.2018
06:31:31

Aleksandr
17.09.2018
06:39:30

Mike Chuguniy
17.09.2018
06:41:16
официальная документация рекомендует либо pg_dump, либо перетаскивать файлы, эхма
Для создания ФИЗИЧЕСКОЙ реплики pg_dump? о_О Вы что курите?!
И не надо читать чего-то из интернетов, советы в таких статьях всегда либо неполные, либое содержат неточности (archive_command&restore_command, ага), тем более, что по постгресу, благодаря Постгресу профессиональному, есть документация на русском языке: https://postgrespro.ru/docs/postgresql/10/high-availability

Aleksandr
17.09.2018
06:42:28
прошу прощения тогда, хотел помочь а вы теперь злитесь ?

Timur
17.09.2018
06:48:57

Google

Timur
17.09.2018
06:51:38
Для создания ФИЗИЧЕСКОЙ реплики pg_dump? о_О Вы что курите?!
И не надо читать чего-то из интернетов, советы в таких статьях всегда либо неполные, либое содержат неточности (archive_command&restore_command, ага), тем более, что по постгресу, благодаря Постгресу профессиональному, есть документация на русском языке: https://postgrespro.ru/docs/postgresql/10/high-availability
нет, не для создания физической реплики. Не ругайтесь, возможно, я оговорился, простите. Я не dba :)

Darafei
17.09.2018
06:53:09

Alexander
17.09.2018
07:10:04
ubuntu и там и там
Значит pg_basebackup годится. Если с минимальным простоем, то вот это тоже норм вариант - https://www.2ndquadrant.com/en/resources/pglogical/
https://www.depesz.com/2016/11/08/major-version-upgrading-with-minimal-downtime/

Mike Chuguniy
17.09.2018
07:15:08
@flykens, ты зачем человеку всякое непотребство рекомендуешь, когда ему нужна репика межу двумя нодами одной мажорной версии?
Тем более, что по твоим же словам, оно тормозит, причем тормозит люто.

Alexander
17.09.2018
07:24:46
Тем более, что по твоим же словам, оно тормозит, причем тормозит люто.
Насколько я понял - нужна именно миграция, с минимальным простоем. Сколько оно будет переливать и синхронизировать перед остановкой основной БД - вопрос второй. Главное тут - критичность времени остановки, что pglogical сводит к минимуму. А завтра человеку понадобится перелить с разных версий PG, но с теми же требованиями, а решение уже будет обкатано)))

Mike Chuguniy
17.09.2018
07:28:59
А потоковая реплика не сводит к минимуму время простоя? о_О, Саш, ты чего вчера употреблял?

Timur
17.09.2018
07:40:20
там забавная история, в общем
я вышел на новую работу
а за несколько дней до этого полетел жёсткий диск на сервере (да, там не было рейда, не спрашивайте), полетел не полностью - фс ушла в рид-онли. База постгреса лежит на SSD, а полетел другой диск, который с системой
кое-как оно работает
однако рестартануть с новыми параметрами не получится - т.к. postgresql.conf лежит на ФС, смонтированной в рид-онли (да, я знаю про mount -o bind, но всё равно лишний раз трогать неохота - не знаю, как оно себя поведёт)
задача - перетащить на другой сервер базу, минимально задействуя существующий
смонтировали по nfs каталог на втором сервере, сейчас pg_basebackup переливает БД, в параметрах сменил через alter system checkpoint_timeout на 15m
задачу можно решить массой способов, я просто хотел бы минимизировать время простоя

Mike Chuguniy
17.09.2018
07:43:48

Timur
17.09.2018
07:44:29
данные на другом диске, с ним всё в порядке

Mike Chuguniy
17.09.2018
07:45:05

Timur
17.09.2018
07:45:25
поэтому придётся доставать WAL из pg_wal

Google

Timur
17.09.2018
07:46:30
в общем, никакого особого рокетсаенса нет
задача почти наверняка тривиальнее некуда

Mike Chuguniy
17.09.2018
07:47:25
pg_basebackup с "-X stream"
Но для этого д/б включено max_wal_senders >= 2
А если нет, то рестарт
Куда ни кинь, везде поленом по тыковке.

Timur
17.09.2018
07:48:36
по дефолту в десятке вроде 10
там с nfs тоже была история (nfs-common не был установлен), пришлось делать dpkg -x для двух пакетов и потом через LD_PRELOAD=либа ./mount_nfs ... :)
в общем, ничего такого особо ужасного
я просто с базами редко работаю, сетевой инженер

Mike Chuguniy
17.09.2018
07:52:40

Alexander
17.09.2018
07:58:48

Timur
17.09.2018
07:58:49
pg_basebackup с "-X stream"
смотрите, оно же продолжает писать логи пока работает сервер, правильно? Т.е. я запускаю эту команду, потом параллельно запускаю слейв (когда оно закончит делать дамп основной базы), слейв у меня стартует в recovery, а логи стримятся запущенным pg_basebackup, я правильно понимаю?

Mike Chuguniy
17.09.2018
08:02:50
pg_basebackup с опцией -X stream вам в одном подключении вытянет данные, а во втором - пишущиеся в это время WAl-ы.


Timur
17.09.2018
08:04:13
Не надо запускать слейв параллельно с pg_basebackup, как вы себе это представляете?
я так понимаю, что pg_basebackup -X stream сперва дампит сами файлы БД, а затем дампит лог транзакции. Мануал говорит:
Stream the write-ahead log while the backup is created. This will open a second connection to the server and start streaming the write-ahead log in parallel while running the backup. Therefore, it will use up two connections configured by the max_wal_senders parameter. As long as the client can keep up with write-ahead log received, using this mode requires no extra write-ahead logs to be saved on the master.
или я неправильно понимаю?

Mike Chuguniy
17.09.2018
08:07:01
Слово parallel - это сперва данные, потом лог?! о_О, хренассе, неделька начинается!

Timur
17.09.2018
08:08:37

Google

Timur
17.09.2018
08:11:51
ладно, извините за тупые вопросы, разберусь. Извините за беспокойство :)

Yaroslav
17.09.2018
08:14:42

Timur
17.09.2018
08:18:13
Когда скопирует основные данные и достаточно WAL для достижения консистентности полученной копии при recovery.
копия-то будет консистентной, но мне нужна копия, которая будет актуальной :)
у меня в голове сложилась картинка (ложная, я понимаю) о том, что pg_basebackup -X stream пишет данные на момент старта, а логи продолжает писать параллельно до тех пор, пока его не прервёшь. Такое поведение было бы хорошим для бесшовного (или почти бесшовного) переноса данных на реплику: стопаем мастер, последние данные уходят на слейв, перезапускаем слейв без recovery.conf и готово. Я подумал не в ту сторону, ещё раз извините.

Antony
17.09.2018
08:22:53
Всем привет, правильно понимаю, что в случае do $$
begin
set enable_nestloop = False;
select * from table1 inner join table2 on table1.id = table2.t1;
end;
$$ language 'plpgsql'; enable_nestloop = False будет применено только для текущей транзакции


Yaroslav
17.09.2018
08:26:16
копия-то будет консистентной, но мне нужна копия, которая будет актуальной :)
у меня в голове сложилась картинка (ложная, я понимаю) о том, что pg_basebackup -X stream пишет данные на момент старта, а логи продолжает писать параллельно до тех пор, пока его не прервёшь. Такое поведение было бы хорошим для бесшовного (или почти бесшовного) переноса данных на реплику: стопаем мастер, последние данные уходят на слейв, перезапускаем слейв без recovery.conf и готово. Я подумал не в ту сторону, ещё раз извините.
> Копия-то будет консистентной, но мне нужна копия, которая будет актуальной :)
Постоянно актуальной? Тогда Вам нужна репликация, очевидно (законченный backup же не будет обновляться волшебным образом ;) ).
> что pg_basebackup -X stream пишет данные на момент старта,
А где бы он мог их взять? Нет, конечно, он просто пишет то, что читает в каждый момент (считанное может представлять собой "мешанину" из неконсистентных страниц, естественно, но это неважно — "накатывание" WAL потом всё это выправит).
> а логи продолжает писать параллельно до тех пор, пока его не прервёшь.
Так бы он потенциально вечно их писал... А от backup-а ожидают, что он когда-нибудь закончится, обычно. :)
> Такое поведение было бы хорошим для бесшовного (или почти бесшовного) переноса данных на реплику
Да этот pg_basebackup и используется для инициализации реплики, которая потом "догоняется" до текущего состояния master с помощью последующего streaming/log shipping.


Antony
17.09.2018
08:27:45
Yaroslav Schekin спасибо

Timur
17.09.2018
08:31:56
>А где бы он мог их взять? Нет, конечно, он просто пишет то, что читает в каждый момент (считанное может представлять собой "мешанину" из неконсистентных страниц, естественно, но это неважно — "накатывание" WAL потом всё это выправит).
вот это хороший момент, спасибо

Aleksandr
17.09.2018
08:33:58
>перезапускаем слейв без recovery.conf
на самом деле нужно сделать промоут реплики до мастера и не нужно перезапускать ПГ

Mike Chuguniy
17.09.2018
08:48:52

Antony
17.09.2018
08:49:36
Спасибо

Mike Chuguniy
17.09.2018
08:51:21
Насколько я понимаю документацию, любые параметры устанавливаются, самое малое, на сессию.

Yaroslav
17.09.2018
09:01:15
Спасибо
А Вам зачем, кстати? Если пытаетесь "хинтовать", может, лучше не стоит? ;)

Antony
17.09.2018
09:03:36
хотел на проде проверить запрос, но уже сделал через set enable_nestloop=false; big query; set enable_nestloop=false
на проде вместо hash join используется nestedloop и запрос очень сильно деградирует
это stable https://explain.depesz.com/s/gp5Fc
это prod https://explain.depesz.com/s/FDFo