Mysql 主从复制
一 概念
当单台Mysql服务器无法满足当前流量时的优化方案,需要搭建Mysql集群技术。
二 原理
-
bin日志
Mysql中有一种日志叫做 bin 日志(二进制日志),
该日志会记录下所有修改了数据库的SQL语句(create, alter, drop , inset, update, delete等)。 -
主从复制的原理:
就是把主服务器上的bin日志复制到从服务器上执行一遍。
这样从服务器上的数据就和主服务器上的数据相同了。
三 复制过程
复制过程
- 主节点必须启动bin日志,记录所有修改了数据库数据的事件
- 从节点开启一个先线程(I/O Thread)把自己扮演成mysql 的客户端, 通过 mysql 协议,请求主节点的bin日志文件中的事件
- 主节点启动一个线程(dump Thread, 检查自己 bin 日志中事件, 跟对方给请求的位置对比, 如果不带请求位置参数, 则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点。
- 从节点接收到主节点发送过来的数据把它放置到继日志(reply log)文件中。并记录该次请求到主节点的具体哪一个二进制文件内部的哪一个位置。
- 从节点启动另外一个线程(sql Thread),把继日志中的事件读取出来,并在本地执行一遍。
四 级联复制
从节点需要建立二进制文件吗?
不一定。
如果从节点需要作为其他节点的主节点时,是需要开启二进制的文件日志的,这种情况叫做级联复制。 如果只是作为从节点,则不需要创建二进制文件。
五 复制功能
数据分布
负载均衡(读)
备份
高可用和故障切换
mysql测试
六 复制方式
主-从复制
主-主复制
半同步复制
七 复制特点
-
异步复制
主节点中一个用户请求一个写操作时, 主节点不需要把写的数据在本地操作完成同时发送给从服务器并等待从服务器反馈邪物完成,再相应用户。
主节点只需要把写入操作在本地完成,就响应用户。 但是从节点中的数据有可能会落后主节点,可以使用很多软件检查是否落后。 -
主从数据不一致