zoukankan      html  css  js  c++  java
  • redis 主从备份(手动切换)

    redis 默认都是master

    redis集群中,必须使用相同版本的redis,最好精确到小版本

      一、开启redis服务,并使用redis客户端连接redis服务

    1 redis-server 
    2 redis-cli 

      二、使用SLAVEOF 将角色转换为slave,并指向redis 主服务器的IP和对应的端口(redis 中不区分大小写)

     SLAVEOF 192.168.1.4 6379 

    输入:SLAVEOF ,后面会自动显示灰色的host 和port表示对方的主机和端口

      三、INFO查看

    127.0.0.1:6379> info 
    # Replication
    role:slave
    master_host:192.168.1.4
    master_port:6379
    master_link_status:down

      1、查看当前的redis中都有哪些key

    127.0.0.1:6379> keys *
    1) "a"

    如果和master建立了连接,就会清空当前redis上的所有数据库,以master为准

      四、配置连接密码

    127.0.0.1:6379> CONFIG SET masterauth 12345678
    OK
    CONFIG SET masterauth 后面跟上的12345678就是master redis的密码

      如果版本不一样,就会提示错误,我这里使用的是redis5.0.12

     slave 模式下是不能写数据的,只能从master那边同步过来

       五、永久有效,直接写到配置中

    低版本redis 修改slaveof  <masterip> <masterport>

     高版本redis修改replicaof <masterip> <masterport>

    replicaof 192.168.1.4 6379

      2、修改master认证密码

    # masterauth <master-password>
    
    修改为:
     masterauth 123456

    注意:在redis 5.0版本中IP地址和对应的端口,密码,两边的<>符号必须去掉,否则会导致连不上对应的端口,密码无效。

       六、手动提升slave服务器为master服务器

      1、在需要提升的从服务器上执行slaveof no one

    127.0.0.1:6379> slaveof no one 

      2、info查看状态

    # Replication
    role:master
    connected_slaves:0
    master_replid:ec04796a5c4f1edf3a76cb6cb63e1fd3410fae85
    master_replid2:b77f70eeb9f8b8837e146ad0bb0991eeeedbee0e
    master_repl_offset:120

    这里就变成了master redis了这个时候之前作为从服务器的redis机器才能开始写东西

      3、修改配置文件,注释下面两行

    vim /apps/redis/etc/redis.conf 
    replicaof 192.168.1.4 6379
    masterauth 123456

    避免重启服务器后,还是做为slave角色去尝试连接master,版本不一样这里的replicaof 也可能是slaveof

      七、实现从1服务器同步主1 服务器,从2服务器同步从1服务器,

         主1 服务器IP地址:192.168.1.4

         从1 服务器IP地址:192.168.1.6

         从2 服务器IP地址:192.168.1.7

      1.1、修改从2服务器的redis配置文件,使其同步主1 服务器的数据

    vim /apps/redis/etc/redis.conf 
    replicaof 192.168.1.4 6379
    masterauth 123456

      1.2、手动杀掉进程,重启redis服务,并指定对应的配置文件

    1 kill -9 `ps -ef |grep redis|grep 6379|tr -s " "|cut -d' ' -f2`
    2 redis-server /apps/redis/etc/redis.conf 

      1.3、使用info查看信息

    127.0.0.1:6379> info 
    

      显示如下则表示成功,自动开始同步主服务器上的数据

    # Replication
    role:slave
    master_host:192.168.1.4
    master_port:6379
    master_link_status:up

      2、修改从2 服务器实现同步从1 服务器数据

    vim /apps/redis/etc/redis.conf 
    replicaof 192.168.1.6 6379
    masterauth 123456

    注意:此处从服务器必须设置密码,否则也会连接不上的

    以上就完成了,主服务器同步数据至从服务器,从服务器在同步数据至从服务器

       在有 slave 的”master”查看状态: 

    # Replication 
    role:slave  #当前服务器角色,slave表示从服务器,master表示主服务器
    master_host:192.168.1.4 #主服务器IP地址
    master_port:6379   #主服务器端口
    master_link_status:up #当前连接状态, down表示没连接成功
    master_last_io_seconds_ago:9 #最近一次与master 通信已经过去多少秒。 
    master_sync_in_progress:0 #是否正在与master 通信。 ,0表示没有,1表示正在同步 slave_repl_offset:5334 #当前同步的偏移量。 slave_priority:100 #slave 优先级,master 故障后值越小越优先同步。
    slave_read_only:1 #slave 开启只读状态,表示slave服务器不能直接写数据 connected_slaves:1 #当前有几个节点连接进来
    slave0:ip=192.168.1.6,port=6379,state=online,offset=4223,lag=1 #连接的slave的机器地址,端口,状态,偏移量

    master_replid:b77f70eeb9f8b8837e146ad0bb0991eeeedbee0e #第一个masterID(当前的master ID)
    master_replid2:0000000000000000000000000000000000000000 #第二个master ID(如果机器切换过master,之前的master ID值就会被移动到这)
     

    报错解决办法:

      1、(error) READONLY You can't write against a read only replica

    因为连接的是从节点,从节点只有读的权限,没有写的权限

    解决办法:

    进入redis.conf配置文件,修改配置文件的slave-read-only为no,
    那么从节点也就可以进行写的操作了

       2、编译失败之后可以试着清理下残留试试看

    make distclean

      3、日志错误如下

    1117:S 15 Jul 2021 10:09:59.963 * Connecting to MASTER 192.168.1.6:6379
    1117:S 15 Jul 2021 10:09:59.963 * MASTER <-> REPLICA sync started
    1117:S 15 Jul 2021 10:09:59.963 # Error condition on socket for SYNC: Connection refused

      3.1、解决办法

    排查redis主服务器监听的端口是否是0.0.0.0

    vim /apps/redis/etc/redis.conf 
    bind 0.0.0.0

       4、输入密码

    ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------- 博客均为个人笔记,无所追求,仅供参考~~~ QQ--2382990774
  • 相关阅读:
    GraphX学习笔记——Programming Guide
    GraphX学习笔记——可视化
    Gephi学习笔记
    Ubuntu16.04安装apache-airflow
    Centos7.0下MySQL的安装
    同时安装anaconda2和anaconda3
    Hive学习笔记——安装和内部表CRUD
    Python爬虫学习——布隆过滤器
    Ubuntu下安装和使用zookeeper和kafka
    Ubuntu16.04安装xgboost
  • 原文地址:https://www.cnblogs.com/alexlv/p/15010358.html
Copyright © 2011-2022 走看看