My'SQL主从复制的原理

一、什么是主从复制?

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是实时的业务数据库

二 、为什么要做主从复制?

1. 数据同步备份  :  master发生故障后,可以马上切换到slave,降低服务风险

2. 读写分离 :  在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作可以把写操作放在master,读取操作放在slave,减轻单一数据库的操作压力

3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

 

三 、mysql主从复制的原理是什么?

  • 从库生成两个线程,一个I/O线程,一个SQL线程;
  • i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
  • 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
  • SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致; 

 

为什么主服务器上已经有了Binary log,为什么还要记录Relay log?(搬过来直接记录不就可以了吗?)

因为从计算机设计合理的角度来说,我们是需要队列去操作的,由于网络的原因Binary log是不能一口气传到从服务器上来的,为不影响从服务器去执行其它的任务,new 了一个I/O Thread线程来接受Binary log中的数据存储到 Relay log当中。Relay log就类似于生产者(I/O Thread)与消费者(SQL Thread)里面的管道,缓存Binary log中传来的数据,Relay  log是存储在从服器的缓存当中的,因此它的开销是很小的。SQL Thread相当于消费者从换从中读取数据,将主服务器传来的指令做到从服务器
的数据库中。同过这种生产者消费者模式  ,不影响消费者的性能。 

四、 MySQL主从复制存在的问题及解决方法

 

mysql主从复制存在的问题:

  • 主库宕机后,数据可能丢失
  • 从库只有一个sql Thread,主库写压力大,复制很可能延时

解决方法:

从数据库的读的延迟问题了解吗?如何解决?(上面第二条的原因)

4、做主从后主服务器挂了怎么办?

参考:https://blog.csdn.net/zfl589778/article/details/51441719

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值