当前位置:网站首页>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-error
The path is open log-error, If not custom log-error The path of , Default indata_dir
- In the open
log-bin=mysql-bin
At the same time, addserver-id=1
( At present MySQL Server The identity of the ), Otherwise, in the linux root Nextsudo service mysqld restart
The 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
边栏推荐
- Tomb. Weekly update of Finance (February 7 - February 13)
- [kubernetes series] learn the exposed application of kubernetes service security
- resulttype和resultmap的区别和应用场景
- 微服务间通信
- Audio-AudioRecord Binder通信机制
- [concept] Web basic concept cognition
- 2022工作中遇到的问题四
- Function knowledge points
- Lua uses require to load the shared library successfully, but the return is Boolean (always true)
- . Net 6 and Net core learning notes: Important issues of net core
猜你喜欢
MySQL advanced notes
Era5 reanalysis data download strategy
The real machine cannot access the shooting range of the virtual machine, and the real machine cannot Ping the virtual machine
【指针训练——八道题】
IPv6 jobs
Buuctf question brushing notes - [geek challenge 2019] easysql 1
Taobao focus map layout practice
OCR文字识别方法综述
IPv6 comprehensive experiment
Computer graduation project asp Net fitness management system VS development SQLSERVER database web structure c programming computer web page source code project
随机推荐
Single instance mode of encapsulating PDO with PHP in spare time
Linear regression and logistic regression
3857 Mercator coordinate system converted to 4326 (WGS84) longitude and latitude coordinates
1.16 - 校验码
Function knowledge points
Game theory matlab
js凡客banner轮播图js特效
Daily question brushing plan-2-13 fingertip life
Era5 reanalysis data download strategy
[ruoyi] ztree custom icon (iconskin attribute)
[padding] an error is reported in the prediction after loading the model weight attributeerror: 'model' object has no attribute '_ place‘
Distributed service framework dobbo
Inherit day01
Recommended foreign websites for programmers to learn
What is the investment value of iFLYTEK, which does not make money?
Explore pointers and pointer types in depth
Zhang Lijun: penetrating uncertainty depends on four "invariants"
Mysql database operation
resulttype和resultmap的区别和应用场景
Summary of Bible story reading