主从架构如何进行数据同步

来源:互联网 发布:数据挖掘工 编辑:程序博客网 时间:2024/06/05 17:59

1.什么是主从数据同步

当master(主)节点的数据发生变化的时候,变化会实时的同步到slave(从)节点。


2.主从同步的好处

(1)水平扩展负载能力(主要通过读写分离)

(2)容错、高可用(通过主从机制的维持,主节点失效,通过共识算法选出一个新主节点作为主节点,我们还可以接入很多从节点)

(3)数据备份


3.主从同步的原理

我们以常见的mysql数据库的主从机制为例

(1)单主从模式

1、写操作(增、删、改、创建函数、存储过程等)均访问主数据库(master),操作记录写入数据库日志(记录数据库操作的二进制日志)
2、从数据库(slaver),可以有很多的从数据库,他的功能是用于读取数据,当master有操作的时候,slave会快速的接收到这些操作,从而做同步。
具体步骤:用户(从用户的角度讲,不需要知道分布式数据库的内部机制,从他们看来和操作一个sql没有区别)对数据库做了一系列的操作,其中需要主从同步
的事件会被写入一个log日志中(二进制形式),然后主数据库的二进制日志通过网络接口分发到从数据库中,从数据库通过执行日志中的序列操作,将数据写入到从
数据库汇总,从而达成主从数据的一致。

上述具体实现的部分解析:

当master上的数据发生改变的时候,该事件(insert、update、delete)变化会按照顺序写入到binlog中。(语句 数据变化 格式)

当slave连接到master的时候,master机器会为slave开启binlog dump线程。
当master 的 binlog发生变化的时候,binlog dump线程会通知slave,并将相应的binlog内容发送给slave。


(2)多主多从模式(还没研究,待定)


接下来我们以redis主从同步讲解

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级联结构。
Redis主从结构
  Redis主从复制可以根据是否是全量分为全量同步和增量同步。

1 全量同步

  Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
  1)从服务器连接主服务器,发送SYNC命令;
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
Redis全量同步过程
  完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。

2 增量同步

  Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

3 Redis主从同步策略

  主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

http://blog.csdn.net/sk199048/article/details/50725369

http://www.cnblogs.com/lukexwang/p/4711977.html

http://blog.csdn.net/houjixin/article/details/27680183


原创粉丝点击