Как заставить mysqldump создавать индексы после загрузки данных?
Цель - перенести огромную бд (mysql innodb (1-2 сотни гигабайт)) на новый сервер.
Т. к. на старом сервере mysql 5.6, а на новом MariaDB, то использовать percona xtraBacup не получится, насколько я понимаю. Поэтому, думаю, можно попробовать использовать mysqldump
Когда mysqldump создает dump таблицы, то вначале создаются инструкции по созданию структуры таблицы с индексами, а потом по вставке данных. Можно ли изменить порядок на:
Создание структуры таблицы без индексов,
Вставка данных,
Создание индексов?
Если создавать таблицы с данными, а потом проставлять индексы - так будет значительно быстрее, особенно на данных большого размера. В мануале нашел решение только для MyIsam, для innoDB не нашел решения.
Заранее спасибо.
Keep in mind also that MyISAM keeps data and indexes in two separate files (.MYD for data, .MYI for indexes), so it would be trivial to disable and enable indexes. InnoDB keeps the PRIMARY KEY and row data in the same InnoDB pages (via the Clustered Index). Secondary indexes will carry the PRIMARY KEY as an attachment to every secondary index leaf entry. Since the data and indexes are intertwined via the Clustered Index, no one has, as of yet, attempted to implement DISABLE KEYS and ENABLE KEYS in InnoDB.
Мне не надо делать disable keys, мне надо, чтобы индексы добавлялись в таблицу после вставки данных. В последний раз после поломки ssd я восстанавливал так данные вручную (приходилось редактировать гигабайтные файлы бекапов, что весьма не тривиальная задача), а затем вручную проставлял индексы. Т. к. если добавить индексы сразу, а потом добавлять данные, восстановление заняло бы в несколько раз больше времени, проверено опытом.