私は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を使用しない場合、ログはstdoutにリダイレクトされます。
しかし、私はservice mysqld start
コマンドを使用してサービスを開始しているので、service mysql start
を使用してサービスを開始するときにデフォルトで使用されるすべてのオプションを知りたいですか? ESP、-log-errorは使用されますか?
ドキュメントを離れると、エラーログは/var/lib/mysql
のデフォルトの場所にあり、デフォルトの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*"
が示すように、私のマシンに存在しません。
mysqld
にjournalctl
のエントリがあります。したがって、私はsystemd
ユーザーのデフォルトでsystemd
システムログを使用すると考えています。
エラーログのMariaDBナレッジベースページ に記載されている段落があります。
systemd
には独自のロギングシステムがあり、systemd
を実行しているLinuxディストリビューションでは代わりにそこにエラーが記録される場合があります。 systemdログを表示するには、journalctl -u mariadb
を使用します。
--log-error
はMY_SPECIAL.conf
ファイルに追加できるオプションであり、journalctl
はsystemd
システムでmariadbがデフォルトでエラーを記録する場所であるため、これは質問に答えます。