• redis 数据库架构安装部署及操作


    redis 命令大全

    redis架构

    功能配置 10.0.0.65 10.0.0.66 10.0.0.67
    hostname 65 66 67
    hsots cat > /etc/hosts <<EOF
    10.0.0.65 65
    10.0.0.66 66
    10.0.0.67 67
    EOF
    cat > /etc/hosts <<EOF
    10.0.0.65 65
    10.0.0.66 66
    10.0.0.67 67
    EOF
    cat > /etc/hosts <<EOF
    10.0.0.65 65
    10.0.0.66 66
    10.0.0.67 67
    EOF
    主从复制 主库
    哨兵
    从库 从库
    集群高可用 master slave slave

    安装

    65

    rm -rf /root/.ssh 
    /bin/ssh-keygen -t rsa -f /root/.ssh/id_rsa  -P ""
    sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.66 -o StrictHostKeyChecking=no
    sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.67 -o StrictHostKeyChecking=no
    

    656667

    mkdir -p /data/soft
    mkdir -p /data/redis_cluster/redis_6379
    mkdir -p /opt/redis_cluster/redis_6379/{conf,pid,logs}
    cd /data/soft/
    wget http://download.redis.io/releases/redis-5.0.0.tar.gz
    tar zxf redis-5.0.0.tar.gz -C /opt/redis_cluster/
    ln -s /opt/redis_cluster/redis-5.0.0/ /opt/redis_cluster/redis
    cd /opt/redis_cluster/redis
    make && make install
    yum makecache fast
    yum install rubygems -y
    gem sources --remove https://rubygems.org/
    gem sources -a http://mirrors.aliyun.com/rubygems/
    gem update –system
    gem install redis -v 3.3.5
    ruby -v
    gem -v
    yum install python-pip gcc -y
    pip install --upgrade pip
    pip install rdbtools
    

    65

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.65 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    save 60 100 
    save 300 10 
    save 600 1
    EOF
    

    66

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.66 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    save 60 100 
    save 300 10 
    save 600 1
    EOF
    

    67

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.67 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    save 60 100 
    save 300 10 
    save 600 1
    EOF
    

    656667

    #启动redis数据库
    redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
    #进入redis数据库
    redis-cli
    #关闭redis数据库   redis-cli shutdown
    

    主从复制

    6667

    redis-cli
    SLAVEOF 10.0.0.65 6379
    

    查看主从复制状态

    主库65

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    

    从库6667

    [root@66 ~]# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:slave
    master_host:10.0.0.65
    master_port:6379
    -----------------------------
    [root@67 ~]# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:slave
    master_host:10.0.0.65
    master_port:6379
    

    哨兵

    65 (主)

    cat > /opt/redis_cluster/redis_26379/conf/redis_26379.conf<<EOF
    bind 10.0.0.65
    port 26379
    daemonize yes
    logfile /opt/redis_cluster/redis_26379/logs/redis_26379.log
    dir /data/redis_cluster/redis_26379
    sentinel monitor mymaster 10.0.0.65 6379 2
    sentinel down-after-milliseconds mymaster 3000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 18000
    EOF
    #注意!此时主从复制状态为一主两从
    #启动哨兵:
    redis-sentinel /opt/redis_cluster/redis_26379/conf/redis_26379.conf
    # 查看哨兵配置文件 
    cat /opt/redis_cluster/redis_26379/conf/redis_26379.conf
    ## 配置文件发生变化说明哨兵运行成功
    # 注意!不要自己去改动哨兵的配置文件
    

    redis集群

    修改配置文件

    65

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.65 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    cluster-enabled yes
    cluster-config-file nodes_6379.conf
    cluster-node-timeout 15000
    EOF
    

    66

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.66 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    cluster-enabled yes
    cluster-config-file nodes_6379.conf
    cluster-node-timeout 15000
    EOF
    

    67

    cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
    daemonize yes
    bind 10.0.0.67 127.0.0.1
    port 6379
    pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
    logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
    databases 16
    dbfilename redis_6379.rdb
    dir /data/redis_cluster/redis_6379
    cluster-enabled yes
    cluster-config-file nodes_6379.conf
    cluster-node-timeout 15000
    EOF
    

    65、66、67

    redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
    

    发现所有节点

    65

    redis-cli -h 10.0.0.65 -p 6379 cluster meet 10.0.0.66 6379
    redis-cli -h 10.0.0.65 -p 6379 cluster meet 10.0.0.67 6379
    redis-cli 
    #查看节点
    127.0.0.1:6379> cluster nodes 
    

    分配槽位---槽位共16383

    65

    redis-cli -h 10.0.0.65 -p 6379 cluster addslots {0..16383}
    10.0.0.65:6379> CLUSTER NODES                                                                #槽位
    26b0bac41e4fff8039152104309340b16cfd3e14 10.0.0.67:6379 master - 0 1562253484470 2 connected
    ce47edb5daa884bf5366f902a4e78068813ba0df 10.0.0.66:6379 master - 0 1562253488498 1 connected
    f7dd5b276f31507b41f6f6bf41519b1df6491a8f 10.0.0.65:6379 myself,master - 0 0      0 connected 0-16383
    

    高可用

    6667

    10.0.0.66:6379> CLUSTER REPLICATE f7dd5b276f31507b41f6f6bf41519b1df6491a8f
    10.0.0.67:6379> CLUSTER REPLICATE f7dd5b276f31507b41f6f6bf41519b1df6491a8f
    
    10.0.0.65:6379> CLUSTER NODES
    ce47edb5daa884bf5366f902a4e78068813ba0df 10.0.0.66:6379 slave f7dd5b276f31507b41f6f6bf41519b1df6491a8f 0 1562254234804 1 connected
    26b0bac41e4fff8039152104309340b16cfd3e14 10.0.0.67:6379 slave f7dd5b276f31507b41f6f6bf41519b1df6491a8f 0 1562254235814 2 connected
    f7dd5b276f31507b41f6f6bf41519b1df6491a8f 10.0.0.65:6379 master - 0 0      0 connected 0-16383
    
    

    扩展redis管理脚本

    65、66、67

    [root@65 ~]# cat redis_shell.sh 
    #!/bin/bash
    USAG(){
        echo "sh $0 {start|stop|restart|login|ps|tail} PORT"
    }
    
    if [ "$#" = 1 ]
    then
        REDIS_PORT='6379'
    elif 
        [ "$#" = 2 -a -z "$(echo "$2"|sed 's#[0-9]##g')" ]
    then
        REDIS_PORT="$2"
    else
        USAG
        exit 0
    fi
    
    REDIS_IP=$(hostname -I|awk '{print $1}')
    PATH_DIR=/opt/redis_cluster/redis_${REDIS_PORT}/
    PATH_CONF=/opt/redis_cluster/redis_${REDIS_PORT}/conf/redis_${REDIS_PORT}.c    onf
    PATH_LOG=/opt/redis_cluster/redis_${REDIS_PORT}/logs/redis_${REDIS_PORT}.lo    g
    
    CMD_START(){
        redis-server ${PATH_CONF}
    }
    
    CMD_SHUTDOWN(){
        redis-cli -c -h ${REDIS_IP} -p ${REDIS_PORT} shutdown
    }
    
    CMD_LOGIN(){
        redis-cli -c -h ${REDIS_IP} -p ${REDIS_PORT}
    }
    
    CMD_PS(){
        ps -ef|grep redis
    }
    
    CMD_TAIL(){
        tail -f ${PATH_LOG}
    }
    
    case $1 in
        start)
            CMD_START
            CMD_PS
            ;;
        stop)
            CMD_SHUTDOWN
            CMD_PS
            ;;
        restart)
            CMD_START
            CMD_SHUTDOWN
            CMD_PS
            ;;
        login)
            CMD_LOGIN
            ;;
        ps)
            CMD_PS
            ;;
        tail)
            CMD_TAIL
            ;;
        *)
            USAG
    esac
    
  • 相关阅读:
    Java 堆和栈 垃圾回收 2015/9/16
    多态 Java 2015/9/16
    学校项目过程中知识点 Java 2015/9/15 晚
    Python print输出不换行
    Windows 加载EXT分区
    RouterOS 安全模式
    RouterOS Openswan l2tp ipsec
    RouterOS 自动邮件备份脚本
    python chnroutes ROS版
    Kinect 2.0&Speech 11 中文语音控制
  • 原文地址:https://www.cnblogs.com/jiangyatao/p/11365652.html
Copyright © 2020-2023  润新知