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

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

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

23 ответов

5 просмотров

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

Кстати, никогда не настраивал правильный бэкап 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
Я опять не понял, что ты хочешь сказать. Ну и ладн...

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

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

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

Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
@Miro_Mx ffmpeg в списке устройств ее не видит, там только обычная камера и виртуальная от obs. может я что-то не так делаю? ffmpeg -list_devices true -f dshow -i dummy
Arkadiy
3
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Карта сайта