什么是MySQL主从复制?
- MySQL主从复制意思是将数据从一个MySQL服务器的主节点复制到一个或多个从节点。
- 异步复制是MySQL默认的复制模式。
- 好处是不用一直访问master,对master造成压力
- 坏处是主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程,如果主库一旦宕机,就有可能出现丢失数据的情况
为什么需要主从复制?
- 主库负责写,从库负责读,减轻主库压力。而且有时候SQL语句会造成锁表的情况,导致暂时不能读的情况,使用主从,就能保证业务的正常运行
- 数据热备
- 便于架构的扩展。考虑以后io会更加频繁,以后可以做多库的存储,降低磁盘io访问频率,提高单个机器的io性能
主从复制原理
- 主库数据改变后,将其记录二进制binlog日志中
- 从库在一定时间间隔内对主库的二进制日志进行探测是否发生变化。如果发生变化,通过io thread线程对主库发起请求
- 主库会通过io dump thread线程向从库iothread线程传递二进制binlog日志
- 从库将得到的binlog日志保存至relay-log日志,通过mysql thread线程读取中继日志,执行里面的sql语句,在从节点上生成相应的数据,从而保证主从数据一致
注意点
- 主从时间同步
- 最好保证主从数据库版本一致,如果不能一致,也要保证主库的版本低于从库的版本
- 主从一定要开启binlog功能