Thread: Fwd: Re: [pgsql-ru-general] Бакап реплики
-------- Пересылаемое сообщение --------
От кого: Миша Тюрин <tmihail@bk.ru>
Кому: Dmitry E. Oboukhov <unera@debian.org>
Дата: Пятница, 19 июня 2015, 23:07 +03:00
Тема: Re: [pgsql-ru-general] Бакап реплики
pg_basebackup
http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html
Пятница, 19 июня 2015, 13:51 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>:
Есть каскад
мастер - реплика
теперь и то и другое надо перевести на другое железо
сделали новую реплику
мастер +- реплика
|
+- новая реплика (станет новым мастером)
Далее хочу сразу сделать и новую реплику которая станет потом и новой
репликой, то есть
мастер +- реплика
|
+- новая реплика - реплика 3
Как создавали реплики обычно:
1. pg_start_backup
2. rsync
3. конфиг recovery на реплике
4. pg_stop_backup
5. старт реплики
теперь на шаге 1 на реплике ловим ошибк
2015-06-19 10:29:11 GMT ERROR: recovery is in progress
2015-06-19 10:29:11 GMT HINT: WAL control functions cannot be executed during recovery.
2015-06-19 10:29:11 GMT STATEMENT: SELECT pg_start_backup('label', true);
Я погуглил и насколько я понял из того что нагуглилось - что реплики
можно безопасно backup'ить файлы без ввода реплики в backup_mode,
потому что реплика как раз использует WAL'ы для работы, то есть по
факту как бы всегда у нее включен режим backup.
правильно ли я понял или нет?
PS: Pg 9.3
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
> pg_basebackup > http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html про утилиту я понимаю. но мне надо понять смысл ее работы. вот я понимаю что выдав pg_start_backup на мастере я могу свободно rsync'ать ее файлики. мне теперь интересно что надо делать с репликой (хот-стендбай) чтобы свободно рсинкать. просто утилиты утилитами а в реале иногда понимание процессов позволяет что-то сделать более интересное. например мы переезжали на новую версию постгриса: я поставил штук 40 экспериментов с утилитой апгрейд-кластер и во всех случаях эта утилита решала работать от 2 до 5 часов. какие бы опции я не применял. далее влез и посмотрел что она делает и написали свой скрипт который апгрейд нам сделал за 17 секунд. > Пятница, 19 июня 2015, 13:51 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>: > Есть каскад > мастер - реплика > теперь и то и другое надо перевести на другое железо > сделали новую реплику > мастер +- реплика > | > +- новая реплика (станет новым мастером) > Далее хочу сразу сделать и новую реплику которая станет потом и новой > репликой, то есть > мастер +- реплика > | > +- новая реплика - реплика 3 > Как создавали реплики обычно: > 1. pg_start_backup > 2. rsync > 3. конфиг recovery на реплике > 4. pg_stop_backup > 5. старт реплики > теперь на шаге 1 на реплике ловим ошибк > 2015-06-19 10:29:11 GMT ERROR: recovery is in progress > 2015-06-19 10:29:11 GMT HINT: WAL control functions cannot be executed > during recovery. > 2015-06-19 10:29:11 GMT STATEMENT: SELECT pg_start_backup('label', true); > Я погуглил и насколько я понял из того что нагуглилось - что реплики > можно безопасно backup'ить файлы без ввода реплики в backup_mode, > потому что реплика как раз использует WAL'ы для работы, то есть по > факту как бы всегда у нее включен режим backup. > правильно ли я понял или нет? > PS: Pg 9.3 > -- > . ''`. Dmitry E. Oboukhov > : :’ : email: unera@debian.org jabber://UNera@uvw.ru > `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 > `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537 > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Attachment
pg_upgrade -k -- секунды...
а по "бекапу".
вроде как помню, что там всё не так просто. если вы кучу начнете копировать с реплики, она при этом будет меняться, и контрол дата будет меняться -- и не изветсно, что вы докопируете в итоге. там и еще могут быть тонкости. там всякие бекап лейблы (SELECT pg_start_backup('label');) и пр. сходу всё не скажу но в целом вы правильно понимаете. но не получится)
Пятница, 19 июня 2015, 23:42 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>:
> pg_basebackup
> http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html
про утилиту я понимаю.
но мне надо понять смысл ее работы.
вот я понимаю что выдав pg_start_backup на мастере я могу свободно
rsync'ать ее файлики.
мне теперь интересно что надо делать с репликой (хот-стендбай) чтобы
свободно рсинкать.
просто утилиты утилитами а в реале иногда понимание процессов
позволяет что-то сделать более интересное.
например мы переезжали на новую версию постгриса: я поставил штук 40
экспериментов с утилитой апгрейд-кластер и во всех случаях эта утилита
решала работать от 2 до 5 часов. какие бы опции я не применял.
далее влез и посмотрел что она делает и написали свой скрипт который
апгрейд нам сделал за 17 секунд.
> Пятница, 19 июня 2015, 13:51 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>:
> Есть каскад
> мастер - реплика
> теперь и то и другое надо перевести на другое железо
> сделали новую реплику
> мастер +- реплика
> |
> +- новая реплика (станет новым мастером)
> Далее хочу сразу сделать и новую реплику которая станет потом и новой
> репликой, то есть
> мастер +- реплика
> |
> +- новая реплика - реплика 3
> Как создавали реплики обычно:
> 1. pg_start_backup
> 2. rsync
> 3. конфиг recovery на реплике
> 4. pg_stop_backup
> 5. старт реплики
> теперь на шаге 1 на реплике ловим ошибк
> 2015-06-19 10:29:11 GMT ERROR: recovery is in progress
> 2015-06-19 10:29:11 GMT HINT: WAL control functions cannot be executed
> during recovery.
> 2015-06-19 10:29:11 GMT STATEMENT: SELECT pg_start_backup('label', true);
> Я погуглил и насколько я понял из того что нагуглилось - что реплики
> можно безопасно backup'ить файлы без ввода реплики в backup_mode,
> потому что реплика как раз использует WAL'ы для работы, то есть по
> факту как бы всегда у нее включен режим backup.
> правильно ли я понял или нет?
> PS: Pg 9.3
> --
> . ''`. Dmitry E. Oboukhov
> : :’ : email: unera@debian.org jabber://UNera@uvw.ru
> `. `~’ GPGKey: 1024D / F8E26537 2006-11-21
> `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
> http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html
про утилиту я понимаю.
но мне надо понять смысл ее работы.
вот я понимаю что выдав pg_start_backup на мастере я могу свободно
rsync'ать ее файлики.
мне теперь интересно что надо делать с репликой (хот-стендбай) чтобы
свободно рсинкать.
просто утилиты утилитами а в реале иногда понимание процессов
позволяет что-то сделать более интересное.
например мы переезжали на новую версию постгриса: я поставил штук 40
экспериментов с утилитой апгрейд-кластер и во всех случаях эта утилита
решала работать от 2 до 5 часов. какие бы опции я не применял.
далее влез и посмотрел что она делает и написали свой скрипт который
апгрейд нам сделал за 17 секунд.
> Пятница, 19 июня 2015, 13:51 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>:
> Есть каскад
> мастер - реплика
> теперь и то и другое надо перевести на другое железо
> сделали новую реплику
> мастер +- реплика
> |
> +- новая реплика (станет новым мастером)
> Далее хочу сразу сделать и новую реплику которая станет потом и новой
> репликой, то есть
> мастер +- реплика
> |
> +- новая реплика - реплика 3
> Как создавали реплики обычно:
> 1. pg_start_backup
> 2. rsync
> 3. конфиг recovery на реплике
> 4. pg_stop_backup
> 5. старт реплики
> теперь на шаге 1 на реплике ловим ошибк
> 2015-06-19 10:29:11 GMT ERROR: recovery is in progress
> 2015-06-19 10:29:11 GMT HINT: WAL control functions cannot be executed
> during recovery.
> 2015-06-19 10:29:11 GMT STATEMENT: SELECT pg_start_backup('label', true);
> Я погуглил и насколько я понял из того что нагуглилось - что реплики
> можно безопасно backup'ить файлы без ввода реплики в backup_mode,
> потому что реплика как раз использует WAL'ы для работы, то есть по
> факту как бы всегда у нее включен режим backup.
> правильно ли я понял или нет?
> PS: Pg 9.3
> --
> . ''`. Dmitry E. Oboukhov
> : :’ : email: unera@debian.org jabber://UNera@uvw.ru
> `. `~’ GPGKey: 1024D / F8E26537 2006-11-21
> `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Привет.
19 июня 2015 г., в 23:42, Dmitry E. Oboukhov <unera@debian.org> написал(а):pg_basebackup
http://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html
про утилиту я понимаю.
но мне надо понять смысл ее работы.
вот я понимаю что выдав pg_start_backup на мастере я могу свободно
rsync'ать ее файлики.
мне теперь интересно что надо делать с репликой (хот-стендбай) чтобы
свободно рсинкать.
Для начала стоит взглянуть на этот тред [0]. Если коротко, то механика процесса такова:
1. сказать pg_start_backup(‘label’) на мастере,
2. дождаться, пока реплика достигнет этой позиции xlog’а,
3. скопировать с неё данные любимым инструментом,
4. утащить с мастера файл с backup label,
5. сказать pg_stop_backup() на мастере.
После этого новая реплика взлетит. Весь этот процесс можно сильно облегчить использованием уже упомянутого Мишей pg_basebackup’а или расширения pgespresso [1], который в частности используется божественным barman’ом [2].
просто утилиты утилитами а в реале иногда понимание процессов
позволяет что-то сделать более интересное.
например мы переезжали на новую версию постгриса: я поставил штук 40
экспериментов с утилитой апгрейд-кластер и во всех случаях эта утилита
решала работать от 2 до 5 часов. какие бы опции я не применял.
далее влез и посмотрел что она делает и написали свой скрипт который
апгрейд нам сделал за 17 секунд.
Думаю, ты всё же не все варианты перепробовал. Миша дело говорит -опция -k ускоряет обновление баз с несколькими терабайтами данных до единиц секунд.
Пятница, 19 июня 2015, 13:51 +03:00 от "Dmitry E. Oboukhov" <unera@debian.org>:Есть каскадмастер - репликатеперь и то и другое надо перевести на другое железосделали новую репликумастер +- реплика
|
+- новая реплика (станет новым мастером)Далее хочу сразу сделать и новую реплику которая станет потом и новой
репликой, то естьмастер +- реплика
|
+- новая реплика - реплика 3Как создавали реплики обычно:1. pg_start_backup
2. rsync
3. конфиг recovery на реплике
4. pg_stop_backup
5. старт репликитеперь на шаге 1 на реплике ловим ошибк2015-06-19 10:29:11 GMT ERROR: recovery is in progress
2015-06-19 10:29:11 GMT HINT: WAL control functions cannot be executed
during recovery.
2015-06-19 10:29:11 GMT STATEMENT: SELECT pg_start_backup('label', true);Я погуглил и насколько я понял из того что нагуглилось - что реплики
можно безопасно backup'ить файлы без ввода реплики в backup_mode,
потому что реплика как раз использует WAL'ы для работы, то есть по
факту как бы всегда у нее включен режим backup.правильно ли я понял или нет?PS: Pg 9.3--. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537