Maison > Article > base de données > Dans quel journal les opérations de mise à jour des données de MySQL sont-elles enregistrées ?
Les opérations de mise à jour de MySQL sur les données sont enregistrées dans le journal général des requêtes et le journal binaire. Le journal général des requêtes est utilisé pour enregistrer toutes les opérations de l'utilisateur, y compris le démarrage et l'arrêt des services MySQL, les instructions de mise à jour et les instructions de requête, etc. ; le journal binaire enregistre diverses opérations de base de données sous forme binaire, mais n'enregistre pas les instructions de requête.
(Tutoriel recommandé : Tutoriel vidéo MySQL)
Le journal est une partie importante de la base de données, principalement utilisée pour enregistrer l'état de fonctionnement, les opérations quotidiennes et les informations sur les erreurs de la base de données.
Journal des requêtes générales MySQL (Journal des requêtes générales)
Le journal des requêtes générales (Journal des requêtes générales) est utilisé pour enregistrer toutes les opérations des utilisateurs, y compris démarrer et arrêter les services MySQL, les instructions de mise à jour et les instructions de requête, etc.
Par défaut, la fonction de journal des requêtes générales est désactivée. Vous pouvez vérifier si le journal des requêtes générales est activé en exécutant la commande suivante :
mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | OFF | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.01 sec)
D'après les résultats, on peut voir que le journal des requêtes générales est désactivé et la variable general_log_file spécifie l'emplacement du fichier journal des requêtes générales.
Démarrer et configurer le journal général des requêtes
Dans MySQL, vous pouvez activer le journal général des requêtes en ajoutant l'option log dans le fichier de configuration MySQL, le format est la suivante :
[mysqld] log=dir/filename
Parmi eux, le paramètre dir spécifie le chemin de stockage du journal des requêtes générales ; le paramètre filename spécifie le nom de fichier du journal ; Si vous ne spécifiez pas de chemin de stockage, le journal général des requêtes sera stocké par défaut dans le dossier data de la base de données MySQL. Si vous ne spécifiez pas de nom de fichier, le nom de fichier par défaut est hostname.log, où hostname représente le nom d'hôte.
Afficher le journal des requêtes générales
Si vous souhaitez connaître les opérations récentes de l'utilisateur, vous pouvez afficher le journal des requêtes générales. Les journaux de requêtes générales sont stockés sous forme de fichiers texte et vous pouvez utiliser des fichiers texte ordinaires pour afficher le contenu des journaux de ce type.
Exemple 1
Nous vérifions d'abord si la fonction de journal des requêtes générales est activée, puis interrogeons les enregistrements de la table tb_student. La commande SQL et le processus d'exécution sont les suivants :
mysql> SHOW VARIABLES LIKE '%general%'; +------------------+----------------------------------------------------------------+ | Variable_name | Value | +------------------+----------------------------------------------------------------+ | general_log | ON | | general_log_file | C:\ProgramData\MySQL\MySQL Server 5.7\Data\LAPTOP-UHQ6V8KP.log | +------------------+----------------------------------------------------------------+ 2 rows in set, 1 warning (0.02 sec) mysql> use test; Database changed mysql> SELECT * FROM tb_student; +----+--------+ | id | name | +----+--------+ | 1 | Java | | 2 | MySQL | | 3 | Python | +----+--------+
3 lignes après l'exécution réussie de set (0,06 sec)
, ouvrez le journal des requêtes générales. Le nom du journal ici est LAPTOP-UHQ6V8KP.log Ce qui suit fait partie du journal des requêtes générales.
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe, Version: 5.7.29-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: MySQL Time Id Command Argument 2020-05-29T06:43:44.382878Z 7 Quit 2020-05-29T06:44:10.001382Z 8 Connect root@localhost on using SSL/TLS 2020-05-29T06:44:10.007532Z 8 Query select @@version_comment limit 1 2020-05-29T06:44:11.748179Z 8 Query SHOW VARIABLES LIKE '%general%' 2020-05-29T06:44:25.487472Z 8 Query SELECT DATABASE() 2020-05-29T06:44:25.487748Z 8 Init DB test 2020-05-29T06:44:35.390523Z 8 Query SELECT * FROM tb_student
On peut voir que le journal enregistre très clairement tous les comportements du client.
Journal binaire MySQL (journal binaire)
Journal binaire (journal binaire) peut également être appelé journal des modifications (journal de mise à jour), qui est MySQL Journal très important. Il est principalement utilisé pour enregistrer les modifications dans la base de données, c'est-à-dire les instructions DDL et DML des instructions SQL, et n'inclut pas les opérations de requête d'enregistrement de données.
Si la base de données MySQL s'arrête de manière inattendue, vous pouvez utiliser le fichier journal binaire pour afficher les opérations effectuées par l'utilisateur et les modifications qui ont été apportées aux fichiers du serveur de base de données, puis restaurer le serveur de base de données en fonction des enregistrements. dans le fichier journal binaire.
Par défaut, la fonction de journalisation binaire est désactivée. Vous pouvez vérifier si le journal binaire est activé en exécutant la commande suivante :
mysql> SHOW VARIABLES LIKE 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 1 row in set, 1 warning (0.02 sec)
Comme le montrent les résultats, le journal binaire est désactivé.
Démarrer et configurer la journalisation binaire
Dans MySQL, vous pouvez activer la journalisation binaire en ajoutant l'option log-bin dans le fichier de configuration, le format est le suivant :
[mysqld] log-bin=dir/[filename]
Parmi eux, le paramètre dir spécifie le chemin de stockage du fichier binaire ; le paramètre filename spécifie le nom de fichier du fichier binaire, sous la forme filename.number, et la forme du nombre est 000001, 000002, etc.
Chaque fois que le service MySQL est redémarré, un nouveau fichier journal binaire sera généré. La partie nom de fichier des noms de fichiers de ces fichiers journaux ne changera pas et le nombre continuera d'augmenter.
S'il n'y a pas de paramètres dir et filename, le journal binaire sera stocké par défaut dans le répertoire de données de la base de données. Le nom de fichier par défaut est hostname-bin.number, où hostname représente le nom d'hôte.
Ajoutez l'instruction suivante dans le groupe [mysqld] du fichier my.ini :
log-bin
Après avoir redémarré le serveur MySQL, vous pouvez voir LAPTOP-UHQ6V8KP-bin dans le répertoire de données du Base de données MySQL 000001 ce fichier, le fichier LAPTOP-UHQ6V8KP-bin.index est également généré. Ici, le nom d'hôte du serveur MySQL est LAPTOP-UHQ6V8KP.
Vous pouvez également apporter les modifications suivantes dans le groupe [mysqld] du fichier my.ini. L'instruction est la suivante :
log-bin=C:log\mylog
Après avoir redémarré le service MySQL, vous pouvez voir le fichier mylog.000001 et le fichier mylog.index dans le dossier C:log.
Afficher le journal binaire
1. Afficher la liste des fichiers journaux binaires
Vous pouvez utiliser la commande suivante pour afficher quels binaires se trouvent dans le fichier journal MySQL :
mysql> SHOW binary logs; +----------------------------+-----------+ | Log_name | File_size | +----------------------------+-----------+ | LAPTOP-UHQ6V8KP-bin.000001 | 177 | | LAPTOP-UHQ6V8KP-bin.000002 | 154 | +----------------------------+-----------+ 2 rows in set (0.00 sec)
2. Afficher le fichier journal binaire en cours d'écriture
Vous pouvez utiliser la commande suivante pour afficher le fichier journal binaire actuellement en cours d'écriture. étant écrit en MySQL.
mysql> SHOW master status; +----------------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------------+----------+--------------+------------------+-------------------+ | LAPTOP-UHQ6V8KP-bin.000002 | 154 | | | | +----------------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
3. Afficher le contenu du fichier journal binaire
Les journaux binaires sont stockés au format binaire et ne peuvent pas être ouverts et visualisés directement. Si vous devez afficher le journal binaire, vous devez utiliser la commande mysqlbinlog.
mysqlbinlog 命令的语法形式如下:
mysqlbinlog filename.number
mysqlbinlog 命令只在当前文件夹下查找指定的二进制日志,因此需要在二进制日志所在的目录下运行该命令,否则将会找不到指定的二进制日志文件。
例 1
下面使用 mysqlbinlog 命令,来查看 C:\log 目录下的 mylog.000001 文件,代码执行如下:
C:\Users\11645>cd C:\log C:\log>mysqlbinlog mylog.000001 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #200527 9:33:37 server id 1 end_log_pos 123 CRC32 0x69738cfd Start: binlog v 4, server v 5.7.29-log created 200527 9:33:37 at startup ......
由于日志内容较长,这里只展示了 mylog 中的部分内容。
使用 mysqlbinlog 命令时,可以指定二进制文件的存储路径。这样可以确保 mysqlbinlog 命令可以找到二进制文件。上面例子中的命令可以变为如下形式:
mysqlbinlog C:\log\mylog.000001
这样,mysqlbinlog 命令就会到 C:\log 目录下去查找 mylog.000001 文件。如果不指定路径,mysqlbinlog 命令将在当前目录下查找 mylog.000001 文件。
除了 filename.number 文件,MySQL 还会生成一个名为 filename.index 的文件,这个文件存储着所有二进制日志文件的列表,可以用记事本打开该文件。
小技巧:实际工作中,二进制日志文件与数据库的数据文件不放在同一块硬盘上,这样即使数据文件所在的硬盘被破坏,也可以使用另一块硬盘上的二进制日志来恢复数据库文件。两块硬盘同时坏了的可能性要小得多,这样可以保证数据库中数据的安全。
更多编程相关知识,请访问:编程入门!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!