Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ?? / 2 сообщений из 2, страница 1 из 1
05.02.2021, 16:06
    #40042214
GunnarFabiano
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ??
Для чего нужны транзакции - понятно. Но предположим, что у нас на сервере:
- 15 Тб дискового пространства
- база данных весит 12 Тб (в развёрнутом состоянии)

База данных восстанавливается из дампа, созданного с опцией --single-transaction. Что мы получаем в процессе восстановления:
1. В рамках транзакции движок InnoDB логирует каждую SQL-команду (в ibdata1 или ib_logfile0 ib_logfile0)
2. К моменту окончания восстановления данных на диске будет располагаться почти полная БД + такой же объём залогированных транзакционных данных > т.е. на диске потребуется не 12 Тб, а 24 Тб свободного пространства (а в нашем распоряжении всего 15 Тб).
3. Если в конце восстановления данных возникнет ошибка, транзакция начнёт свой откат - приблизительно столько же времени, сколько выполнялось восстановление из дампа (а это может быть и час, и сутки, и неделя)

Другой вариант: данные восстанавливаются из дампа, созданного без опции --single-transaction:
1. Транзакция не логируется и дисковое пространство дополнительно не расходуется (расходуется только для восстанавливаемой БД)
2. К моменту окончания восстановления данных на диске будет располагаться почти полная БД > т.е. на диске потребуется 12 Тб, а не 24 Тб
3. Если в конце восстановления данных возникнет ошибка, mysqldump выводит сообщение об ошибке и администратор перезапускает процесс восстановления (удаляет частично созданную БД и повторно запускает восстановление). При этом ждать отката транзакции не требуется.

Вопрос: нужна ли опция --single-transaction при создании дампа больших БД на движке InnoDB ?
...
Рейтинг: 0 / 0
05.02.2021, 17:06
    #40042253
Fitter2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ??
У меня БД всего несколько десятков Гб. Но мне не нравится идея хранения дампа в одном файле.

Если не обсуждать все ваши методы (у меня нет такой БД и может там что-то вылазит, а я не сталкивался).

На хрена вам эта опция ? (--single-transaction)

На сервере восстановления тупо отключите лог, восстановитесь включите.

Я недавно показывал, что я отключаю при восстановлении, можете для теста адаптировать под себя.
Rollback - происходит дольше чем восстановление.

Еще я бы делал дампы по таблично, и может даже и таблицы делил, чтобы восстанавливаться в многопоточном режиме.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ?? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]