MySQL主从同步(一)——原理详解

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL主从的基本原理。

一、MySQL主从同步简介

MySQL主从同步,即MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主从同步功能,经过配置,可以实现基于库、表结构的多种方案的主从同步。
MySQL主从同步的作用主要有以下几点:
1、故障切换。
2、提供一定程度上的备份服务。
3、实现MySQL数据库的读写分离。

二、MySQL主从同步过程

依据MySQL主从同步的身份,可以将MySQL服务器分为主库和从库两种身份。MySQL从库同步主库的数据,MySQL主库将数据同步给从库。MySQL过程如下所示:
MySQL主从同步(一)——原理详解_第1张图片
从上图可以看出,MySQL主从同步实现主要有以下三个过程:
1、当有数据更改语句执行时,MySQL主库要在更新数据的同时,写二进制日志,将数据修改的内容记录进入日志中。
2、MySQL从库上运行这一些I/O进程,这个进程会监视MySQL主库上的二进制日志,当发现修改时,会立即同步到自身的中继日志。
3、MySQL从库上还会运行一个SQL进程,该进程用于监视自身的中继日志,当发现自身的中继日志发生改变时,立即将该中继日志改变对应的数据更改操作写入自身的数据库。

三、MySQL主从同步常见方案

(一)M-S

M-S即采用一个MySQL主库,多个MySQL从库的方式,原理如下所示:
MySQL主从同步(一)——原理详解_第2张图片
M-S的架构,最大的问题在于MySQL主库面临单点瓶颈和单点故障问题,I/O压力过大。

(二)M-S-S

为了环节M-S架构中MySQL主库压力过大的问题,我们还可以采用M-S-S架构,其中一个Slave Relay负责从MySQL主库同步数据,但是其本身并不存在数据,该设备作用仅仅是在日志层面。其他的MySQL从库不是从MySQL主库上同步数据,而是从中继Slave上同步数据,这样一来,就可以缓解Master的I/O压力了,M-S-S架构如下所示:
MySQL主从同步(一)——原理详解_第3张图片

(三)M-M

M-M即两台数据库互为主备,互相同步,每个数据库的更新都会同步到另一个数据库中,有时,我们还可以采用多台数据库,组成环装更新架构。M-M架构如下所示:
MySQL主从同步(一)——原理详解_第4张图片

四、MySQL主从同步方式

MySQL主从同步有三种方式,这些方式的差异主要存在于写入日志的内容不同,也会导致MySQL主从同步性能上的区别。
1、基于SQL语句的复制。
基于SQL语句的复制模式的Binlog格式为STATEMENT,在这种模式下,每一条修改数据的SQL语句都会记录到Binlog中,这样做的优点是并不需要记录每一条SQL语句和每一行的变化,减少了二进制日志日志量,节约了I/O。但是会导致某些情况下主、从库数据不一致的场景。
2、基于行的复制。
不记录每条SQL语句,仅记录哪条记录数据被修改了,以及修改后的结果。这样做的优点是不容易出现主、从库数据不一致的场景,但是缺点在于会产生大量日志。
3、混合模式复制。
在混合模式下,边的复制采用基于SQL语句的复制方式,只有当该方式无法复制(比如触发器、存储过程等等)时,才会使用基于行的方式。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(MySQL,mysql,数据库,服务器,运维DBA,MySQL主从同步)