当前位置:网站首页>Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting

Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting

2022-07-07 05:24:00 One lamp architecture

1. MySQL Implementation of master-slave synchronization

MySQL Master slave synchronization is based on Bin Log Realized , and Bin Log What is recorded is the original SQL sentence .

Bin Log There are three log formats , Sure binlog_format Configuration parameter assignment .

Parameter values meaning
Statement Record original SQL sentence , This will cause the update time to be inconsistent with the original database .
such as update_time=now()
Row Record the changes in each row of data , Ensure that the data is consistent with the original database , The disadvantage is the large amount of data .
MixedStatement and Row Mixed mode of , By default Statement Pattern , Date involved 、 When the function is related, use Row Pattern , It reduces the amount of data , It also ensures data consistency .

Common master-slave synchronization architectures include one master and multiple slaves 、 Two masters and many subordinates .

2. MySQL The role of master-slave synchronization

  1. Read / write separation , Improve database performance
  2. disaster recovery , When the primary server is unavailable , Provide services from the server , Improve availability
  3. Redundant backup , The primary server data is damaged or lost , Keep backups from the server

One master and many slaves :

Generally, the master database is responsible for all read / write requests , The slave database is only responsible for disaster recovery and redundant backup .

If you do read-write separation , The main library is responsible for writing requests , The slave library is responsible for reading requests , Can improve database performance .

Dual master multi slave architecture :

Generally, it is the main database 1 Responsible for all read and write requests , Main library 2 No external services , Only for disaster recovery .

Compared with the one master multi slave architecture , Dual master multi slave architecture can reduce downtime , Faster recovery of database availability .

3. The principle of active synchronization

  1. When the master database data changes , Write local Bin Log file

  2. Slave Library IO Thread initiation dump Main library Bin Log File request

  3. Main library IO Thread push Bin Log File to and from the library

  4. Slave Library IO Thread Bin Log Content is written locally Relay Log In file

  5. Slave Library SQL Thread reads Relay Log The contents of the document

  6. Slave Library SQL The thread executes again SQL sentence

4. Master slave synchronization delay problem

The most common problem of master-slave synchronization is the delay of master-slave synchronization , You can do this by executing show slave status Command view delay time ,Seconds_Behind_Master Indicates the number of seconds to delay .

What are the reasons for the delay of master-slave synchronization ?

  1. The slave machine has poor performance

    The master database is responsible for all read / write requests , The slave library is only used for backup , Be able to use machines with poor performance , The execution time is naturally slow .

  2. The pressure from the reservoir is greater

    After the separation of reading and writing , The main library is responsible for writing requests , The slave library is responsible for reading requests .

    Internet applications generally have more read requests , So reading from the library is more stressful , Take up more CPU resources .

  3. Network delay

    When the main library Bin Log When a file is sent to or from the library , Network delays may occur , It will also cause the data from the database to not keep up .

  4. The main database has large transactions

    When a large transaction needs to be executed on the master database 5 minute , hold Bin Log File sent to slave Library , The slave library also needs to perform at least 5 minute , So at this time, the database appears 5 Minute delay .

The solution of master-slave synchronization delay ?

  1. The slave machine has poor performance

    Replace the slave library with a machine of the same specification as the master library .

  2. The pressure from the reservoir is greater

    Get more slave computers , Share the pressure of reading request .

  3. Network delay

    Contact the O & M or cloud service provider for solutions .

  4. The main database has large transactions

    Divide large transactions into small ones for execution , Major events will not only cause slave delay , Deadlock may also occur , Reduce database concurrency performance , So try not to use big things .

5. How to improve master-slave synchronization performance

1. Start multi-threaded replication from the library

It is to use multithreading in the last two steps of master-slave synchronization , Modify the configuration slave_parallel_workers=4, Representative opens 4 Copy threads .

2. Modify the synchronization mode , Change to asynchronous

There are three replication methods for master-slave synchronization :

  1. Full synchronous replication

    When the main library completes a transaction , And after all slave libraries have executed the transaction , To return success to the client .

  2. Semi-synchronous replication

    After at least one execution from the library is completed , It returns success to the client .

  3. Asynchronous replication

    After the main database is executed , Return to success immediately , Do not care whether the execution from the library is completed .

If the data security requirements are not so high , You can change the synchronous mode to semi synchronous replication or asynchronous replication .

3. Modify slave Library Bin Log To configure

modify sync_binlog To configure :

sync_binlog=0 , Said to write binlog Do not refresh the disk now , The system decides when to refresh the disk .

sync_binlog=1, Every time binlog Both refresh disks , High safety , Poor performance .

sync_binlog=N, Write N Time binlog To refresh the disk .

The requirements for data security from the database are not so high , You can set sync_binlog=0.

modify innodb_flush_log_at_trx_commit To configure :

innodb_flush_log_at_trx_commit=0, Every second , Flush the transaction log to disk .

innodb_flush_log_at_trx_commit=1, Each transaction is flushed to disk .

innodb_flush_log_at_trx_commit=2, Each transaction does not actively refresh the disk , The system decides when to refresh the disk .

The requirements for data security from the database are not so high , You can set innodb_flush_log_at_trx_commit=2.

Summary of knowledge points :

Articles are constantly updated , You can search through wechat 「 One light architecture 」 Read more technical dry goods for the first time .

原网站

版权声明
本文为[One lamp architecture]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207062328069249.html