Mysql
在 MySQL 複製主機上安全地更改 innodb_buffer_pool_size?
我們有一個 MySQL 伺服器,它是一個複制主機。隨著數據庫的增長,我們需要更改
innodb_buffer_pool_size
和(希望)提高性能。innodb_flush_method
我們這樣做的“最安全”的方法是什麼?我們有 2 個從屬伺服器,完成後需要繼續複製。
到目前為止的計劃是:
- 使用 .在 2 個從伺服器上停止複制
STOP SLAVE
。- 在所有 3 台伺服器上停止 MySQL,使用
service mysql stop
.- 在主伺服器上的
my.cnf
文件中進行更改。- 再次在主伺服器上啟動 MySQL 以盡快使用
service mysql start
.- 在兩個從伺服器中對
my.cnf
文件進行更改。- 在兩個從伺服器上再次啟動 MySQL,使用
service mysql start
.設置如下:
innodb_buffer_pool_size = 54G innodb_flush_method=O_DIRECT
該伺服器有 64GB 的記憶體並且是一個專用的 MySQL 伺服器,該伺服器根本不做任何其他事情。這是一個
Dell PowerEdge R720
執行Ubuntu 12.04 Server
。誰能預見這種方法的任何問題?還有什麼我們需要注意的嗎?
你所擁有的似乎很好。我會添加以下內容
在 Master 上執行它。
SET GLOBAL innodb_fast_shutdown = 0; SET GLOBAL sync_binlog = 1; SET GLOBAL sync_master_info = 1;
這將導致所有未送出的內容在關閉時送出。
然後,它將二進制日誌刷新到磁碟。
在奴隸上,執行這個
SET GLOBAL innodb_fast_shutdown = 0; SET GLOBAL sync_binlog = 1; SET GLOBAL sync_relay_log = 1; SET GLOBAL sync_relay_log-info = 1; SET GLOBAL sync_master_info = 1;
這將刷新所有二進制日誌和中繼日誌。如果從站沒有啟用二進制日誌記錄,則跳過
SET GLOBAL sync_binlog = 1;
。您的步驟現在看起來像這樣:
- 使用 STOP SLAVE 停止 2 個從屬伺服器上的複制。
SET GLOBAL innodb_fast_shutdown = 0;
在所有三台伺服器上執行SET GLOBAL sync_binlog = 1;
在主上執行SET GLOBAL sync_master_info = 1; SET GLOBAL sync_relay_log = 1; SET GLOBAL sync_relay_log-info = 1; SET GLOBAL sync_master_info = 1;
在奴隸上執行- 在所有 3 台伺服器上停止 MySQL,使用
service mysql stop
.my.cnf
在主伺服器上的文件中進行更改。- 再次在主伺服器上啟動 MySQL 以盡快使用
service mysql start
.- 在兩個從伺服器中的 my.cnf 文件中進行更改。
- 在兩個從伺服器上再次啟動 MySQL,使用
service mysql start
.