EC2 大型實例上 MySQL 的良好/更好配置
我有一個專用於 MySQL 的 EC2 大型實例。
它將服務於 Joomla/Magento 組合,因此它混合了 InnoDB 和 MyISAM 表。我過去只使用過 MyISAM,因此不熟悉 InnoDB 使用的設置。到目前為止的實驗都沒有什麼成果,因為我一直導致 InnoDB 引擎被禁用。
我的實例執行的是 Ubuntu 10.04 64 位伺服器版,記憶體約為 7.5G。MySQL 目前正在使用其中的約 0.6%,性能有些差。我想將其配置為盡可能多地使用系統 RAM。
測試一些設置我了解到 InnoDB 日誌的總和不能大於 4G。
任何人都可以提供一些基本的 InnoDB 和 MyISAM 設置來幫助我入門。
謝謝蒂姆
我在 EC2 上執行相同類型的 Mysql 伺服器。不要碰 /etc/mysql/my.cnf,而是將配置文件放入 /etc/mysql/conf.d/ 這將讓您管理特定引擎的更改,並在您獲得有關如何配置的額外線索後為管理員提供. 此外,它還可以輕鬆備份您所做的任何更改以及跟踪它們。
/etc/mysql/conf.d/innodb_mysql.cnf
[mysqld] # innodb settings innodb_additional_mem_pool_size = 12M innodb_buffer_pool_size = 2G innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout = 180 innodb_log_buffer_size = 16M innodb_open_files = 512 innodb_thread_concurrency = 0
這些設置中的大多數都是非常標準的,您絕對應該查看Percona 的建議。你的系統可以達到 6G,但我會從小處著手。同樣使用 myisam 表,我可能會停在 4G 上。我不會觸及 innodb 日誌文件的大小,那裡幾乎沒有什麼收穫。增加 log_buffer_size 和 addition_mem_pool 在初始碰撞後也幾乎沒有回報。
上面的設置也是為了更好的性能,而不是為了事務的一致性。假設您只執行一個網路應用程序,上述情況很好,但不適用於銀行系統。
/etc/mysql/conf.d/general_mysql.cnf
[mysqld] # general settings key_buffer = 384M
key_buffer 通常對 myisam 和 Mysql 最有用。預設只有 16M,這在 8GB 機器上非常小。再一次,我會從一個好的跳躍開始,看看你是否有進步。請記住,myisam 緩衝區和 innodb 緩衝區不是共享的,因此它們的總和需要少於您擁有的 RAM 量。稍後您可能還會查看排序和讀取緩衝區。