|
Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ??
|
|||
---|---|---|---|
#18+
Для чего нужны транзакции - понятно. Но предположим, что у нас на сервере: - 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 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 16:06 |
|
Восстановление больших таблиц InnoDB из дампа: нужен ли --single-transaction ??
|
|||
---|---|---|---|
#18+
У меня БД всего несколько десятков Гб. Но мне не нравится идея хранения дампа в одном файле. Если не обсуждать все ваши методы (у меня нет такой БД и может там что-то вылазит, а я не сталкивался). На хрена вам эта опция ? (--single-transaction) На сервере восстановления тупо отключите лог, восстановитесь включите. Я недавно показывал, что я отключаю при восстановлении, можете для теста адаптировать под себя. Rollback - происходит дольше чем восстановление. Еще я бы делал дампы по таблично, и может даже и таблицы делил, чтобы восстанавливаться в многопоточном режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 17:06 |
|
|
start [/forum/topic.php?fid=47&tid=1828193]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
305ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 388ms |
0 / 0 |