mysql my.cnf 被忽略
問題
我正在嘗試修改我的生產伺服器上的 my.cnf 值,但更改在之後沒有生效
sudo service mysql restart
,使用我的開發伺服器上的 my.cnf 的精確副本(下載並替換原始)所做的更改是可見的從 mysql 命令行中的顯示變數。my.cnf 位於 /etc/mysql/my.cnf
sudo find / -name my.cnf /etc/mysql/my.cnf
所以整個系統上只存在一個文件..
生產是 ubuntu 10.04 LTS 64bit
開發是 ubuntu 11.10 32bit
Mysql 版本分別為 5.1.61 和 5.1.62。
更新 2:
執行 mysql stop 和 mysql status 後返回 mysql stop/waiting,如果我執行
top -b | grep mysql
27652 root 20 0 4096 424 420 S 0 0.0 0:00.01 mysqld_safe 27769 mysql 20 0 392m 57m 7236 S 0 1.5 119116,08 mysqld
這看起來它仍在執行,而且時間對我來說看起來不太好,但我現在擔心如果我殺死這些/這個過程,我將無法讓 mysql 再次執行,並且生產這很糟糕:S。
我意識到這可能不是可以回答的問題,而是殺死這些程序然後執行 service mysql start,這會讓 mysql 再次執行嗎?- 另外,上面的過程是否有正常的數字?
更新:
這是否意味著它從 my.cnf… 獲取設置但不使用它?所以現在很迷茫。
最後它得到了 innodb_buffer.. 設置。
mysqld --print-defaults mysqld would have been started with the following arguments: --user=mysql --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --skip-external-locking --bind-address=127.0.0.1 --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=9 --max_binlog_size=100M --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_buffer_pool_size=500M --user=mysql --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --skip-external-locking --bind-address=127.0.0.1 --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=9 --max_binlog_size=100M --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_buffer_pool_size=500M
我的.cnf
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking bind-address = 127.0.0.1 key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 myisam-recover = BACKUP query_cache_limit = 1M query_cache_size = 16M log_error = /var/log/mysql/error.log expire_logs_days = 10 max_binlog_size = 100M innodb_file_per_table = 1 [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] [isamchk] key_buffer = 16M !includedir /etc/mysql/conf.d/
有什麼有趣的
/etc/mysql/conf.d/
嗎?您正在使用的 Mysql 版本應該my.cnf
按照/etc/mysql/conf.d/
配置文件名的順序進行解析。在以前的版本中,順序可能有些不確定。鏈中最後設置的任何值都應該獲勝,這可能解釋了為什麼您的更改
my.cnf
沒有更新伺服器;如果以後的文件覆蓋了您的設置。如果它沒有任何內容,
/etc/mysql/conf.d/
請創建一個名為innodb.cnf
(不會解析任何不以 結尾的內容.cnf
)的文件,僅包含這兩行,並查看您的 innodb 設置是否在重新啟動後更新。[mysqld] innodb_buffer_pool_size = 500M
來自文件的資訊:
username$ mysqld --verbose --help | grep '/my.cnf' -B 1 Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
詳細資訊在 MySQL Docs中查看
Table 4.2
可以
!include
在選項文件中使用指令來包含其他選項文件並!includedir
在特定目錄中搜尋選項文件…..… MySQL 不保證目錄中選項文件的讀取順序…
在 Unix 作業系統上使用 !includedir 指令查找和包含的任何文件都必須具有以 . 結尾的文件名
.cnf
。在 Windows 上,該指令檢查帶有.ini
or.cnf
副檔名的文件。