Я следую этому решению здесь /programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 и пытался увеличить мой innodb_buffer_pool_size
до 4G и позже 1G (также 1024M) в дополнение к размеру файла журнала, но mysql не будет начинаться с этих значений. Если я вернусь к 512M, MySQL начнет нормально.
Как я могу решить это? Мой сервер 16 ГБ, и, согласно Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Тем временем я также нашел журнал ошибок:
120529 10:29:32 mysqld_safe mysqld из файла pid /var/run/mysqld/mysqld.pid закончилась
120529 10:29:33 mysqld_safe Запуск демона mysqld с базами данных из / var / lib / mysql
120529 10:29:33 [Примечание] Плагин «FEDERATED» отключен.
120529 10:29:33 InnoDB: куча памяти InnoDB отключена
120529 10:29:33 InnoDB: мьютексы и rw_locks используют атомарные встроенные функции GCC
120529 10:29:33 InnoDB: сжатые таблицы используют zlib 1.2.3
120529 10:29:33 InnoDB: использование встроенного в Linux AIO
120529 10:29:33 InnoDB: Инициализация пула буферов, размер = 1,0 ГБ
120529 10:29:33 InnoDB: завершена инициализация буферного пула
InnoDB: Ошибка: файл журнала ./ib_logfile0 имеет другой размер 0 134217728 байт
InnoDB: чем указано в файле .cnf 0 268435456 байт!
Ответы:
Два ответа, данные @RickJames и @drogart , по сути являются средствами правовой защиты. (+1 за каждого).
Прямо из журнала ошибок, который вы представляете, последние две строки говорят:
В этот момент было очевидно, что для innodb_log_file_size установлено значение 256M (268435456),
my.cnf
а для журналов транзакций InnoDB (ib_logfile0
,ib_logfile1
) соответственно по 128M (134217728). Возвращаясь к ссылке на мой ответ StackOverflow на ваш вопрос, вы должны были сделать следующее:Шаг 01) Добавьте это к
my.cnf
:Шаг 02) Запустите эти команды в ОС
Чтобы быть уверенным в происходящем, запустите
tail -f
журнал ошибок. Вы увидите сообщение, сообщающее, когда создается каждый файл журнала innodb.источник
service mysqld stop
.Исходя из ошибки в журнале, я предполагаю, что вы сделали это:
Если вы измените размер файла журнала, вам необходимо удалить старые файлы журнала. Innodb не запустится успешно, если существующие файлы не соответствуют указанному размеру в файле конфигурации. Если вы переместите их в другое место, innodb создаст новые файлы журнала транзакций правильного размера при запуске.
Я бы порекомендовал переместить старые файлы в другой каталог, а не просто удалять их, пока сервер не будет запущен с новыми файлами журналов и все выглядит нормально.
источник
Параметр buffer_pool должен быть равен примерно 70% доступной оперативной памяти, если вы используете только InnoDB.
Размер журнала не имеет большого значения. Оптимальным является установить его так, чтобы (Uptime * innodb_log_file_size / Innodb_os_log_written) составлял примерно 3600 (1 час).
Чтобы изменить размер журнала, необходимо
источник
Также может быть некоторая проблема в вашем значении для размера пула буферов . как это случилось в моем случае ...
При увеличении или уменьшении
innodb_buffer_pool_size
операция выполняется порциями. Размер порции определяется параметромinnodb_buffer_pool_chunk_size
конфигурации, который по умолчанию составляет 128M. Для получения дополнительной информации см. Настройка размера куска пула буферов InnoDB .Размер пула буферов всегда должен быть равен или кратен
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Если вы сконфигурируетеinnodb_buffer_pool_size
значение, которое не равно или кратноinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, размер пула буферов автоматически настраивается на значение, которое равно или кратноinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
ему не меньше, чем указанный размер пула буферов.В этом примере
innodb_buffer_pool_size
установлено значение 8G иinnodb_buffer_pool_instances
значение 16.innodb_buffer_pool_chunk_size
равно 128M, что является значением по умолчанию.8G является допустимым
innodb_buffer_pool_size
значением, потому что 8G является кратнымinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, который является 2G.источник