Je suis entrain de courir mysql Ver 15.1 Distrib 5.5.46-MariaDB
dans le serveur CentOS 6.7. J'essaie d'obtenir des requêtes enregistrées et je le fais en redirigeant le journal vers les fichiers comme indiqué ci-dessous:
#/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
Avant de redémarrer le service MySQL, j'ai exécuté la commande suivante pour créer chaque fichier et attribuer les autorisations appropriées:
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/
J'ai redémarré le démon MySQL:
service mysql restart
Après avoir redémarré le serveur MySQL, je peux voir les fichiers mais avec une taille 0, donc MySQL n'envoie rien à ces fichiers. J'ai exécuté la requête suivante sur la console MySQL SHOW VARIABLES LIKE '%log%'
et ci-dessous est le résultat et comme vous pouvez le remarquer, les modifications ne sont pas apportées au serveur:
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
| 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 |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
Qu'est-ce qui pourrait mal ici? Pourquoi les journaux ne sont-ils pas envoyés à ces fichiers?
MET À JOUR
@ rick-james: J'ai vérifié les autorisations en exécutant:
# ls -ld /var/log/mysql/
drwxrwxrwx 2 mysql mysql 4096 Nov 30 16:44 /var/log/mysql/
Et sont apparemment bons (777).
@ ypercube: Voici le résultat de la commande que vous souhaitez que j'exécute.
# 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
En premier lieu, tous les fichiers étaient chmod
comme 644
mais je change ça pour être 775
maintenant le résultat ressemble à:
# 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
Mais ne change pas du tout, les journaux ne sont pas enregistrés dans ces fichiers. Pourquoi?
Ok, enfin j'ai trouvé où était le problème! Pour une raison quelconque, je supprime /etc/my.cnf
fichier (peut-être quand je désinstalle MySQL ou autre chose) et c'est le fichier comprenant tout sous /etc/my.cnf.d
à cause de cela, les modifications ne prennent pas effet. Ma faute. Merci pour votre temps
Vérifiez sous /var/log/mysql/
comme le dit votre my.cnf.
SHOW VARIABLES LIKE '%log%';
- pour voir si les paramètres ont vraiment pris effet.
Y a t-il /etc/my.cnf
fichier?
Regardez les arguments sur mysqld en cours d'exécution pour voir s'ils remplacent quoi que ce soit.
Avez-vous redémarré mariadb?