当前位置:网站首页>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 23:25:00 【u012804784】
High quality resource sharing
| Learning route guidance ( Click unlock ) | Knowledge orientation | Crowd positioning |
|---|---|---|
| 🧡 Python Actual wechat ordering applet 🧡 | Progressive class | This course is python flask+ Perfect combination of wechat applet , From the deployment of Tencent to the launch of the project , Create a full stack ordering system . |
| Python Quantitative trading practice | beginner | Take you hand in hand to create an easy to expand 、 More secure 、 More efficient quantitative trading system |
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 . |
| Mixed | Statement 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
- Read / write separation , Improve database performance
- disaster recovery , When the primary server is unavailable , Provide services from the server , Improve availability
- 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

- When the master database data changes , Write local Bin Log file
- Slave Library IO Thread initiation dump Main library Bin Log File request
- Main library IO Thread push Bin Log File to and from the library
- Slave Library IO Thread Bin Log Content is written locally Relay Log In file
- Slave Library SQL Thread reads Relay Log The contents of the document
- 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 ?
- 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 ?
- 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 :
- 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 .
边栏推荐
- MySQL Index Optimization Practice I
- LDO voltage stabilizing chip - internal block diagram and selection parameters
- [compilation principle] lexical analysis design and Implementation
- Archlinux install MySQL
- Wechat forum exchange applet system graduation design (3) background function
- Tree background data storage (using webmethod) [easy to understand]
- The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 F.EasyFix 主席树
- Cloud native is devouring everything. How should developers deal with it?
- 云原生数据仓库AnalyticDB MySQL版用户手册
- STL标准模板库(Standard Template Library)一周学习总结
猜你喜欢

在软件工程领域,搞科研的这十年!

UE4_UE5蓝图command节点的使用(开启关闭屏幕响应-log-发布全屏显示)

Matlab SEIR infectious disease model prediction

js 获取对象的key和value

【微服务|SCG】gateway整合sentinel

UE4_UE5全景相机

Explain

Wechat forum exchange applet system graduation design completion (1) development outline

生鲜行业数字化采购管理系统:助力生鲜企业解决采购难题,全程线上化采购执行

JS get the key and value of the object
随机推荐
建筑建材行业SRM供应商云协同管理平台解决方案,实现业务应用可扩展可配置
成年人只有一份主业是要付出代价的,被人事劝退后,我哭了一整晚
Vs extension tool notes
深入理解Mysql锁与事务隔离级别
PHP uses Alibaba cloud storage
Bea-3xxxxx error code
LDO穩壓芯片-內部框圖及選型參數
2022 届的应届生都找到工作了吗?做自媒体可以吗?
USB(十四)2022-04-12
HDU 4747 Mex「建议收藏」
Network security - install CentOS
USB (十七)2022-04-15
B_QuRT_User_Guide(40)
Binary tree
Experience sharing of system architecture designers in preparing for the exam: the direction of paper writing
13、 System optimization
CAIP2021 初赛VP
Wechat forum exchange applet system graduation design completion (8) graduation design thesis template
MySQL Index Optimization Practice II
CXF call reports an error. Could not find conduct initiator for address: