MySql 沒有在自定義 Ubuntu AMI 上獲取對 my.cnf 文件的更改。我該如何解決?
我從正在執行的 EC2 Ubuntu 實例創建了一個 AMI。然後我把它提出來,MySql 在這個複制的實例上執行的方式不同。
- 我的 my.cnf 文件的更改沒有被拾取。
2)我無法查詢我的數據庫,因為它給了我以下錯誤:
ERROR 1286 (42000): Unknown table engine 'InnoDB'
我猜MySql沒有正確配置?我是MySql的新手,所以你能告訴我我做錯了什麼嗎?
提前致謝。
我了解到(經過幾個小時的故障排除後),如果您的設置出現問題,則不會更新任何設置。
例如。就我而言,複製被破壞了。然而,而不是
Slave_IO_Running: No Slave_SQL_Running: No
顯示為“否”,主控主機的名稱也沒有更新,我在 .cnf 文件中更改了它。此外,我的 .cnf 文件中沒有設置 skip-innoDB,但仍然沒有啟用 innoDB。這讓我懷疑問題與 .cnf 文件有關。
然而,事實證明,這是兩件不同的事情。
由於記憶體不足,InnoDB 無法啟動。我分配的記憶體超過了提供的新 EC2 實例。這是創建圖像的課程:注意您正在創建的實例的大小。
第二個問題是複制沒有出現。這是因為我沒有:
復位從機
然後適當修改:
MASTER_LOG_POS
我在另一個 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
我真的希望有一天這對某人有所幫助!
檢查 /var/log/syslog 在 MySQL 啟動期間發生的任何錯誤。可能是您的 /etc/mysql/my.cnf 文件包含一個 skip-innodb 語句,這將禁用 InnoDB 表。