Docker

随笔篇-MySql的主从复制

2020-06-30  本文已影响0人  秃头猿猿

参考: https://www.jianshu.com/p/faf0127f1cb2

1.主从复制是什么

主从复制也叫AB复制,允许将主服务器的数据复制到另外一个从服务器,从而实现服务器的读写分离。

2.MySql主从复制是什么

MySql主从复制即 允许将来自一个Mysql的服务器(主服务器)数据复制到一个或者多个Mysql服务器(从服务器)上。从而实现对Mysql服务器的读写分离。

也就是说:

如果需要对MySql服务器进行写时,就可以操作主MySql服务器,操作完成后,从服务器就会同步主服务器的数据。

如果需要对MySql服务器进行读时,那么就可以操作MySql从服务器。这样在一定程度上实现了读写分离。从而减轻数据库的压力。

3.MySql主从复制原理

如图所示:

image-20200629112018984

当只有一个从数据库服务器时原理如上图所示,具体解释如下:

1.主数据库服务器发生改变时,那么就会开启一个IO线程将改变保存到二进制文件(Binary log)里面(一定要是主服务器必须开启二进制日志,否则就没法产生二进制文件)

2.从数据库服务器也会开启一个IO线程去主数据库服务器读取这个二进制文件

3.从数据库服务器将从主服务器二进制文件中读取内容写入到本地二进制文件(Realy log)里面

4,从服务器同时也会开启一个SQL线程去定时检查本地文件有没有更新,如果有更新,那么就会立马去执行更新的内容。

这样就实现了MySql主从复制原理。

当然如果时一个主服务器和多个从服务器,其原理类似,具体如下:

3

1.需要对主服务器进行修改,从而让从服务器也产生二进制文件

2.其他从服务器就从产生二进制文件的从服务器里面读取二进制文件

3.将二进制文件存入到本地的二进制文件中,同时开启一个SQL线程去检查本地的二进制文件是否有更新,如果有更新那么就执行更新的内容,同步数据。

当然我们也可以将中间的从服务器直接配置成转发二进制文件,这样架构也会好很多。具体怎么搭建还是要看具体的业务需求。

注意:

主从复制,复制是异步的,从服务器不需要建立永久连接来接收主服务器的更新。

4.二进制文件解释

mysqld将数字扩展名附加到二进制日志基本名称以生成二进制日志文件名。每次服务器创建新日志文件时,该数字都会增加,从而创建一系列有序的文件。每次启动或刷新日志时,服务器都会在系列中创建一个新文件。服务器还会在当前日志大小达到max_binlog_size参数设置的大小后自动创建新的二进制日志文件 。二进制日志文件可能会比max_binlog_size使用大型事务时更大, 因为事务是以一个部分写入文件,而不是在文件之间分割。

为了跟踪已使用的二进制日志文件, mysqld还创建了一个二进制日志索引文件,其中包含所有使用的二进制日志文件的名称。默认情况下,它具有与二进制日志文件相同的基本名称,并带有扩展名'.index'。在mysqld运行时,不应手动编辑此文件。

作者:运维开发_西瓜甜
链接:https://www.jianshu.com/p/faf0127f1cb2

5.配置

6.测试

在主服务器创建一个数据库

image-20200630095401523

从数据库服务器也会自动增加test数据库

image-20200630095440332
上一篇 下一篇

猜你喜欢

热点阅读