search
HomeDatabaseMysql TutorialIntroduction MySQL log redo log and binlog

Introduction MySQL log redo log and binlog

Feb 18, 2021 am 09:04 AM
binlogmysqlredo log

Introduction MySQL log redo log and binlog

##Free learning recommendation: mysql video tutorial

Preface

As long as you are a programmer who has been exposed to MySQL, you have more or less heard of redo log (redo log) and binlog (archive log). Today, let’s share the uses and differences between these two logs.

Simply put, redo log is a log unique to InnoDB. If you use other storage engines, there will be no redo log, only binlog.

Binlog is the log of the server layer of MySQL. No matter what storage engine is used, there will be a binlog. So, why do we need redo log and binlog? Can’t everything be solved with just one binlog? Next, let’s take a detailed look at the difference between redo log and binlog.

redo log

In MySQL, if you want to update a statement, you need to bring update conditions, such as

update T set name = 'god-jiang' where id=6, generally the statement with id=6 is queried first, and then the update operation is performed.

If the number of updates is 100, 1,000 or even 10,000, each update needs to be written to the disk. Then the corresponding record must be found on the disk and then updated. The IO cost and search cost of the entire process are too high. In order to solve this problem, the designers of MySQL used WAL technology to solve it. The full name of WAL is

Write Ahead Logging, which means writing the log first and then writing to the disk.

Specific operation: When a record needs to be updated, the InnoDB engine will first write the record to the redo log and update the memory. At this time, the update is completed. At the same time, the InnoDB engine will update this operation record to the disk at the appropriate time (when the system is idle). This update is often when the system is relatively idle.

But the size of the redo log is fixed, and it is impossible to write infinitely all the time. Let us see how MySQL does it.


Introduction MySQL log redo log and binlog

write pos is the position of the current record, moving backward while writing. The check point is the current position to be erased, which also moves backward and circulates. Before erasing the record, the record must be updated to the data file.

The green part between write pos and check point indicates that new operations can be recorded. If the write pos catches up with the check point, it means that the redo log is full. At this time, new operations cannot be continued. It is necessary to stop and erase some records and push the check point back.

With redo log, InnoDB can ensure that even if the database detects an exception and restarts, previously submitted transactions will not be lost. This capability is also called

crash-safe.

The above is the introduction to redo log. After reading this, you can try to ask your company's DBA colleagues whether MySQL can be restored to the state of any second within half a month. The answer will definitely be Yes, this is all thanks to the redo log.

binlog

Looking at MySQL as a whole, it is actually divided into two layers, one is the Server layer and the other is the storage engine layer. The redo log discussed above is a log unique to the InnoDB engine, while the binlog is a log belonging to the server layer, also called an archive log.

The difference between redo log and binlog

    redo log is unique to the InnoDB engine; binlog is implemented by the Server layer of MySQL and can be used by all engines
  • The redo log is a physical log, which records "XXX modifications were made on the XXX data page"; the binlog is a logical log, which records the original logic, and its record is the corresponding SQL statement
  • Redo log is written in a loop, and the space will definitely run out, so write pos and check point need to be matched; binlog is written additionally, and it will switch to the next one when it reaches a certain size, and will not overwrite the previous log

Demonstrates the internal process of the executor and the InnoDB engine through a simple update statement

update T set name = 'god-jiang' where id = 6
    Use the executor to retrieve the record with id=6 from the InnoDB engine and then load it into memory
  1. The executor gets the result returned by the engine, changes the name to 'god-jiang', and then calls the storage engine interface again to write new data
  2. The engine updates the new data into the memory , and write this update operation to the redo log at the same time. At this time, the redo log is in the prepare state
  3. The executor generates the binlog of this operation and writes the binlog to the disk
  4. The executor calls the engine Submit the transaction interface, and change the redo log just written to the commit state, and the update is completed

The corresponding flow chart
Introduction MySQL log redo log and binlog

Finally, why does writing to the redo log put it in the prepare state, and then writing to the binlog changes to the commit state? In fact, this process is called "two-stage submission".

Two-phase submission

In fact, both redo log and binlog can be used to represent the status of transaction submission, and two-phase submission is to keep these two states logically consistent.

For example: update T set name = ‘god-jiang’ where id = 6What will happen without two-phase submission?

Write redo log first and then binlog. Assume that after writing the redo log, the binlog has not yet been written, and MySQL restarts abnormally at this time. Because the redo log has been written, name=‘god-jiang’ when restoring the system. However, the binlog has not been written, so the binlog does not record this statement. When the binlog is used to restore data at this time, the restored name is the original value, which is different from the redo log.

Similarly, if you write binlog first and then redo log, you will also find that the data recovered by the two logs is different. This inconsistency will lead to master-slave inconsistency online.

Summary

  • The redo log can save crash-safe capabilities and ensure that MySQL restarts abnormally and the data is not lost
  • The binlog can record the corresponding SQL statements can also ensure that data will not be lost when MySQL restarts abnormally
  • The two-stage submission of the transaction can maintain the logical consistency of the data

Related free learning recommendations :mysql database(Video)

The above is the detailed content of Introduction MySQL log redo log and binlog. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:CSDN. If there is any infringement, please contact admin@php.cn delete
Explain the role of InnoDB redo logs and undo logs.Explain the role of InnoDB redo logs and undo logs.Apr 15, 2025 am 12:16 AM

InnoDB uses redologs and undologs to ensure data consistency and reliability. 1.redologs record data page modification to ensure crash recovery and transaction persistence. 2.undologs records the original data value and supports transaction rollback and MVCC.

What are the key metrics to look for in an EXPLAIN output (type, key, rows, Extra)?What are the key metrics to look for in an EXPLAIN output (type, key, rows, Extra)?Apr 15, 2025 am 12:15 AM

Key metrics for EXPLAIN commands include type, key, rows, and Extra. 1) The type reflects the access type of the query. The higher the value, the higher the efficiency, such as const is better than ALL. 2) The key displays the index used, and NULL indicates no index. 3) rows estimates the number of scanned rows, affecting query performance. 4) Extra provides additional information, such as Usingfilesort prompts that it needs to be optimized.

What is the Using temporary status in EXPLAIN and how to avoid it?What is the Using temporary status in EXPLAIN and how to avoid it?Apr 15, 2025 am 12:14 AM

Usingtemporary indicates that the need to create temporary tables in MySQL queries, which are commonly found in ORDERBY using DISTINCT, GROUPBY, or non-indexed columns. You can avoid the occurrence of indexes and rewrite queries and improve query performance. Specifically, when Usingtemporary appears in EXPLAIN output, it means that MySQL needs to create temporary tables to handle queries. This usually occurs when: 1) deduplication or grouping when using DISTINCT or GROUPBY; 2) sort when ORDERBY contains non-index columns; 3) use complex subquery or join operations. Optimization methods include: 1) ORDERBY and GROUPB

Describe the different SQL transaction isolation levels (Read Uncommitted, Read Committed, Repeatable Read, Serializable) and their implications in MySQL/InnoDB.Describe the different SQL transaction isolation levels (Read Uncommitted, Read Committed, Repeatable Read, Serializable) and their implications in MySQL/InnoDB.Apr 15, 2025 am 12:11 AM

MySQL/InnoDB supports four transaction isolation levels: ReadUncommitted, ReadCommitted, RepeatableRead and Serializable. 1.ReadUncommitted allows reading of uncommitted data, which may cause dirty reading. 2. ReadCommitted avoids dirty reading, but non-repeatable reading may occur. 3.RepeatableRead is the default level, avoiding dirty reading and non-repeatable reading, but phantom reading may occur. 4. Serializable avoids all concurrency problems but reduces concurrency. Choosing the appropriate isolation level requires balancing data consistency and performance requirements.

MySQL vs. Other Databases: Comparing the OptionsMySQL vs. Other Databases: Comparing the OptionsApr 15, 2025 am 12:08 AM

MySQL is suitable for web applications and content management systems and is popular for its open source, high performance and ease of use. 1) Compared with PostgreSQL, MySQL performs better in simple queries and high concurrent read operations. 2) Compared with Oracle, MySQL is more popular among small and medium-sized enterprises because of its open source and low cost. 3) Compared with Microsoft SQL Server, MySQL is more suitable for cross-platform applications. 4) Unlike MongoDB, MySQL is more suitable for structured data and transaction processing.

How does MySQL index cardinality affect query performance?How does MySQL index cardinality affect query performance?Apr 14, 2025 am 12:18 AM

MySQL index cardinality has a significant impact on query performance: 1. High cardinality index can more effectively narrow the data range and improve query efficiency; 2. Low cardinality index may lead to full table scanning and reduce query performance; 3. In joint index, high cardinality sequences should be placed in front to optimize query.

MySQL: Resources and Tutorials for New UsersMySQL: Resources and Tutorials for New UsersApr 14, 2025 am 12:16 AM

The MySQL learning path includes basic knowledge, core concepts, usage examples, and optimization techniques. 1) Understand basic concepts such as tables, rows, columns, and SQL queries. 2) Learn the definition, working principles and advantages of MySQL. 3) Master basic CRUD operations and advanced usage, such as indexes and stored procedures. 4) Familiar with common error debugging and performance optimization suggestions, such as rational use of indexes and optimization queries. Through these steps, you will have a full grasp of the use and optimization of MySQL.

Real-World MySQL: Examples and Use CasesReal-World MySQL: Examples and Use CasesApr 14, 2025 am 12:15 AM

MySQL's real-world applications include basic database design and complex query optimization. 1) Basic usage: used to store and manage user data, such as inserting, querying, updating and deleting user information. 2) Advanced usage: Handle complex business logic, such as order and inventory management of e-commerce platforms. 3) Performance optimization: Improve performance by rationally using indexes, partition tables and query caches.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software