目录
概念
MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点
建立一个和主数据库(参照物)完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。
好处
1.可以对数据进行热备份,作为后辈数据库,祝数据库服务器故障后,可以切换到从数据库继续工作,避免数据库宕机的损失
2.随着业务量增大,IO频率过高,单机无法满足,促使多库存储,降低磁盘IO的访问频率,提高IO性能
3.读写分离,在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
流程
MySQL主从复制建立在三个线程之上,分别为
主节点 binary log dump 线程
负责将主数据库更新后的binlog日志内容发送到从数据库,在读取操作的时候,线程会对binlog上锁,当读取完成后,锁会被释放
从节点IO线程
接收主节点 binary log dump 线程发送的binlog日志内容,将其写入到relay log(中继日志)中
从节点SQL线程
负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性
注意
主节点使用binlog问价+position偏移量来定位主从同步的位置,从节点会保存其已接收到的偏移量,下次会从偏移量的位置进行同步,相当于每次都是增量同步,不是全量同步
主从同步模式
异步复制
MySQL的默认方式,主库把日志发送给从库后不管从库是否已经接收并处理,这样的效率比较高,但是一旦主库宕机,从库处理失败,这时候从库转换为主库,就会产生日志丢失,导致数据丢失
全同步复制
主库写入binlog后强行同步到从库,所有从库都执行完后才会返回给客户端,这种方式稳定性高,但是性能会收到严重影响
半同步复制
和全同步不同的是,从库写入日志成功后返回ACK确认给主库,主库收到至少一个从库的确认就会认为写操作完成
参考文章
MySQL主从、主主、半同步节点架构的的原理及实验总结 - 记忆流年 - 博客园
膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili