Безопасно ли mysqldump раздел недостающих данных для повторного импорта с моими флагами?

Скажем, в тестовой базе данных данные за год были стерты. Я получил два идентификатора данных не ранее чем за один год, а данные за другой - не позднее, и, следовательно, диапазон того, что здесь отсутствует. Мой вопрос; Есть ли вообще какая-либо опасность в использовании следующей команды из полного экземпляра базы данных, чтобы получить рабочий дамп, который можно использовать для восстановления базы данных с недостающим фрагментом информации в ней? Команда:

mysqldump -t --insert-ignore --skip-opt --single-transaction --quick --where="id<156789339" -w"id>124054297" -u root -p database table > partial.sql

И это для импорта после сжатия / перемещения:

zcat partial.sql.gz | mysql -u root -p database table

Здесь может быть одно предостережение, о котором стоит упомянуть - данные поступают из mysql 5.5 (percona) при импорте в экземпляр mysql 5.1, хотя я думаю, что нет совместимости проблемы, о которых я знаю случайно, которые могут возникнуть из-за этого.

Я понимаю, что -t предназначен для предотвращения создания операторов CREATE TABLE ( - no-create-info ]), - вставить-игнорировать в случае, если мой диапазон перекрывается, поэтому он игнорирует, если этот идентификатор уже существует, и - skip-opt , чтобы убедиться, что он не работает полностью куча вещей, которые могут повредить вещи при импорте ( - add-drop-tab, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick и --set-charset согласно странице руководства для mysqldump). Просто хочу знать наверняка, что это все, что мне нужно при экспорте, и если что-то мне не хватает при импорте, прежде чем в конечном итоге будут допущены какие-либо возможные ошибки.

0
задан 19 January 2017 в 07:50
1 ответ

Наверное, будет нормально. Есть особые случаи, когда он может выйти из строя.

  • В вашей БД есть ИНОСТРАННЫЕ КЛЮЧИ, указывающие на вашу таблицу с помощью оператора ON DELETE CASCADE; в этом случае вы потеряли другие данные вследствие предыдущего удаления, и вам также необходимо найти и скопировать эти данные. Если ваша база данных использует MYISAM, у вас нет внешних ключей, поэтому вы в безопасности.

  • Вы используете специальные функции, не поддерживаемые в предыдущей версии, например. FULLTEXT индексы. Поскольку вы сказали, что это тестовая база данных, я полагаю, что модель идентична. В этом случае проблем быть не должно.

  • Вы используете другую кодировку / сопоставление в двух БД, и у вас есть текстовые поля не ASCII (локализованные) в таблице. Опять же, если модель такая же, проблем быть не должно. (Если ваша таблица не имеет явного определения кодировки, а кодировка по умолчанию на серверах mysql отличается , у вас может быть проблема, но это маловероятно).

Если вы используете INNODB, вы можете захотеть выполнить всю свою дамп в ТРАНЗАКЦИИ (между BEGIN; и COMMIT;)

1
ответ дан 4 December 2019 в 16:22

Теги

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