Я создал AMI из моего работающего экземпляра EC2 Ubuntu. Затем я поднял его, и MySql не работает таким же образом на этом скопированном экземпляре.
1) Изменения в моем файле my.cnf не принимаются.
2) Я не могу запросить свою базу данных, так как это дает мне следующую ошибку:
ERROR 1286 (42000): Unknown table engine 'InnoDB'
Полагаю, MySql настроен неправильно? Я новичок в MySql, так что вы можете сказать мне, что я делаю не так, пожалуйста?
Заранее спасибо.
Я узнал (после нескольких часов устранения неполадок), что если что-то пойдет не так в вашей настройке, ни одна из настроек не будет обновлена.
Например, в моем случае репликация была сломана. Однако вместо
Slave_IO_Running: No
Slave_SQL_Running: No
Когда отображается «НЕТ», имя главного хоста также не обновляется, что я изменил в моем файле .cnf. Кроме того, skip-innoDB не был установлен в моем файле .cnf, но innoDB все еще не включался. Это заставило меня подозревать, что проблема связана с файлом .cnf.
Однако оказалось, что это две разные вещи.
InnoDB не смог подойти из-за нехватки памяти. Памяти, которую я выделял, было больше, чем предлагал новый экземпляр EC2. Это урок создания изображений: обращать внимание к размеру создаваемого экземпляра.
Вторая проблема заключалась в том, что репликации не было. Это потому, что у меня не было:
СБРОСИТЬ ВЕДОМУ
А затем соответствующим образом изменено:
MASTER_LOG_POS
Я получил ответ на другой вопрос по научной фантастике:
Почему репликация MySQL такая сложная?
Отличное руководство размещено в качестве ответа там.
У меня есть указатели на все это в моем журнале SQL, расположенном в:
/var/log/mysql/error.log
В нем были следующие записи:
InnoDB: Error: cannot allocate 1048592384 bytes of
InnoDB: memory with malloc! Total allocated memory
InnoDB: by InnoDB 38079360 bytes. Operating system errno: 12
InnoDB: Check if you should increase the swap file or
InnoDB: ulimits of your operating system.
InnoDB: On FreeBSD check you have compiled the OS with
InnoDB: a big enough maximum process size.
InnoDB: Note that in most 32-bit computers the process
InnoDB: memory space is limited to 2 GB or 4 GB.
InnoDB: We keep retrying the allocation for 60 seconds...
InnoDB: Fatal error: cannot allocate the memory for the buffer pool
110616 18:41:58 [ERROR] Plugin 'InnoDB' init function returned error.
110616 18:41:58 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
110616 18:41:58 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may
break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-
log=ip-xxxx-relay-bin' to avoid this problem.
110616 18:41:58 [ERROR] Failed to open the relay log 'xxxx' (relay_log_pos 251)
110616 18:41:58 [ERROR] Could not find target log during relay log initialization
110616 18:41:58 [ERROR] Failed to initialize the master info structure
Я очень надеюсь, что это когда-нибудь поможет кому-нибудь!
Проверьте / var / log / syslog на наличие ошибок, возникших во время запуска MySQL. Возможно, ваш файл /etc/mysql/my.cnf содержит инструкцию skip-innodb, которая отключит таблицы InnoDB.