MySQL之——主从复制

MySQL的主从复制实现方式:

首先,在Master主数据库的my.cnf配置文件中,去开启binlog(它是一个二进制的日志文件),用来记录MySQL的数据更新和潜在更新(effect row 0),会记录到binlog文件中。

然后,从库Slave中会有一个IO线程,它去读取Master中的binlog,读取到的内容会写入到自身的中继日志relaylog中。

最后,从库Slave中有一个SQL线程,它会去读取relaylog中继日志,并将中继日志relaylog应用到自身的数据库中。

 

binlog的格式:

1、statement:会记录每一条SQL

优点:文件较小。

缺点:有一些系统函数并不能准确复制,会造成主从不一致的情况。

2、row:不记录SQL语句的上下文信息,只保存哪些数据被修改,这是默认的方式。

优点:复制速度快。

缺点:单语句更新表的行数过多,会有大量的binlog。

3、mixed:前两种方式的结合,由系统选择执行。

 

解决数据丢失的问题(也就是主从不一致的问题):

使用半同步复制,它是介于异步复制和同步复制之间的一种方式。主库执行完,不会立刻返回结果给客户端,而是等待至少一个从库接收并写入到relaylog中之后,才将结果返回给客户端。

 

解决从库复制延迟的问题:

使用MySQL5.7及以上,使用并行复制。

不过,当请求量过大时,并行复制并不能解决复制延迟的问题。可以采用redis做缓存,先从缓存中读取,来解决复制延迟的问题。

 

如何实现读写分离:

在实现主从复制的基础上,在代码中根据select、update进行路由分类。

 

posted @ 2021-02-04 22:12  每天努力一小步  阅读(52)  评论(0)    收藏  举报