Redis 实战 —— Redis 主从复制

1. 搭建 redis 环境

根据 上一节的内容搭建 redis 环境

2. 配置 从节点

修改 redis.conf文件,并添加以下内容:

slaveof hadoop102 6379
masterauth 123456

3. 主从操作命令

  1. 查看主从信息info replication

    hadoop102 节点:

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.248.103,port=6379,state=online,offset=70,lag=0
    slave1:ip=192.168.248.104,port=6379,state=online,offset=70,lag=0
    master_replid:7764e11aba8404b9fbf1bcc84017ee8fe1231394
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:70
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:20971520
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:70
    

    hadoop103 节点:

    127.0.0.1:6379> info replication
    # Replication
    role:slave
    master_host:hadoop102
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:8
    master_sync_in_progress:0
    slave_repl_offset:350
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:7764e11aba8404b9fbf1bcc84017ee8fe1231394
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:350
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:20971520
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:350
    
  2. 切换主节点

    hadoop103节点:

    127.0.0.1:6379> slaveof hadoop104 6379
    
  3. 把自己切换成主节点

    127.0.0.1:6379> slaveof no one
    

4. 哨兵搭建

hadoop102

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
sentinel monitor mymaster 192.168.248.102 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
sentinel announce-ip "192.168.248.102"
dir "/opt/module/redis"
logfile "/opt/module/redis/logs/sentinel.log"
sentinel auth-pass mymaster "123456"

hadoop103

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
sentinel monitor mymaster 192.168.248.102 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
sentinel announce-ip "192.168.248.103"
dir "/opt/module/redis"
logfile "/opt/module/redis/logs/sentinel.log"
sentinel auth-pass mymaster "123456"

hadoop104

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
sentinel monitor mymaster 192.168.248.102 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
sentinel announce-ip "192.168.248.104"
dir "/opt/module/redis"
logfile "/opt/module/redis/logs/sentinel.log"
sentinel auth-pass mymaster "123456"

5. 编写启动脚本

  1. redis 启动脚本

    #! /bin/bash
    case $1 in
    "start"){
            /opt/module/redis/bin/redis-server /opt/module/redis/conf/redis.conf
    };;
    "stop"){
            pid=$(ps -ef | grep redis-server | grep -v "grep" | awk '{print $2}')
            echo "redis进程ID="$pid
            kill $pid
    };;
    esac
    
  2. redis 集群启动脚本

    
    #! /bin/bash
    
    case $1 in
    "start"){
            for i in hadoop102 hadoop103 hadoop104
            do
                    ssh $i "/home/dwjf321/bin/redis.sh start"
            done
    };;
    "stop"){
            for i in hadoop102 hadoop103 hadoop104
            do
                    ssh $i "/home/dwjf321/bin/redis.sh stop"
            done
    };;
    esac
    
  3. 哨兵启动脚本

    #! /bin/bash
    case $1 in
    "start"){
            /opt/module/redis/bin/redis-sentinel /opt/module/redis/conf/sentinel.conf
    };;
    "stop"){
            pid=$(ps -ef | grep redis-sentinel | grep -v "grep" | awk '{print $2}')
            echo "redis进程ID="$pid
            kill $pid
    };;
    esac
    
  4. 哨兵集群启动脚本

    #! /bin/bash
    
    case $1 in
    "start"){
            for i in hadoop102 hadoop103 hadoop104
            do
                    ssh $i "/home/dwjf321/bin/sentinel.sh start"
            done
    };;
    "stop"){
            for i in hadoop102 hadoop103 hadoop104
            do
                    ssh $i "/home/dwjf321/bin/sentinel.sh stop"
            done
    };;
    esac
    

版权声明:本文为dwjf321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。