Моя небольшая база данных 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
Необходимо смочь вычислить эти числа перед mysqldump.
Относительно настроек Вы дали в вопросе,
innodb_log_file_size=1G
Эта установка является СЛИШКОМ БОЛЬШОЙ!!!
innodb_log_file_size
как предполагается, 25% innodb_buffer_pool_size
innodb_log_file_size=128M
После того как Вы устанавливаете это в /etc/my.cnf
, необходимо сделать следующее для изменения размеров файлов журнала InnoDB:
service mysql stop
rm -f /var/lib/mysql/ib_logfile[01]
service mysql start
Что касается другой установки
innodb_log_buffer_size=1G
Вы никогда не хотите кэшировать тонну данных в здесь прежде, чем отправить их в Файлы журнала InnoDB, специально для перезагрузок mysqldump или тяжелых транзакционных ФИКСАЦИЙ. Должен быть меньшим порядком величины.
innodb_log_buffer_size=32M
BTW необходимо отключить двоичный файл, регистрирующийся перед перезагрузкой. Иначе все данные приземляются в Ваших двоичных журналах. Выполните одно из следующих действий:
SET SQL_LOG_BIN=0;
первая строка mysqldump файла.SET SQL_LOG_BIN=0;
затем выполненный source < mysqldumpfile >
/etc/my.cnf
и MySQL 5.1 перезапуска, загрузите mysqldump файл, мусорное ведро журнала некомментария, и перезапустите MySQL.Если у Вас есть mysqldump файл /root/MyData.sql
, можно все еще выполнить команды как это
SET SQL_LOG_BIN=0;
source /root/MyData.sql
Это подпадает под опцию 2.
Вашей проблемой является ввод-вывод, не память. При профилировании диска Вы найдете, что он перегружающийся безумно читает и пишет, особенно если это будет на том же диске как резервное копирование.
Я переместил бы файл в другой физический диск и видел бы, помогает ли это.