Featured image of post Быстрое импортирование больших файлов резервных копий SQL в Mysql

Быстрое импортирование больших файлов резервных копий SQL в Mysql

Здесь речь идет о файлах размером 100G+ и более. Обычно достаточно просто подождать, пока завершится восстановление. Для файлов резервных копий SQL размером в несколько сотен гигабайт не рекомендуется использовать такие программы, как Mobxterm или Xshell, так как могут возникнуть странные проблемы. Лучше использовать оригинальную команду scp для передачи.

Здесь речь идет о файлах размером 100G+ и более. Обычно достаточно просто подождать, пока завершится восстановление. Для файлов резервных копий SQL размером в несколько сотен гигабайт не рекомендуется использовать такие программы, как Mobxterm или Xshell, так как могут возникнуть странные проблемы. Лучше использовать оригинальную команду scp для передачи. Команда scp предназначена для безопасного копирования файлов и каталогов между операционными системами Linux и Unix. Конкретные команды копирования scp можно найти в этой статье: https://bmzhp.com/knowledge/174.html

После того как SQL файл будет скопирован на сервер Linux, вы можете оптимизировать MySQL для ускорения восстановления резервной копии, следуя этим стратегиям:

1. Настройка буферного пула

MySQL использует память для кеширования запросов и данных таблиц, чтобы уменьшить операции ввода-вывода на диске. Если у вас есть больше доступной памяти, вы можете увеличить следующие параметры буферного пула:

  • innodb_buffer_pool_size: Если вы используете движок хранения InnoDB, стоит рассмотреть возможность установки этого параметра на 70% до 80% от доступной памяти.
  • key_buffer_size: Если вы используете движок хранения MyISAM, рекомендуется увеличить этот параметр для повышения производительности.

2. Включение пакетного режима

MySQL поддерживает импорт в пакетном режиме, чтобы ускорить процесс импорта SQL файла. Для этого при импорте SQL файла используйте следующую команду:

1
mysql -u username -p --default-character-set=utf8 dbname < data.sql

Здесь --default-character-set=utf8 можно настроить в соответствии с набором символов вашего SQL файла. Кроме того, вы можете использовать следующие параметры для активации пакетного режима:

1
mysql -u username -p --default-character-set=utf8 dbname --max_allowed_packet=512M --net_buffer_length=8M < data.sql

В этой команде max_allowed_packet задает максимальный размер пакета MySQL, а net_buffer_length указывает размер сетевого буфера MySQL. Эти параметры можно адаптировать в зависимости от ваших аппаратных ресурсов для повышения скорости импорта.

3. Отключение логирования

MySQL при выполнении SQL файла записывает каждую команду в двоичный журнал для резервного копирования и восстановления. Однако если вам не нужен двоичный журнал, вы можете отключить его для ускорения импорта. Для этого добавьте следующую строку в файл конфигурации MySQL:

1
2
[mysqld]
skip-log-bin

4. Отключение проверки внешних ключей

MySQL также проверяет ограничения внешних ключей при выполнении SQL файла для обеспечения целостности данных. Если ваш SQL файл уже соответствует ограничениям внешнего ключа, вы можете отключить эту функцию для ускорения импорта. Для этого в начале SQL файла добавьте следующую команду:

1
SET foreign_key_checks = 0;

Затем в конце SQL файла добавьте:

1
SET foreign_key_checks = 1;

Таким образом, вы временно отключаете проверки внешних ключей, а затем снова их включаете.

Наконец, убедитесь, что ваша версия MySQL обновлена до последней и что все необходимые исправления и обновления безопасности применены. Это поможет гарантировать, что ваша база данных MySQL работает эффективно, безопасно и стабильно.

Licensed under CC BY-NC-SA 4.0
Создано при помощи Hugo
Тема Stack, дизайн Jimmy