当前位置:网站首页>Four logs of MySQL server layer
Four logs of MySQL server layer
2022-07-06 03:13:00 【Rookie ~ ~】
List of articles
One 、MySQL Server Introduction to layer log
When one MySQL Server Client Initiate a connection request , stay MySQL What the backend has to do :
MySQL The journal is in MySQL server Generated on , No matter which storage engine you change , These logs are needed , Include :
Error log : Record mysqld During the operation of the service cordump、error、exception etc.
Query log : Record MySQL Server All that you've received SQL. Due to the of online projects SQL That's too much , Open query log IO Too much leads to MySQL inefficiency , We It usually doesn't open , Only start when debugging . For example, by looking at sql Discover hotspot data and cache it :

Binary log : Record data changes (insert、update、delete、alter …), It's very important , Can be used for Data recovery , Master slave copy . Master-slave replication technology depends on log_bin, All changes to the main library are recorded in log_bin in , From the library from binlog Read all operations of the main library , Do it again .

Slow query log : Records some instances where the execution time exceeds the specified value SQL sentence , Available for developers to analyze SQL, So as to optimize
MySQL There are many global variables defined in to record settings or states , Check is show variables( Global variables ) perhaps show status( state ). View log related variables :
Two 、 Profile parameters
open my.ini, Add the above parameters to the back , Restart after saving mysql Just the service .
adopt set Method can only affect the current session, If you want to The configuration is permanently valid , It needs to be set on the configuration file , And then restart MySQL service , It can take effect forever
linux Next restart mysqld Commands for services :sudo service mysqld restart
Let's look at the configuration file /etc/mysql/my.cnf
- give
log-errorThe path is open log-error, If not custom log-error The path of , Default indata_dir - In the open
log-bin=mysql-binAt the same time, addserver-id=1( At present MySQL Server The identity of the ), Otherwise, in the linux root Nextsudo service mysqld restartThe service cannot be restarted - Set expiration time
expire_log_days, Because one day the disk will be full of this log , Causes the server to become inoperable , After the set time is exceeded, the log file will be deleted
3、 ... and 、 Error log

Four 、 Binary log
Binary log (BINLOG) It records all the DDL( Data definition language ) and DML( Data manipulation language ) sentence , But it does not include data query statements . Statement to “ event ” Form preservation of , It describes the data change process . This log plays an extremely important role in data recovery in case of disaster .
Two important scenes : Master slave copy 、 Data recovery .
see binlog:show binary logs
Binary content cannot be viewed directly , Because it doesn't record plaintext , Because it's a little unsafe to record plaintext , After all, it is the details of database table changes , Unlike slow queries, logs are recorded in clear text .

binlog Default in MySQL Of data_dir Next 
1. demonstration binlog Record changes
Let's refresh , Make a new one binlog
Use school Database based user Table :
perform insert and update operation 
Look again binlog
We found that the log filesize It's different from just now , Be sure to record the data change operation we just did
If we go straight cat Log view , You will find that it is not in clear text , Unable to view directly 
adopt mysqlbinlog Tools (mysql Native tools ) Mind parsing a large number of binlog Log files :
mysqlbinlog --no-defaults --database=school --base64-output=decode-rows -v --start-datetime='2022-03-01 00:00:00' --stop-datetime='2022-03-31 00:00:00' mysql-bin.000001 | more
- database: Specify to view changes to a library
- base64-output:binlog Decoding method
- start-datetime & stop-datetime: Specify to view changes in a certain period of time , If you don't write, view all changes
- mysql-bin.000001: View the binary log file
Let's take a look at what just changed binlog:


- @1、@2、@3、@4: Represents the name of the database table 4 A field
- server id: It means that we are my.cnf Set in the id, Used to identify the current MySQL The identity of the
- at 565、at679: It refers to the current event in binlog The location of the record , Use when recovering data .
2. demonstration binlog Data recovery

establish mytest database , Create inside user Table and add data 
If someone deletes the library now 
At this time mytest All tables and data in the library are gone , However, these operations are recorded in the binary log binlog Inside
In theory , It can be downloaded from binlog Recover the lost data . Because the recovery process is also the modification of data , Therefore, the logs generated during the recovery process should also be recorded in binlog in , So in order to prevent us from not knowing where to end the data recovery process , Or we can't tell which binary logs we need to recover and which are newly generated in the recovery , This requires us Appoint binlog Recovery interval
We now know , We build a library 、 Build table 、 The operations of inserting data are recorded in mysql-bin.00003 In file 
Let's refresh now , Make a new one binlog, This allows our next data recovery operations to be recorded in mysql-bin.00004 In file , Instead of adding to mysql-bin.00003

So let's look at mysql-bin.00003, Find the interval that needs to be recovered 


from mysql-bin.000003 Take out all the operations in the interval , Through the pipe MySQL shell On the implementation 
View the current library , You can see mytest Has recovered 
Then check the table and data 
In this way, all the data will be restored .
We can not only pass binlog The location of the record , Get the interval that needs to be recovered , It can also be done through binlog Record the time to get the interval to be recovered , Parameter is :start-datetime、stop-datetime

Pay attention to data recovery in actual use : Because of configuration bin-log It is also configured mysql-bin, Also configured expire_logs_days( The expiration time of the log ), How to recover the data before the expiration time ?
mysql The recovery of data depends on Data backup and binlog Data recovery . The expired log data will be backed up , No expired data can be passed directly through binlog recovery . Generally, data backup is to backup data to sql In the script file , For example, save in ~/data.sql in , And then in mysql with source ~/data.sql perform , Or if it's in linux Of shell Pipes can be used inside :cat ~/data.mysql|mysql -u root -p, We can restore the data we backed up before to mysql In the library table of .
5、 ... and 、 Slow query log
边栏推荐
- Mysql database operation
- XSS challenges bypass the protection strategy for XSS injection
- 下一个行业风口:NFT 数字藏品,是机遇还是泡沫?
- Leetcode problem solving -- 108 Convert an ordered array into a binary search tree
- 张丽俊:穿透不确定性要靠四个“不变”
- Fault analysis | analysis of an example of MySQL running out of host memory
- Research on cooperative control of industrial robots
- Performance test method of bank core business system
- 4. File modification
- Redis cache breakdown, cache penetration, cache avalanche
猜你喜欢

What is the investment value of iFLYTEK, which does not make money?

Codeforces 5 questions par jour (1700 chacune) - jour 6

电机控制反Park变换和反Clarke变换公式推导

Web security SQL injection vulnerability (1)

Princeton University, Peking University & UIUC | offline reinforcement learning with realizability and single strategy concentration

ERA5再分析资料下载攻略

Résumé des méthodes de reconnaissance des caractères ocr

Linear programming matlab

XSS challenges绕过防护策略进行 XSS 注入

【Kubernetes 系列】一文學會Kubernetes Service安全的暴露應用
随机推荐
Reverse repackaging of wechat applet
OCR文字识别方法综述
JS音乐在线播放插件vsPlayAudio.js
Codeworks 5 questions per day (1700 average) - day 6
Polymorphic day02
Installation and use tutorial of cobaltstrike-4.4-k8 modified version
My C language learning records (blue bridge) -- files and file input and output
How to do function test well
Leetcode problem solving -- 99 Restore binary search tree
[network security interview question] - how to penetrate the test file directory through
What is the investment value of iFLYTEK, which does not make money?
How to choose PLC and MCU?
不赚钱的科大讯飞,投资价值该怎么看?
Computer graduation project asp Net fitness management system VS development SQLSERVER database web structure c programming computer web page source code project
Sign SSL certificate as Ca
Inherit day01
February 14, 2022 Daily: Google long article summarizes the experience of building four generations of TPU
Detailed use of dbutils # yyds dry goods inventory #
tcpdump: no suitable device found
Redis SDS principle