Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
Добрый день.

СОдержание:
1. Описание системы
2. Моя ситуация
3. Вопросы



1. Описание системы:
a postgreSQL-10.
b Ubuntu 18
c Настроено каскадная репликация.


2. Моя ситуация
Проблема в папке pg_wal которая теперь весит уже добрых 10 гг.
Там у меня WAL файлы по 16 мегабайт.
В postgresql.conf - у меня стоит значения:
wal_keep_segments = 64
archive_mode = on.
Но archive_command не прописан.



3. Вопросы
********************************
Внимание вопросы
********************************
a.
Можно ли прописать значения архивирования gzip-ом и запустить
на лету без перезапуска базы ? Или нужен даунтайм ?
archive_command = 'gzip < %p > /var/lib/pgsql/archive/%f'

b.
Понимаю что нужен restore_command ЧТо нужно еще указать ?
restore_command = 'gunzip < /mnt/server/archivedir/%f > %p'

c.
Обьясните синтакисис команды Я ее не понимаю что означает %f и %p
'gzip < %p > /var/lib/pgsql/archive/%f'
restore_command = 'gunzip < /mnt/server/archivedir/%f > %p'

Сообщение было отредактировано: 10 июл 20, 14:01
10 июл 20, 14:02    [22165243]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
mefman
Member

Откуда:
Сообщений: 3053
- можно
- см документацию
- см документацию
10 июл 20, 14:26    [22165281]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
mefman,

Я ее читал как на русском так и на английском языке. Там не дается описания ключей.
Логично что Я задал этот вопрос здесь.
Мне лично не понятно :
%p заменяются полным путём к файлу, подлежащему архивации, а %f заменяются только именем файла.

Что это означает на практике. Учитывая что в папке pg_wal огромное количество файлов их в смысле все указывать или дастаточно пути ?
А при ресторе как быть тогда ?

Сообщение было отредактировано: 13 июл 20, 09:47
13 июл 20, 09:47    [22166254]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
noute,

Дополню если у меня папка pg_wal весит 10 гигов.
Могу ли я вписать ее в ahcive_comand для архивации gzip-ом или нет ?/var/lib/postgresql/10/main/pg_wal/ ??
13 июл 20, 12:35    [22166397]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1111
noute
noute,

Дополню если у меня папка pg_wal весит 10 гигов.
Могу ли я вписать ее в ahcive_comand для архивации gzip-ом или нет ?/var/lib/postgresql/10/main/pg_wal/ ??

Вы не должны ничего трогать в pg_wal.

noute
Учитывая что в папке pg_wal огромное количество файлов

Неважно. Содержимым pg_wal база управляет самостоятельно.

archive_command штука очень простая - база берёт указанную строку в конфиге, заменяет в ней %p и %f и вызывает как команду shell. Всё остальное - делайте что хотите. Лишь бы взяли вот именно этот один конкретный файл WAL и куда-то надёжно сохранили. И это задача админа написать такую команду.
restore_command соответственно штука такая же - только оно умеет вдобавок ещё %r. Некая произвольная команда shell, которую выполнит база когда захочет будучи в recovery взять сегмент wal и для которой в результате должен появиться файл сегмента по пути %p

noute
archive_mode = on.
Но archive_command не прописан.

Типичная ошибка конфигурации.
13 июл 20, 13:51    [22166491]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
Melkij,

Спасибо за ответ теперь стало понятно. Что не нужно подставлять путь до pg_wal. А делать по мануалу.
В рамках которого база сама будет брать и сжимать Wal файлы.

Единственное: два последних вопроса.
1. Правильно ли Я понимаю что нужно рассчитывать место для WAL файлов и в случае если я буду сжимать gzip-ом то и для архивов нужно расчитывать место ?
2. Ротацию логов база будет делать самостоятельно или нужно будет периодически подчишать файлы самостоятельно ?
14 июл 20, 10:01    [22166974]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
D0KX
Member

Откуда:
Сообщений: 68
postgres просто запускает то, что написано в ahcive_comand и ожидает подтверждения успешности выполнения.
После успешного выполнения, postgres'у совершенно пофигу на тот файл, что был скопирован и дальше никаких действий с ним postgres не будет делать => ротации логов в архивном каталоге не будет, а вот в pg_wal будет.
Вам сперва надо понять, зачем вам эти wal файлы в архиве. Делаете ли вы бэкап базы так, чтобы можно было применить эти архивные wal файлы.
Если вы не делаете верно бэкап, то эти wal файлы мусор и archive_mode можете вырубать. Но советую всё-таки иметь бэкапы и wal'ы за приемлемый для вас период и приемлемый для вас объем диска.
Почитайте про pg_basebackup
14 июл 20, 12:42    [22167078]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4230
noute
Melkij,

Спасибо за ответ теперь стало понятно. Что не нужно подставлять путь до pg_wal. А делать по мануалу.
В рамках которого база сама будет брать и сжимать Wal файлы.

Единственное: два последних вопроса.
1. Правильно ли Я понимаю что нужно рассчитывать место для WAL файлов и в случае если я буду сжимать gzip-ом то и для архивов нужно расчитывать место ?
2. Ротацию логов база будет делать самостоятельно или нужно будет периодически подчишать файлы самостоятельно ?


1)место куда идет архив базу вообще не касается (и если у вас вдруг архив на том же сервере и тем более на тех же дисках что и база - вы все неправильно сделали) и естественно под это надо место
2)каких именно? своих - автоматически как и раньше а wal архив базу не касается ее дело чтобы архивация сработала а что и как вы будете дальше с этим делать - ее не касается (т.е. ответ нет если вопрос про файлы в архиве).
14 июл 20, 12:44    [22167080]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
big-trot
Member

Откуда: Тверь
Сообщений: 285
barman за вас всё сделает

Сообщение было отредактировано: 15 июл 20, 15:21
15 июл 20, 15:24    [22167878]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
Maxim Boguk
noute
Melkij,

Спасибо за ответ теперь стало понятно. Что не нужно подставлять путь до pg_wal. А делать по мануалу.
В рамках которого база сама будет брать и сжимать Wal файлы.

Единственное: два последних вопроса.
1. Правильно ли Я понимаю что нужно рассчитывать место для WAL файлов и в случае если я буду сжимать gzip-ом то и для архивов нужно расчитывать место ?
2. Ротацию логов база будет делать самостоятельно или нужно будет периодически подчишать файлы самостоятельно ?


1)место куда идет архив базу вообще не касается (и если у вас вдруг архив на том же сервере и тем более на тех же дисках что и база - вы все неправильно сделали) и естественно под это надо место
2)каких именно? своих - автоматически как и раньше а wal архив базу не касается ее дело чтобы архивация сработала а что и как вы будете дальше с этим делать - ее не касается (т.е. ответ нет если вопрос про файлы в архиве).


1. Спасибо за ответ. Теперь стало понятно. Да так как Я джун был не вкурсе про WAL-ы и они у меня на тех же дисках что и сама База Данных.
2. Ну под логов Я имел в виду WAL-ы в папке pg_wal. Если Я пропишу archive_command. В том плане что база будет gzip-ом сжимать архивы в нужную папку и автоматически удалять файлы которые сжала в папке pg_wal. Но из вашего ответа Я понял что нет.

P.S
А можно самому подчишать эти файлы на лету ? Там команда же даже есть pg_archivecleanup на сколько Я понимаю ее нужно запускать с ключом -d и указывать директорию. (Мануал читал - но блин страшно.)

Пример:
pg_archivecleanup -d /home/postgres/archive 00000002000000000000006B
15 июл 20, 16:28    [22167955]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1111
noute
А можно самому подчишать эти файлы на лету

Ни в коем случае.
15 июл 20, 16:37    [22167972]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
D0KX
postgres просто запускает то, что написано в ahcive_comand и ожидает подтверждения успешности выполнения.
После успешного выполнения, postgres'у совершенно пофигу на тот файл, что был скопирован и дальше никаких действий с ним postgres не будет делать => ротации логов в архивном каталоге не будет, а вот в pg_wal будет.
Вам сперва надо понять, зачем вам эти wal файлы в архиве. Делаете ли вы бэкап базы так, чтобы можно было применить эти архивные wal файлы.
Если вы не делаете верно бэкап, то эти wal файлы мусор и archive_mode можете вырубать. Но советую всё-таки иметь бэкапы и wal'ы за приемлемый для вас период и приемлемый для вас объем диска.
Почитайте про pg_basebackup


Спасибо за ответ. Да делаю ручками бэкап pg_basebackup с ключом -D
А так же делаю дамп базы pg_dump.
Просто у Меня Я так понимаю ошибка в конфигураций:
1. Это то что pg_wal на тех же дисках что и База
2. archive_mode=on тогда как archive_command не прописан.
3. Из-за этого очень быстро растет папка pg_wal. И Я не знаю как ее подчистить на master сервере.
15 июл 20, 16:37    [22167974]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1111
noute
2. archive_mode=on тогда как archive_command не прописан.
3. Из-за этого очень быстро растет папка pg_wal. И Я не знаю как ее подчистить на master сервере.

Да, это причина и закономерное следствие.
Выключите archive_mode если он вам не нужен - тогда база сможет удалить ненужные для обеспечения crash recovery wal.
Либо дайте любой archive_command который будет возвращать успешный код возврата - база вызовет эту команду для сегментов wal и сможет удалить ненужные для обеспечения crash recovery wal.
Будет эта команда реально вести архив WAL или нет - базу не волнует.

noute
1. Это то что pg_wal на тех же дисках что и База

pg_wal может жить там же где база. А вот архив wal хранить на тех же дисках - крайне странная затея с т.з. бекапа.
15 июл 20, 22:33    [22168234]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
Melkij
noute
2. archive_mode=on тогда как archive_command не прописан.
3. Из-за этого очень быстро растет папка pg_wal. И Я не знаю как ее подчистить на master сервере.

Да, это причина и закономерное следствие.
Выключите archive_mode если он вам не нужен - тогда база сможет удалить ненужные для обеспечения crash recovery wal.
Либо дайте любой archive_command который будет возвращать успешный код возврата - база вызовет эту команду для сегментов wal и сможет удалить ненужные для обеспечения crash recovery wal.
Будет эта команда реально вести архив WAL или нет - базу не волнует.

noute
1. Это то что pg_wal на тех же дисках что и База

pg_wal может жить там же где база. А вот архив wal хранить на тех же дисках - крайне странная затея с т.з. бекапа.



Спасибо за советы. (Вы единственный кто реально дал дельные советы).
А что если мне нужны pg_wal и Я не прописал archive_comand сами файлики в папке pg_wal можно как нибудь почистить ?
16 июл 20, 16:39    [22168730]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1111
noute,

см. процитированный ответ. Или выключите archive_mode или укажите archive_command. В обоих случаях база вычистит ненужные ей сегменты wal самостоятельно.
16 июл 20, 17:01    [22168744]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4230
noute

Спасибо за советы. (Вы единственный кто реально дал дельные советы).
А что если мне нужны pg_wal и Я не прописал archive_comand сами файлики в папке pg_wal можно как нибудь почистить ?


а зачем они вам нужны? они копятся только потому что у вас не стоит работающая archive_comand
конфигурация с archive_mode=on и без archive_command просто бессмысленная и не рабочая (wal файлы копятся).
16 июл 20, 18:19    [22168787]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
noute
Member

Откуда:
Сообщений: 24
Добрый день. Спасибо всем тем кто отвечал на мой вопросы.
Лично спасибо Melkij,

Вопрос можно закрыть. Проблема решина.
Кому интересно:
1 Ошибка была в развертываний и в частности связана с опциями archive_mode=on
тогда как archive_command не была указана.
2. pg_wal у меня хранится там же где и база.
3. Это в свою очередь привело к росту файлов.

Как решить эту проблему.
1. Фундаментально - нужно решить нужен ли вам WAL или нет.
Если да то указывать archive_command и желательно не хранить на тех же дисках.
Если нет то указать archive_mode=off

2. Если вы все таки имеете такую же проблему как у Меня и нужно срочно что то делать то советую прочитать https://www.percona.com/blog/2019/07/10/wal-retention-and-clean-up-pg_archivecleanup

эта команда pg_archivecleanup
Позволяет зачишать файлы.
В начале нужно будет скопировать всю папку pg_wal
сделать бэкап pg_dump а так же pg_basebackup
и уже запускать pg_archivecleanup
20 июл 20, 12:18    [22170325]     Ответить | Цитировать Сообщить модератору
 Re: Дайте консультацию про archive_mode и archive_command.  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1111
noute
нужно срочно что то делать

То задать любой archive_command возвращающий код возврата успеха. Банально archive_command = '/bin/true'. Меняется по sighup, на чекпойнте старые wal будут удалены.
20 июл 20, 13:37    [22170378]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить