将数据从一个mysql数据库服务器的主节点复制到多个从节点。主节点负责读,从节点负责写,这样就会降低服务器的压力,从而提高效率。
在大数据时代的到来,随着业务的不断在增加,会造成数据库的负载过重,如果使用单一的服务器,会容易造成宕机,此时保存在mysql的数据就可能会丢失,为了解决这个问题,mysql的主从复制出现了。
注意: 三个线程
主节点
为每一个slaver的I/O Thread启动一个dump线程,向其发送biolog日志。
从节点:
I/O Thread:向Master请求二进制日志事件,并保存于中继日志中
SQL Thread:从中继日志中读取日志事件,在本地完成重放
一主一从
双主复制
每个master即是master,也是另一台服务器的slaver,当任何一方做出变更,都会复制应用到另一方的数据库中。
级联复制模式下,部分数据同步不连接主节点,而是连接从节点,因为如果主节点连接太多从节点,会消耗部分性能用于replication,因此,使用3-5个从节点连接主节点,其他从节点作为二级或者三级从节点,可以缓解主节点的压力。
主节点不会主动推送数据到从节点,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。
存在问题:
如果主节点出问题了,没有将数据传给从节点,当从节点提升为主节点时,会造成数据的缺失。
当主库执行完一个事务,然后所有的从库都复制了该事务并成功执行完才返回成功信息给客户端。
存在问题:
等待从节点成功执行完之后再返回,性能受到影响
介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到 relay log 中才返回成功信息给客户端 (只能保证主库的 Binlog 至少传输到了一个从节点上),否则需要等待直到超时时间然后切换成异步模式再提交。
好处与存在问题:
1.提高数据的安全性,一定程度上保证数据能成功备份到从库
2.半同步模式不是mysql内置的,从Mysql 5.5开始集成,需要master和slaver安装插件开启半同步模式
参考资料:https://learnku.com/articles/60228 )