Mysql

Mariadb 預設日誌位置和 –log-error

  • July 6, 2021

我正在使用 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它應該被命名為 default hostname.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*"

我確實有mysqldin的條目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%'

參考連結:MariaDBMySQL

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