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

Мне действительно интересно мнение Ильи. Вот почему встроенный движок резервного

копирования, который не создаёт блокировок и не тормозит выполнение запросов, хуже, чем сторонний инструмент, который блокирует базу?

23 ответов

25 просмотров

Блокирует ли система резервного копирования базу -- зависит не от того, встроенная она или внешняя. Искренне Ваш, КО.

Кстати, никогда не настраивал правильный бэкап MS SQL (вообще мало работал, там где нужно было -- херачил весь вольюм с базой и другими данными приложэния через снимки shadow copy, всё восстанавливалось). Где там про неё почитать можно, на будущее?

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
Кстати, никогда не настраивал правильный бэкап MS ...

Или официальная документация МС, или их модуль по подготовке к сертификации ДБА

Yevhen Nedaskivskyi
Или официальная документация МС, или их модуль по ...

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

Yevhen Nedaskivskyi
А от чего зависит?

От реализацыи. И да, я вообще не помню ни одного блокирующего инструмента бэкапов под postgres.

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
От реализацыи. И да, я вообще не помню ни одного ...

Как бы все известные мне инструменты бекапов в ПГ накладывают те или иные блокировки блокируя транзакции

Yevhen Nedaskivskyi
Как бы все известные мне инструменты бекапов в ПГ ...

Какбы это не так. Я бы хотел use case, когда это действительно правда. Что они блокируют -- так это всякий вакуум/автовакуум. И то, не в смысле что он не идёт, а в смысле -- что то, что ещё должно быть сбэкаплено пока не удаляется.

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
Ты бы лучшэ или название этого раздела документацы...

https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/quickstart-backup-restore-database?view=sql-server-ver15 https://docs.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver15

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

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
И да, движок резервного копирования не можэт не то...

Если аппаратных ресурсов с избытком - упираемся в реализацию. Можно назвать какой именно из способов резервного копирования в ПГ не лочит объекты?

Yevhen Nedaskivskyi
Как бы все известные мне инструменты бекапов в ПГ ...

И да, для бэкапа в postgres есть два встроенных варианта -- pg_dumpall, который таки дамп и многие его не считают бэкапом. Но он тожэ ничего не блокирует, кроме разве что возможно изменений каталога. Логическая выгрузка данных сервера. И pg_basebackup -- делает копию файлов сервера и сохраняет лог со всем, что изменилось пока он это делал. Этот вообще ничего не блокирует, кроме удаления старых логов. Работает, кстати, поверх протокола репликацыи (ну, поднимает такую реплику, фактически). И несколько систем резервного копирования -- barman, wal-g, pg_probackup, ещё кто-то -- которые тожэ все работают на физическом уровне, примрено как pg_basebackup -- зато имеют расписание бэкапов, расписание удалений, кое-кто -- хранение журналов PITR и восстановление отдельных баз из сервера.

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
И да, для бэкапа в postgres есть два встроенных ва...

pg_dumpall накладывает shared-блокировки на таблицы, которые выгружает. Т.е. все операции, которые требуют эксклюзивных блокировок (update, delete, insert) будут ждать. У него даже ключ есть lock-wait-timeout, чтобы обрывать процесс резервного копирования, если не удалось блокировку наложить. pg_basebackup использует механизм репликации и, по сути, побитово копирует базы и делает бекап WAL на момент создания бекапа. Тут я обосрался, каюсь. Но так пишет официальная документация, я пока копаю, потому что из личного опыта - тормоза есть. И! Он бекапит ВСЕ базы! Без возможности выбора. И для рестора нужно стопить СУБД. Это в 2021 году. Хоть убейте, нет нормального бекапа и рестора в ПГ, нет

Yevhen Nedaskivskyi
pg_dumpall накладывает shared-блокировки на таблиц...

>.е. все операции, которые требуют эксклюзивных блокировок (update, delete, insert) будут ждать. Нет. Там ACCESS SHARE lock , он конфликтует только или с прямым LOCK table IN ACCESS EXCLUSIVE или с DDL (alter table и TRUNCATE всякими). (Впрочем, не советую начинать бэкапы с pg_dump -- там есть проблемы. Они все решаемые, в том числе post-factum -- текст SQL всё-таки практически -- но проблем с триггерами и check constraints хватает.) >! Он бекапит ВСЕ базы! Без возможности выбора. На самом деле, по внутренней кухне -- базы в MS SQL Server ближэ к разным инстансам (ака "кластерам", дурацкое название, да) постгреса. Разный transaction log, например. Так что в MS SQL Server тожэ не так просто сбэкапить часть базы данных или восстановить её без остановки.

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
>.е. все операции, которые требуют эксклюзивных бл...

По поводу последнего, так это в любой базе не имеет смысла, так как нет гарантии консистентности данных... А вот одну базу бекапить и восстановить в ПГ хотелось бы

Yevhen Nedaskivskyi
По поводу последнего, так это в любой базе не имее...

Я вообще не понял этой твоей реплики. Что не имеет смысла? Бэкапить часть базы данных? Я не соглашусь. Смысл имеет. Я иногда дажэ использую (pg_dump или mysqldump или дажэ exp в своё время, выделенные таблицы, да). Редко, да, поскольку у этих утилит есть проблемы -- и вообще нужно нечасто. Но тяжко, да.

Ilya Anfimov
Я вообще не понял этой твоей реплики. Что не имее...

влезу в разговор, не видя всей картины.. к примеру mariadb, если со слейва делать дамп базы/таблицы, ведь проблем не должно быть или есть?

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
Я вообще не понял этой твоей реплики. Что не имее...

Это если есть понимание, что происходит с базой. В МС тоже можно заскриптовать всю таблицу, или сделать копию и потом восстановить. Но это на совести ДБА. Где гарантия, что потом не было транзакций, которые ссылаются на данные, которые были вставлены после такого бекапа? К примеру, есть клиенты и их заказы. База большая и высоконагруженная, поэтому от внешних ключей отказались. Делаем копию таблицы клиентов перед изменением структуры. Изменение структуры прошло криво, удаляем таблицу и пепеименовываем копию. Но за это время добавилось пару клиентов и они сделали пару заказов. Будут заказы-сироты. Пример очень примитивный. На базах с большим количеством таблиц с взаимосвязями такие вещи сложно отследить. Я об этом

NoName
влезу в разговор, не видя всей картины.. к примеру...

Я ХЗ, если честно. Ну, то есть у меня нет сложных баз mysql -- потому я просто не знаю, решыли ли в mysqldump все проблемы с referential integrity/checks/triggers. С другой стороны, проблема, которой часто пинают pg_dump -- это малопредсказуемое время восстановления. И это в mysqldump тожэ присутствует, конечно.

Yevhen Nedaskivskyi
Это если есть понимание, что происходит с базой. В...

Я опять не понял, что ты хочешь сказать. Ну и ладно.

Ilya Anfimov
Я ХЗ, если честно. Ну, то есть у меня нет сложных ...

со временем восстановления - полностью согласен, а вот там читал про проблемы выше и сомневаюсь что они есть, тем более, если их делать из слейвов(дампы).

Yevhen-Nedaskivskyi Автор вопроса
Ilya Anfimov
Я опять не понял, что ты хочешь сказать. Ну и ладн...

Я про консистентность базы на момент времени. Восстановление объектов её не даёт, только восстановление базы полностью

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта