Как настроить MySQL для восстановления от дампа MySQL?

Моя небольшая база данных 5GB, которая занимает 5 минут для дампа через mysqldump, занимает 9 часов для восстановления. К счастью я узнал это во время тестового прогона, не фактической чрезвычайной ситуации.

Что лучшие параметры должны оптимизировать для ускорения этого?

Я попробовал следующие настройки на своем сервере с 2 ГБ RAM:

innodb_buffer_pool_size=512M
innodb_additional_mem_pool_size=50M
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=0
innodb_log_file_size=1G
innodb_log_buffer_size=1G

Странная вещь состоит в том что даже с этими aggressize настройками, top только шоу mysqld едва используют часть присвоенной памяти:

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
4421 mysql     20   0  247m  76m 5992 S   91  3.7   4:09.33 mysqld
4
задан 15.07.2018, 19:36

2 ответа

Необходимо смочь вычислить эти числа перед mysqldump.

Относительно настроек Вы дали в вопросе,

innodb_log_file_size=1G

Эта установка является СЛИШКОМ БОЛЬШОЙ!!!

innodb_log_file_size как предполагается, 25% innodb_buffer_pool_size

innodb_log_file_size=128M

После того как Вы устанавливаете это в /etc/my.cnf, необходимо сделать следующее для изменения размеров файлов журнала InnoDB:

  1. service mysql stop
  2. rm -f /var/lib/mysql/ib_logfile[01]
  3. service mysql start

Что касается другой установки

innodb_log_buffer_size=1G

Вы никогда не хотите кэшировать тонну данных в здесь прежде, чем отправить их в Файлы журнала InnoDB, специально для перезагрузок mysqldump или тяжелых транзакционных ФИКСАЦИЙ. Должен быть меньшим порядком величины.

innodb_log_buffer_size=32M

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

  1. Сделайте это-> SET SQL_LOG_BIN=0; первая строка mysqldump файла.
  2. Из командной строки MySQL, выполненной SET SQL_LOG_BIN=0; затем выполненный source < mysqldumpfile >
  3. Прокомментируйте мусорное ведро журнала от /etc/my.cnf и MySQL 5.1 перезапуска, загрузите mysqldump файл, мусорное ведро журнала некомментария, и перезапустите MySQL.

ОБНОВИТЕ 24.07.2011 20:30

Если у Вас есть mysqldump файл /root/MyData.sql, можно все еще выполнить команды как это

SET SQL_LOG_BIN=0;
source /root/MyData.sql

Это подпадает под опцию 2.

4
ответ дан 07.12.2019, 21:06

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

Я переместил бы файл в другой физический диск и видел бы, помогает ли это.

-1
ответ дан 07.12.2019, 21:06

Теги

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