Mysql
如何在 MariaDB 中啟用查詢日誌
我
mysql Ver 15.1 Distrib 5.5.46-MariaDB
在 CentOS 6.7 伺服器上執行。我正在嘗試記錄查詢,我正在通過將日誌重定向到文件來完成,如下所示:#/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了嗎?