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主从复制是异步的,不是按照上面的步骤执行的
参考