我从正在运行的 EC2 Ubuntu 实例创建了一个 AMI。然后我启动它,但 MySql 在这个复制的实例上并没有以相同的方式运行。
1)我的my.cnf文件的更改没有被采纳。
2)我无法查询我的数据库,因为它给出了以下错误:
ERROR 1286 (42000): Unknown table engine 'InnoDB'
我猜 MySql 配置不正确?我是 MySql 新手,你能告诉我我做错了什么吗?
提前致谢。
答案1
检查 /var/log/syslog 以查找 MySQL 启动期间发生的任何错误。您的 /etc/mysql/my.cnf 文件可能包含 skip-innodb 语句,该语句将禁用 InnoDB 表。
答案2
我了解到(经过几个小时的故障排除)如果您的设置出现问题,则所有设置都不会更新。
例如,在我的例子中,复制被破坏了。然而,
Slave_IO_Running: No
Slave_SQL_Running: No
显示为“否”,主主机的名称也没有更新,而我在 .cnf 文件中已更改了该名称。此外,我的 .cnf 文件中未设置 skip-innoDB,但 innoDB 仍未启用。这让我怀疑问题与 .cnf 文件有关。
但事实证明这是两件不同的事情。
由于内存不足,InnoDB 无法启动。我分配的内存超过了新 EC2 实例提供的内存。这是创建图像的一课:注意您正在创建的实例的大小。
第二个问题是复制没有出现。这是因为我没有:
重置从站
然后进行适当修改:
主日志位置
我在另一个 SF 问题上找到了答案:
那里发布的指南非常棒,可以作为答案。
我在位于以下位置的 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
我真的希望这有一天能帮助到某人!