Thread: Fwd: Re: [pgsql-ru-general] Бакап реплики

Fwd: Re: [pgsql-ru-general] Бакап реплики

From
Миша Тюрин
Date:



-------- Пересылаемое сообщение --------
От кого: Миша Тюрин <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







Re: Fwd: Re: [pgsql-ru-general] Бакап реплики

From
"Dmitry E. Oboukhov"
Date:
> 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

Re[2]: [pgsql-ru-general] Бакап реплики

From
Миша Тюрин
Date:


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



Re: [pgsql-ru-general] [pgsql-ru-general] Бакап реплики

From
Vladimir Borodin
Date:
Привет.

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


--
Да пребудет с вами сила…