Назад | Перейти на главную страницу

Какие настройки использовать для быстрой перезагрузки резервной копии MySQL?

У меня есть база данных MySQL, которая выгружается в резервную копию 3,5 ГБ (mysqldump) примерно за 10 минут.

Но перезагрузка этой резервной копии на резервном / тестовом сервере занимает почти 2 часа [первоначально 12 часов до некоторой настройки].

Какие настройки позволят повысить производительность перезагрузки?

Наиболее многообещающими кажутся innodb_buffer_pool_size, innodb_additional_mem_pool_size и innodb_log_buffer_size ... но я достигаю пределов своего подхода проб и ошибок. Какие из этих настроек «должны» быть самыми важными?

Методом проб и ошибок я не смог получить более 70% использования ЦП и 63% использования памяти. Я бы хотел, чтобы оба были на 100% во время перезагрузки.

Все таблицы InnoDB.

ОБНОВИТЬ

Мне удалось сократить время загрузки с 12 часов до 1 часа 55 минут с помощью следующих настроек:

innodb_buffer_pool_size=192M
innodb_additional_mem_pool_size=96M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=64M
innodb_file_per_table
key_buffer              = 32M
max_allowed_packet      = 32M

Тестовый сервер представляет собой облачный сервер Rackspace объемом 512 МБ.

Производственный сервер - Athlon 64 X2 4200 2 ГБ.

mysql Ver 14.12 Distrib 5.0.67, for debian-linux-gnu (i486) using readline 5.2

Я не уверен, насколько еще это можно настроить сейчас ... но меня все еще беспокоит, что только 63% доступной оперативной памяти используется моим mysqld во время загрузки.

Я не думаю, что это проблема, связанная с дисковым вводом-выводом. Тот же сервер может копировать 20 МБ / с из zip-файла. Итак, используя грубую математику, только 6 минут из 1 часа 55 минут можно отнести к задержке на диске. Так что это действительно должно быть связано с процессором или памятью, но ни то, ни другое не будет на 100%.

Я обнаружил, что innodb_flush_log_at_trx_commit имеет наибольшее влияние на скорость восстановления. Убедитесь, что он установлен на 2, по крайней мере, во время восстановления.

Кроме того, проверьте инструменты maatkit, как это было предложено lg выше, дамп / восстановление прост, но не очень параллелен, только mk_parallel_restore может полностью использовать ваш процессор

Может другой метод бэкапа? Я предполагаю, что вы хотите полностью восстановить сервер базы данных на другом сервере. Если у вас есть LVM на вашем компьютере, вы можете использовать Снимок LVM и скопируйте необработанные файлы базы данных. Другой (и, возможно, лучший) вариант - использовать xtrabackup вместо mysqldump.