面试官:讲讲MySQL主从复制的原理和注意事项??
持之以恒,贵在坚持,每天进步一点点!
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
最近在写Mycat专题,由于不少小伙伴最近要出去面试,问我能不能简单写下MySQL的主从复制原理和注意事项,因为在之前的面试中被问到了这些问题。我:可以啊,安排上了!!
主从复制原理
(1) Master 将数据改变记录到二进制日志(binary log)中,也就是配置文件 log-bin 指定的文件, 这些记录叫做二进制日志事件(binary log events);
(2) Slave 通过 I/O 线程读取 Master 中的 binary log events 并写入到它的中继日志(relay log);
(3) Slave 重做中继日志中的事件,把中继日志中的事件信息一条一条的在本地执行一次,完 成数据在本地的存储,从而实现将改变反映到它自己的数据(数据重放)。
注意事项
(1)主从服务器操作系统版本和位数一致;
(2) Master 和 Slave 数据库的版本要一致;
(3) Master 和 Slave 数据库中的数据要一致;
(4) Master 开启二进制日志,Master 和 Slave 的 server_id 在局域网内必须唯一;
配置主从复制步骤
Master数据库
(1) 安装数据库;
(2) 修改数据库配置文件,指明 server_id,开启二进制日志(log-bin);
(3) 启动数据库,查看当前是哪个日志,position 号是多少;
(5) 备份数据库(记得加锁和解锁);
(6) 传送备份数据到 Slave 上;
(7) 启动数据库;
以上步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:
(2) 开启同步,查看状态;
Slave 上的配置
(1) 安装数据库;
(2) 修改数据库配置文件,指明 server_id(如果是搭建双向主从的话,也要开启二进制 日志 log-bin);
(3) 启动数据库,还原备份;
(4) 查看当前是哪个日志,position 号是多少(单向主从此步不需要,双向主从需要);
(6) 开启同步,查看状态。
好了,今天就到这儿吧,后续我们实战以各种方式实现MySQL主从复制,我是冰河,我们下期见!!
冰河原创PDF
回复“并发编程”领取《深入理解高并发编程(第1版)》PDF文档。
回复 “并发源码” 领取《并发编程核心知识(源码分析篇 第1版)》PDF文档。
回复 ”限流“ 领取《亿级流量下的分布式解决方案》PDF文档。
回复 “设计模式” 领取《深入浅出Java23种设计模式》PDF文档。
回复 “Java8新特性” 领取 《Java8新特性教程》PDF文档。
回复 “分布式存储” 领取《跟冰河学习分布式存储技术》 PDF文档。
回复 “Nginx” 领取《跟冰河学习Nginx技术》PDF文档。
回复 “互联网工程” 领取《跟冰河学习互联网工程技术》PDF文档。
重磅福利
另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!
写在最后
留言区
我写的还行么?
感觉讲的太浅了,异步复制、半同步复制、GTID等信息也补充下呗
后续内容会输出这些,除了异步复制、半同步复制、GTID,还有延迟同步,并行复制等等技术
写得非常好👍🏻,货真价实的技术大牛🐮
一起学习,一起进步
余下1条讨论内容