Mysql数据库的主从复制

一)为什么要有Mysql主从复制?

  因为单台的数据库服务器需要承载客户端的读取和写入操作的请求,那么若客户端请求过多,那么服务器就会崩溃导致宕机、那么可以选择Mysql数据库集群的方式来增加Mysql服务处理数据的效率。

 

二)主从复制原理?

1、在每个事务更新之前,master再二进制文件中记录这些改变,写入二进制文件完成后,master通知存储引擎提交事务;

2、slave开启一个I/O线程,I/O线程再master的binlog中读取事件,如过已经跟上master,他会睡眠等待master产生新的事件,I/O线程将产生的新事件写入到中继日志中。(中继日志一般存放在os的缓存,所以开销比较小)

3、slave中的sql线程在中继日志中读取事件,并重放其中事件而更新slave的数据,使其与master中的数据保持一致;

 

复制类型:

1、基于语句的复制

2、基于行的复制

3、混合类型的复制

 

主从复制方式:

基于二进制文件:二进制日志文件;

基于GTID方式:在5.6版本开启的新的方式

 

工作过程:

1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。

2、slave端的I/O 线程将变更的binlog,写入到本地的relay log中。

3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。

4、如果有记录,说明该GTID的事务已经执行,slave会忽略。

5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。

6、在解析过程中会判断是否有主键,如果有就用二级索引,如果没有就用全部扫描。

优势:

1、更简单的实现failover,不用以前那样在需要找二进制日志文件log_file和位置值log_pos。

2、比传统的复制更加安全可靠。

3、GTID是连续的没有空洞的,保证数据的一致性,零丢失。       

4、slave无需知道master的pos值和日志文件值,只需要知道master的ip、用户名、密码即可;

posted @ 2020-04-19 10:43  小白爱吃红烧肉  阅读(121)  评论(0编辑  收藏  举报