Mysql

innodb_buffer_pool_size 沒有改變

  • July 13, 2012

我使用 MySQL 5.5.23-1~dotdeb.0 (Debian),這裡是 my.cnf 的相關部分

default-storage-engine = innodb
innodb_buffer_pool_size = 3G
innodb_log_file_size = 256M
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_additional_mem_pool_size = 20M

問題是,無論我為 innodb_buffer_pool_size 選擇什麼值(我也嘗試了 4G、8G 和 8000M)。我得到以下資訊mysql> SHOW global VARIABLES;

| innodb_buffer_pool_size | 134217728  

調整入門腳本的結果:

INNODB STATUS
Current InnoDB index space = 621 M
Current InnoDB data space = 3.82 G
Current InnoDB buffer pool free = 0 %
Current innodb_buffer_pool_size = 128 M
Depending on how much space your innodb indexes take up it may be safe
to increase this value to up to 2 / 3 of total system memory 

感謝您提供解決此問題的提示。

好的,謝謝這個答案我發現我需要將配置放在裡面

$$ mysqld $$阻止 my.cnf 生效。 我的錯誤是我剛剛在 my.cnf 文件的末尾附加了命令。

然後在 mysql restart 我遇到

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes

要解決此錯誤,我需要刪除日誌

rm -f /var/lib/mysql/ib_logfile

$$ 01 $$

並按照 Rolando 所說的重新開始

免責聲明:不是 Debian 使用者

根據評論,我建議以下

cp /etc/mysql/my.cnf /etc/my.cnf
cp /etc/mysql/my.cnf /usr/etc/my.cnf 
cp /etc/mysql/my.cnf /var/lib/mysql/my.cnf (or wherever datadir is)

如果在製作了這些 my.cnf 文件並重新啟動 mysql 之後,您仍然無法更改 innodb_buffer_pool_size,那麼我會懷疑 mysql 二進製文件 mysqld。它很可能是原始碼編譯的,並且可能具有 InnoDB 硬編碼的值。

要驗證 mysqld 是否經過原始碼編譯,請在 mysqld 啟動並執行時檢查作業系統的程序列表。如果你看到幾十個 mysqld 連接,很可能 mysqld 是原始碼編譯的。

從那裡,我建議解除安裝 mysql 並下載 RPM 或 tar installltion。然後,查看 my.cnf 是否響應。

引用自:https://dba.stackexchange.com/questions/17075