zoukankan      html  css  js  c++  java
  • 4.2 复制:

    
    4.2  复制:
    
    对于有扩展平台以适应更高负载经验的工程师和管理员来说,
    
    复制是不可或缺的。 复制可以让其他服务器拥有一个不断地更新的数据副本
    
    从而使得拥有数据副本的服务器可以用于处理客户端发送的读请求。
    
    4.2.1  对Redis的复制相关选项进行配置
    
    13725:M 14 Oct 16:50:03.879 - DB 0: 2 keys (0 volatile) in 4 slots HT.
    13725:M 14 Oct 16:50:03.879 - 1 clients connected (0 slaves), 529072 bytes in use
    13725:M 14 Oct 16:50:04.588 * Background saving started by pid 22679
    22679:C 14 Oct 16:50:04.591 * DB saved on disk
    22679:C 14 Oct 16:50:04.592 * RDB: 2 MB of memory used by copy-on-write
    13725:M 14 Oct 16:50:04.686 * Background saving terminated with success
    
    4.1.1  节中曾经介绍过,当从服务器连接主服务器的时候,主服务器会执行BGSAVE操作。
    
    因此为了正确地使用复制特性,用户需要保证主服务器已经正确地设置了
    
    dir选项和dbfilename选项 。
    
    尽管有多个不同的选项可以控制从服务器自身的行为,
    
    但开启从服务器所必须的选项只有slaveof一个
    
    
    
    如果用户在启动Redis服务器的时候,指定了一个包含slaveof host port 
    
    选项的配置文件,
    
    4.2.2  Redis 复制的启动过程 
    
    本章前面曾经说过,从服务器在连接一个主服务器的时候,主服务器会创建
    
    一个快照文件并将其发送至从服务器,但这指示主从复制执行过程的其中一步。
    
    
    
    步骤           主服务器操作                            从服务器操作
    1              (等待命令进入)                       连接(或者重连接)主服务器,发送SYNC命令
    
    2               开始执行BGSAVE,并使用缓冲区记录      根据配置选项来决定是继续使用现有的数据(如果有的话)
     
                    BGSAVE 之后执行的所有写命令           来处理客户端的命令请求,还是向发送请求的客户端返回错误                     
    
    
    3               BGSAVE 执行完毕,向从服务器发送快照文件,
             
    		        并在发送期间继续使用缓冲区记录被执行的命令        丢弃所有的旧数据,开始载入主服务器发来的快照文件
    				
    				
    4                快照文件发送完毕,开始向从服务器发送菜存储在缓冲区里面的写命令         完成对快照文件的解释操作,像往常一样开始介绍命令请求
    
    
    5                 缓冲区存储的写命令发送完毕,从现在开始,每执行一个写命令,                执行主服务器发来的所有存储缓冲区里面的写命令,
    
                     
    				  就向从服务器发送相同的写命令                                            
    
    
    从服务器在进行同步时,会清空自己的所有数据
    
    警告:Redis 不支持主主复制(master-master replication)
    
    因为Redis允许用户在服务器启动之后使用SLAVEOF命令来设置从服务器选项
    3725:M 14 Oct 23:24:02.617 - Accepted 192.168.137.2:60608
    13725:M 14 Oct 23:24:02.618 * Slave 192.168.137.2:6379 asks for synchronization
    13725:M 14 Oct 23:24:02.618 * Full resync requested by slave 192.168.137.2:6379
    13725:M 14 Oct 23:24:02.618 * Starting BGSAVE for SYNC with target: disk
    13725:M 14 Oct 23:24:02.619 * Background saving started by pid 4911
    4911:C 14 Oct 23:24:02.633 * DB saved on disk
    4911:C 14 Oct 23:24:02.634 * RDB: 2 MB of memory used by copy-on-write
    13725:M 14 Oct 23:24:02.702 * Background saving terminated with success
    13725:M 14 Oct 23:24:02.703 * Synchronization with slave 192.168.137.2:6379 succeeded
    13725:M 14 Oct 23:24:06.235 - DB 0: 3 keys (0 volatile) in 4 slots HT.
    13725:M 14 Oct 23:24:06.235 - 0 clients connected (1 slaves), 1577824 bytes in use
  • 相关阅读:
    第4周课前测试考试题
    第3周课前测试考试题
    200行自定义异步非阻塞Web框架
    Web框架之Tornado
    redis总结
    Django之ModelForm组件
    Rabbitmq队列
    Git分布式版本控制系统
    Django REST framework
    python之路1
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348581.html
Copyright © 2011-2022 走看看