:: Не фоксом единым
MySQL мини-дамп согласованных данных
Гулин Федор

Сообщений: 4640
Откуда: Минск
Дата регистрации: 24.10.2002
www.sql.ru
Добрый день всем.

MySQL 5.6
Есть большая БД OLTP с кучей FK
150-200 таблиц

БД приличного размера.
Как можно получисть мини-дамп согласованных данных

Надо для теста и отладки DDL и rollbaсk Скриптов
Полный бакап оч. долго переносить на localhost

ps Сдается мне задача получения минидатасета д.б. актуальна для различных БД
поэтому общие подходы для других БД велком сюад

pps изначально 2 мес. назад пока не было доступа мне прислали кусок бд полученный врдое как Jmeter (тут я 0)
Ratings: 0 negative/0 positive
Re: MySQL мини-дамп согласованных данных
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Для оракла в утилитах экспорта есть специальные режимы/переключатели consistent в частности - как раз делает дамп "по состоянию на момент старта процесса". По сути открывается транзакция в режиме READ ONLY (то же что и SERIALIZABLE + явный запрет для нас что-то менять в БД).
В MySQL режим "версионника" есть для innodb таблиц. В утилите mysqldump согласно мануала есть переключатели позволяющие получать согласованный дамп - либо при помощи блокировок (БД станет раком на всё время выполнения дампа), либо при помощи режима изоляции транзакций (работает только для innodb таблиц, по идее не мешает работе других клиентов с БД на время бэкапа - вероятно похоже по сути на оракловский consistent=y).
Можно ли бэкап ограничивать по таблицам или, тем паче, по подмножеству строк (по сути накладывать WHERE условие на каждую из экспортируемых таблиц) я не в курсе - кури мануал. В оракле можно, но "с нюансами".

В принципе есть сторонние инструменты для создания/управления дампами, но я бы стал обращаться к ним только в крайнем случае - если не хватает возможностей "встроенных". С точки зрения SQL (например, если сам решишь написать утилиту для выгрузки нужной инфы) для получения "согласованного" состояния требуется производить запрос данных из таблиц в рамках одной транзакции, и она должна быть уровня SERIALIZABLE (самый "строгий" из стандартных). Как этого добиться в MySQL - читай мануалы - там куча разных "движков хранения" плюс свои ограничения и настройки в каждом...

P.S. На самом деле многие инструменты создания дампов (и их "наката") работают как простые клиентские приложения - они шлют обычные SQL команды серверу и просто полученные данные по разному "записывают в файлы" - т.е. по сути ты и сам можешь такое нарисовать. "Специфичные" функции выполняют лишь утилиты резервного копирования и восстановления - зачастую для "больших" СУБД это отдельные утилиты по сравнению с "обычными экспортом и импортом".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: MySQL мини-дамп согласованных данных
Гулин Федор

Сообщений: 4640
Откуда: Минск
Дата регистрации: 24.10.2002
@Игорь я нав. не точно описал задачу
шттщви

на том сервере у меня полный доутсу черзе RDC и никто не пишет ничего- поднят дамп с прода - часов 5 с утра я там вообще один
потом еще 2-3 человека - т.е проблема консистентности не стоит.

а мне надо себе на локальный комп для экспериментов и тестов с ддл и роллбак скриптами
- целиком делать дамп - потом жать его на части скажем по 50 мб - и переписывать через RDC
как то это грустно - разово возможно наверно - но надо глядеть хватти ли еще места на удаленном -а главное пишется оттуда долго и связь рвется.

скорей всего буду писать скрипт но еще знаю как

Можно ли бэкап ограничивать по таблицам или, тем паче, по подмножеству строк (по сути накладывать WHERE условие на каждую из экспортируемых таблиц) я не в курсе - кури мануал. В оракле можно, но "с нюансами"
а напиши интересно как для общ. развития
Ratings: 0 negative/0 positive
Re: MySQL мини-дамп согласованных данных
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Гулин Федор
а напиши интересно как для общ. развития
docs.oracle.com
опции INCLUDE/EXCLUDE для объектов (таблиц) и QUERY/SAMPLE для "строк" в таблицах.
В более древней утилите exp возможности поскромнее - в частности там QUERY нельзя для каждой отдельной таблицы прописать - только "для всех разом" - но иногда и это нормально - скажем если в каждой из экспортируемых таблиц будет поле, к примеру, owner_id разделяющее данные разных "филиалов" то можно будет экспортировать выборочно "по филиалу" или "по списку филиалов".


------------------
WBR, Igor
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 8 (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика