Ubuntu

EC2 大型實例上 MySQL 的良好/更好配置

  • March 21, 2011

我有一個專用於 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 量。稍後您可能還會查看排序和讀取緩衝區。

引用自:https://serverfault.com/questions/249151