пятница, 6 ноября 2015 г.

Импорт дампа базы mysql

Bash скрипт для импорта дампа базы mysql



mysql -u***  -p****  -e'
USE `***`;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET autocommit=0;
SET foreign_key_checks=0;
SET unique_checks=0;
SOURCE /*****.sql;
COMMIT;
SET autocommit=1;
SET foreign_key_checks=1;
SET unique_checks=1;
' -v;

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; отключает увеличение счетчика авто-инкремента при записи в поле авто-инкремента значения 0. По умолчанию, при записи в такое поле значения NULL или 0 оно автоматически инкрементируется. И хотя иметь значение 0 в авто-инкрементном поле – не лучшая практика, иногда все-таки случается что в дампе есть такие строки (я встретился с подобным в дампе от magento). Стоит также заменить, что mysqldump с некоторых пор включает данную директиву по умолчанию в своих дампах.

SET autocommit=0; перед заливкой дампа и COMMIT; после него - ускоряют выполнение INSERT'ов для InnoDB таблиц, поскольку при включенном режиме авто-коммита логи сохраняются на диск при каждом INSERT'е. Может помочь при накатывании больших дампов.

SET foreign_key_checks=0; наиболее очевидная опция, без которой большая часть дампов вообще не могла бы быть применена. Отключает проверки внешних ключей, что позволяет записывать данные в любом порядке и в том числе с циклическими ссылками по внешним ключам. Эта опция также ускоряет импорт дампа.

SET unique_checks=0; отключает проверки на уникальность для вторичных ключей, что опять таки может ускорить процесс импорта.

Комментариев нет:

Отправить комментарий