Skip to content

Latest commit

 

History

History
77 lines (60 loc) · 2.79 KB

8.主从复制.md

File metadata and controls

77 lines (60 loc) · 2.79 KB

主从复制原理

Slave 启动成功连接到 master 后会发送一个 sync 同步命令,Master 接到命令后,会启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕后,master 将传送整个数据文件到 salve,并完成一次完整的同步。

主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

IP地址 角色
192.168.81.100 redis-master
192.168.81.101 redis-slave1
192.168.81.102 redis-slave2
  1. 配从不配主

    192.168.81.101/192.168.81.102

    bind 0.0.0.0            #表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
    daemonize yes             #允许redis后台运行
    logfile "/usr/local/bin/redis/redis.log"    #设置redis日志存放路径
    requirepass "123456"        #设置redis密码
    protected-mode no      #设置为no,允许外部网络访问
    port 6379             #修改redis监听端口(可以自定义)
    pidfile "/usr/local/bin/redis/redis.pid"  #pid存放目录
    requirepass 123456     #设置redis密码
    masterauth 123456    #主从同步master的密码
    
    replicaof 192.168.81.100 6379
    
  2. 主机

    bind 0.0.0.0            #表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
    daemonize yes             #允许redis后台运行
    logfile "/usr/local/bin/redis/redis.log"    #设置redis日志存放路径
    requirepass "123456"        #设置redis密码
    protected-mode no      #设置为no,允许外部网络访问
    port 6379             #修改redis监听端口(可以自定义)
    pidfile "/usr/local/bin/redis/redis.pid"  #pid存放目录
    requirepass 123456     #设置redis密码
    masterauth 123456    #主从同步master的密码
    
  3. 启动查看状态

    # 显示有两个从机
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.81.101,port=6379,state=online,offset=1470,lag=1
    slave1:ip=192.168.81.102,port=6379,state=online,offset=1470,lag=1
    master_failover_state:no-failover
    master_replid:e423bf4da80cd655727c45f1c06d099910228e04
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1470
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1470
    
  4. 主机插入数据之后从机同样可以查看

    set k1 1 k2 2 k3 3 k4 4 
    

    从节点默认是只读的,如果支持写 需要设置如下值 no,然后重启redis服务 才能有效。

    replica-read-only no