Mariadb 預設日誌位置和 –log-error
我正在使用 mariadb 來調查一些我想檢查日誌的問題。令我驚訝的是,沒有為 mariadb 生成日誌文件。
我懷疑這不可能,所以我懷疑我的搜尋技能。
MariaDB [(none)]> show variables like 'log_error' -> ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_error | | +---------------+-------+ 1 row in set (0.00 sec)
我已經在 my.cnf 中添加了條目,但上面的欄位將變為空。
[root@cslcodev11-oem ~]# cat /etc/my.cnf [mysqld] !includedir /etc/mysqld/conf.d datadir=/mnt/mgmt/var/lib/mysql socket=/var/lib/mysql/mysql.sock tmpdir=/mnt/mgmt/var/lib/mysql_tmp user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ### TRT-3229 ##### sync_binlog=1 innodb_flush_method=O_DIRECT innodb_support_xa = 1 myisam_repair_threads = 2 myisam_recover_options = FORCE ################### innodb_file_per_table=1 innodb_log_buffer_size = 8M table_open_cache=256 max_heap_table_size=256M ### TRT-4685 ### max_connections=500 ################ innodb_log_file_size = 512M [mysqld_safe] log-error=/var/log/mariadb/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [root@cslcodev11-oem ~]#
所以,我想知道如果無法從配置文件中讀取路徑,我們是否有生成這些日誌的預設位置。
更新:
經過一番調查,我發現了這個資訊,
參考:https ://mariadb.com/kb/en/mariadb/error-log/
啟動錯誤日誌
預設情況下,錯誤日誌處於活動狀態。log-error=filename 選項確定將輸出寫入的位置。如果未指定文件名,則日誌將寫入 host-name.err。如果沒有指定絕對路徑,文件將被寫入數據目錄(由 datadir 系統變數的值決定)。
在 Unix 系統上,如果不使用 –log-error 選項,則錯誤將寫入 stderr(通常是命令行)。
在 Windows 上,如果指定了 –console 選項,並且未使用 –log-error,則錯誤將寫入控制台。如果存在 –log-error,則忽略 –console。
所以現在我明白了,由於某種原因,my.cnf 中的配置log_error沒有被考慮。因此,根據建議,在 Unix 系統上,如果不使用 –log-error,則日誌將重定向到標準輸出。
但是,我正在使用
service mysqld start
命令啟動服務,所以我想知道當我們使用啟動服務時預設使用哪些選項service mysql start
?ESP,是否使用了 –log-error ?
離開文件,錯誤日誌應該在預設位置,
/var/lib/mysql
它應該被命名為 defaulthostname.err
,但它只是不存在。在目錄中,
/var/lib/mysql
我確實有一個tc.log
,iblogfile0
,iblogfile1
,aria_log.00000001
, 和aria_log_control
文件。但我無法閱讀它們中的任何一個,它們是加密的。有誰知道這些是什麼?但是,我正在使用 service mysqld start 命令啟動服務,所以我想知道當我們使用 service mysql start 啟動服務時預設使用哪些選項?ESP,是否使用了 –log-error ?
執行以下命令後,
cat /etc/systemd/system/mysqld.service | grep "mysql"
我們可以看到 systemd 用來啟動程序的行是
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
. 傳遞給 MariaDB 的選項儲存在$MYSQLD_OPTS
變數中。如果我們也執行
cat /etc/systemd/system/mysqld.service | grep "MYSQLD_OPTS"
,我們會得到以下結果。MYSQLD_OPTS here is for users to set in /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf Use the [Service] section and Environment="MYSQLD_OPTS=...". ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
正如所揭示的,我的機器上不存在文件 MY_SPECIAL.conf
find / -name "*MY_SPECIAL*"
。我確實有
mysqld
in的條目journalctl
。所以我認為它systemd
預設為我們systemd
使用者使用系統日誌。在錯誤日誌的 MariaDB 知識庫頁面上有一段說明。
systemd
有自己的日誌系統,執行的 Linux 發行版systemd
可能會在那裡記錄錯誤。要查看 systemd 日誌,請使用journalctl -u mariadb
.這回答了這個問題,因為這
--log-error
將是一個可以添加到MY_SPECIAL.conf
文件的選項,並且journalctl
是 mariadb 在systemd
系統上預設記錄錯誤的地方。
log-error
還是log_error
?
log-error
是在選項文件中設置選項時分配的正確名稱my.cnf
。
log_error
是讀取時正確的系統變數名稱SHOW VARIABLES LIKE '%error%'
。