MySQL 主从复制

179 阅读1分钟

MySQL 主从复制

为什么要做主从复制

  • 做数据的热备

  • 如果主数据库宕机,可以快速将业务系统切换到从数据库上,可避免数据丢失。

  • 业务量越来越大,I/O访问频率过高,单机无法满足,此时做多数据库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。如果对数据库的读写都在同一个数据库服务器中操作,业务系统性能会降低。

  • 在业务系统中,有这么一个场景,有一句sql语句需要锁表,导致暂时不能使用读的服务器,那么就很影响运行中的业务,使用主从复制,让主库复制写,从库负责读。这样出现了锁表的情景,通过读从库也可以保证业务的正常运作。通过主从复制(读写分离)来减轻主数据库的负载。

原理

原理图
原理图

  • 1.主库更新事件(update、delete、insert)被写到binlog

  • 2.从库发起连接、连接到主库

  • 3.此时主库创建一个binlog dump thread,把binlog的内容发送到从库

  • 4.从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log

  • 5.还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db

  • 上面五步解释的时每一步做了什么,整个mysql主从复制是异步的,不是按照上面的步骤执行的

参考