CentOS 6.7サーバーでmysql Ver 15.1 Distrib 5.5.46-MariaDB
を実行しています。クエリをログに記録しようとしていますが、ログを次のようにファイルにリダイレクトすることで実行しています。
#/etc/my.cnf.d/server.cnf
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 512M
thread_stack = 192K
thread_cache_size = 8
log-output = FILE
#General Query Log
general_log
general_log_file = /var/log/mysql/mysql_query.log
#Error Log
log_error = /var/log/mysql/mysql_error.log
#Slow Query Log
log-slow-queries
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql_slow.log
long_query_time = 2
log-queries-not-using-indexes
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
MySQLサービスを再起動する前に、次のコマンドを実行して各ファイルを作成し、適切な権限を割り当てました。
mkdir -p /var/log/mysql && touch /var/log/mysql/mysql_query.log && touch /var/log/mysql/mysql_error.log && touch /var/log/mysql/mysql_slow.log && chown -R mysql:mysql /var/log/mysql/
MySQLデーモンを再起動しました:
service mysql restart
MySQLサーバーを再起動した後、ファイルは表示されますが、サイズが0なので、MySQLはそれらのファイルに何も送信していません。 MySQLコンソールSHOW VARIABLES LIKE '%log%'
で次のクエリを実行しました。結果は以下であり、サーバーで変更が行われていないことに気付くかもしれません。
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
| aria_checkpoint_log_activity | 1048576 |
| aria_log_file_size | 1073741824 |
| aria_log_purge_type | immediate |
| aria_sync_log_dir | NEWFILE |
| back_log | 50 |
| binlog_annotate_row_events | OFF |
| binlog_cache_size | 32768 |
| binlog_checksum | NONE |
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| binlog_optimize_thread_scheduling | ON |
| binlog_stmt_cache_size | 32768 |
| expire_logs_days | 0 |
| general_log | OFF |
| general_log_file | pdone-prod.log |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_block_size | 512 |
| innodb_log_buffer_size | 8388608 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_mirrored_log_groups | 1 |
| innodb_recovery_update_relay_log | OFF |
| innodb_use_global_flush_log_at_trx_commit | ON |
| log | OFF |
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| log_error | /var/lib/mysql/pdone-prod.pdi-inc.com.err |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_queries | OFF |
| log_slow_rate_limit | 1 |
| log_slow_verbosity | |
| log_warnings | 1 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| max_relay_log_size | 0 |
| relay_log | |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_recovery | OFF |
| relay_log_space_limit | 0 |
| slow_query_log | OFF |
| slow_query_log_file | pdone-prod-slow.log |
| sql_log_bin | ON |
| sql_log_off | OFF |
| sync_binlog | 0 |
| sync_relay_log | 0 |
| sync_relay_log_info | 0 |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
ここで何が悪いのでしょうか?ログがそれらのファイルに送信されないのはなぜですか?
[〜#〜]更新[〜#〜]
@ rick-james:次のコマンドを実行して権限を確認しました。
# ls -ld /var/log/mysql/
drwxrwxrwx 2 mysql mysql 4096 Nov 30 16:44 /var/log/mysql/
そして、どうやら良い(777)。
@ ypercube:以下は、実行させたいコマンドの結果です。
# ls -l /var/log/mysql/
total 0
-rw-r--r-- 1 mysql mysql 0 Nov 30 16:44 mysql_error.log
-rw-r--r-- 1 mysql mysql 0 Nov 30 16:44 mysql_query.log
-rw-r--r-- 1 mysql mysql 0 Nov 30 16:44 mysql_slow.log
そもそもすべてのファイルはchmod
として644
でしたが、775
に変更すると、結果は次のようになります。
# ls -l /var/log/mysql/
total 0
-rwxrwxr-x 1 mysql mysql 0 Nov 30 16:44 mysql_error.log
-rwxrwxr-x 1 mysql mysql 0 Nov 30 16:44 mysql_query.log
-rwxrwxr-x 1 mysql mysql 0 Nov 30 16:44 mysql_slow.log
ただし、まったく変更されないため、ログはこれらのファイルに保存されません。どうして?
はい、ようやく問題が発生した場所を見つけました!何らかの理由で/etc/my.cnf
ファイルを削除します(おそらくMySQLをアンインストールするときなど)。これは/etc/my.cnf.d
の下のすべてを含むファイルです。その変更は有効になりません。私の悪い。御時間ありがとうございます
/var/log/mysql/
my.cnfが言うように。
SHOW VARIABLES LIKE '%log%';
-設定が本当に有効になっているかどうかを確認します。
ありますか /etc/my.cnf
ファイル?
実行中のmysqldの引数を調べて、何かをオーバーライドしていないか確認します。
Mariadbを再起動しましたか?