web-dev-qa-db-ja.com

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を使用しない場合、ログはstdoutにリダイレクトされます。


しかし、私はservice mysqld startコマンドを使用してサービスを開始しているので、service mysql startを使用してサービスを開始するときにデフォルトで使用されるすべてのオプションを知りたいですか? ESP、-log-errorは使用されますか?

1
Bhupesh Pant

ドキュメントを離れると、エラーログは/var/lib/mysqlのデフォルトの場所にあり、デフォルトのhostname.errという名前になっているはずですが、そこにはありません。

ディレクトリ/var/lib/mysqlには、tc.logiblogfile0iblogfile1aria_log.00000001aria_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*"が示すように、私のマシンに存在しません。

mysqldjournalctlのエントリがあります。したがって、私はsystemdユーザーのデフォルトでsystemdシステムログを使用すると考えています。

エラーログのMariaDBナレッジベースページ に記載されている段落があります。

systemdには独自のロギングシステムがあり、systemdを実行しているLinuxディストリビューションでは代わりにそこにエラーが記録される場合があります。 systemdログを表示するには、journalctl -u mariadbを使用します。

--log-errorMY_SPECIAL.confファイルに追加できるオプションであり、journalctlsystemdシステムでmariadbがデフォルトでエラーを記録する場所であるため、これは質問に答えます。

1
Matthew Goheen