172 похожих чатов

Всем привет! Возник вопрос по поводу бэкапа Postrgres, установленного в

докере.

У меня подключен volume к контейнеру Postrgres, где хранятся данные. Сам volume - это папка в приаттаченном к VPS хранилище.
Из-за этого бэкапы VPS не бэкапят данные базы. В этом хранилище могут быть данные от разных контейнеров Postrgres, а также от баз других типов, развернутых в докере.

В связи с этим вопрос - достаточно ли надежно для бэкапа просто архивировать содержимое хранилища? Я готов смириться с ситуацией, когда данные, записываемые в базу в момент бэкапа могут потеряться. Мне важное понять, смогу ли я потом этот архив, допустим, развернуть в другом хранилище, приаттаченном к другому VPS, так чтобы постгрес из докер volumes смог подцепить данные.

P.S.
Я понимаю, что у постгреса есть встроенный механизм дампа и все такое. Но как я уже выше написал, в хранилище могут сваливаться данные от разных постгесов и вообще от других сервисов: какой-нибудь MariaDB, Mongo, Redis - что угодно.

25 ответов

22 просмотра

Нет.

Ed-P Автор вопроса
Ilya Anfimov
Нет.

А есть возможность как-то развернуть ответ?

Только snapshot (одномоментно, всей/всех FS, где есть файлы данного кластера БД PostgreSQL) backups дают такую гарантию.

если бэкап хранилища совмещает flush + snapshot - тогда можно

Алексей Алексеевич
если бэкап хранилища совмещает flush + snapshot - ...

Flush (если "хранилище" корректно обрабатывает fsync()) не нужен. А так — да.

Ed-P Автор вопроса
Yaroslav Schekin
Только snapshot (одномоментно, всей/всех FS, где е...

Я верно понимаю, что мне нужно, допустим, сначала остановить все контейнеры, потом сделать этот снэпшот, потом назад все запустить?

Ed P
Я верно понимаю, что мне нужно, допустим, сначала ...

Лично я не уверен, про что Вы конкретно делаете / как там это работает — подождите, может подскажут.

Ed-P Автор вопроса
Yaroslav Schekin
Только snapshot (одномоментно, всей/всех FS, где е...

а чем грозит архивирование папки "на живую"? Допустим, я делаю это по ночам, когда с базой никто не работает (т.е. можно гарантировать, что структура базы не меняется). Насколько я понимаю, может потеряться часть данных в оперативка базы до того, как она будет записана на диск.

Ed P
а чем грозит архивирование папки "на живую"? Допу...

вы пишите про разные базы.. в общем случае если провайдер ваш может делать fsync при снапшоте - это ничем не отличается от выключения сервера, что базы должны пережить

Ed P
а чем грозит архивирование папки "на живую"? Допу...

> Допустим, я делаю это по ночам, когда с базой никто не работает (autovacuum, отрываясь от обработки очередной таблицы): Да неужели?! ;)

Ed P
а чем грозит архивирование папки "на живую"? Допу...

вопрос в том кто этот снапшот будет делать.. если можно выключить базу - можно делать lvm/btrfs снапшоты, тут же запускать базу, и делать бэкап снапашота

Ed P
а чем грозит архивирование папки "на живую"? Допу...

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

Ed-P Автор вопроса
Алексей Алексеевич
плюс бэкап проходит не нулевое время, за то время ...

вот я этот момент и хочу понять. Т.е. даже если я в самой базе не ковыряюсь, то она все равно может поломаться при таком живом копировании (а не просто часть записей потеряется)? И чтобы бэкап был рабочим, нужно гарантировать неизменность файлов во время архивирования.

Ed-P Автор вопроса
Алексей Алексеевич
вопрос в том кто этот снапшот будет делать.. если ...

да, там в песочнице куча всего валятся, на несколько минут останавливать проблем не будет. Т.е. если у меня будет скрипт в CRON, который делает: docker compose stop <потом идет магия создания снэпшота> docker compose up -d <потом архивирование / бэкапирование снэпшота> То все должно надежно работать в самых разных сценариях в самых разных базах?

Ed P
да, там в песочнице куча всего валятся, на несколь...

если объем не большой и время остановки не сильно важно можно и без снапшота просто копированием/сжатием в архив

Ed-P Автор вопроса
Алексей Алексеевич
если объем не большой и время остановки не сильно ...

а, ок, т.е. на остановленном докере и gzip какой-нибудь сработает

а почему бы вам не бэкапировать именно постгрес через тот же дамп ? там ведь буквально одну строку в крон поставить. И контейнер не надо останавливать. А прочие данные на вашей шаре уже по ситуации, монго-дамп тот же самый. Вроде в вашем сетапе проще настроить энное количество индивидуальных бэкапов, чем рисковать

Ed-P Автор вопроса
Andrey K.
а почему бы вам не бэкапировать именно постгрес че...

Основная причина - нужно будет разбираться во всем этом зоопарке. (а поскольку я не сисадмин и не DevOps, то сколько времени на это уйдет?) У меня песочница где я тестирую десятки self-hosted сервисов, там обычно от двух и более контейнеров - сервис + база. Какие-то сервисы приживаются и существуют долго, а с какими-то поигрался, написал статью и в архив. Хочется какое-то более-менее надежное решение для бэкапа на стороне хост-системы. И отвечая на незаданный вопрос - почему бы не бэкапить силами VPS-провайдера: дело в том, что VPS-ки обычно машстабируются только в сторону увеличения. Hetzner предлагает дисковое пространство для VPS и еще отдельно Volume (это не docker volume, это так у провайдера называется услуга), которые можно примонтировать к серваку. Вот я тестирую что-то тяжелое в этом месяце - примонтировал VPS-ку потолще. А потом понадобится что-то более легкое - убил одну VPS, создал другую дешевле и к тому же хранилищу приаттачил. Я совершенно не ожидал, что просто копировать папку в случае "живой" бд - ненадежный способ бэкапирования.

Ed P
Основная причина - нужно будет разбираться во всем...

Это, кстати, ненадёжный способ в случае чего угодно (просто сисадминам как-то...). Мне вспоминается (кто-то рассказывал), как они настроили backups FS прямо посреди дня — а потом какому-то пользователю понадобилась (предыдущая) копия Excel-файла, с которым он работал несколько дней подряд... и тут выяснилось, что копии за четыре предыдущих дня "запороты" — видимо, он записывал файл именно тогда, когда backup его копировал — в результате получалась "каша" (редкая "удача", да).

Yaroslav Schekin
Это, кстати, ненадёжный способ в случае чего угодн...

да не, просто иксель зло) вижу причину в этом)

Andrey K.
да не, просто иксель зло) вижу причину в этом)

У пользователя актуальный файл (на той же FS) был не "битый", ясное дело. Но четыре дня подряд записывать его точно в тот же момент — это талант, не иначе (я поэтому и запомнил эту историю). ;)

Монга-ACID. Правда, расшифровывается термин у них сильно прогрессивно :)

Антон Казачков
Монга-ACID. Правда, расшифровывается термин у них...

Да я-то не спорю (и я имел в виду "новый" NoSQL в общем) — я написал, что не очень удивился бы, всего лишь (учитывая их прошлые достижения, и некоторую незрелость и направленность на BASE вместо ACID). ;)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта