zoukankan      html  css  js  c++  java
  • Redis主从复制

    1.准备3台服务器,一台master ,两台 slave

      Master    192.168.146.128

      Slave      192.168.146.129

      slave         192.168.146.130

    2.每台服务器安装redis

    redis安装的详细文档地址:

    https://www.cnblogs.com/Amywangqing/p/12732742.html

    3.进入第一台Maste 192.168.146.128服务器

    cd /usr/local/redis进入redis目录

    对应的修改

    注意(需要修改redis.conf文件的bind 192.168.146.128 127.0.0.1)

    注意(需要修改redis.conf文件的bind 192.168.146.129 127.0.0.1)

    注意(需要修改redis.conf文件的bind 192.168.146.130 127.0.0.1)

    4.启动redis   三台都一样

    ./bin/redis-server ./redis.conf 
    
    [root@localhost redis]# ./bin/redis-server ./redis.conf 
    2859:C 21 Apr 2020 20:37:21.282 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    2859:C 21 Apr 2020 20:37:21.282 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=2859, just started
    2859:C 21 Apr 2020 20:37:21.282 # Configuration loaded
    [root@localhost redis]#
    

      

    5.进入bin目录

    cd bin
    
    ./redis-cli -h 192.168.146.128 -p 6379 -a 123456
    

      

    进入redid客户端Slave   192.168.146.129
    ./redis-cli -h 192.168.146.129 -p 6379 -a 123456
    
    进入redid客户端Slave   192.168.146.130
    ./redis-cli -h 192.168.146.130 -p 6379 -a 123456
    

      

    6.通过info replication查看redis主从信息

    主机92.168.146.128

    192.168.146.128:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:22df065d1113b3458a187d70dee08d0f39baaeee
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    192.168.146.128:6379>
    

      

    主机92.168.146.129

    192.168.146.129:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:818ffa04e22d35c5c15b5ea1f227c0cf6297984e
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    192.168.146.129:6379>
    

      

    主机192.168.146.130

    192.168.146.130:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:1da39532e2d39e6dcfd2b7b17883bc3ec659b527
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    192.168.146.130:6379>
    

      

    可以看出来现在它们都是master

    我们把主机192.168.146.128作为master,就不需要修改了

    这主机192.168.146.128Redis里的数据

    192.168.146.128:6379> keys *
     1) "subCat:2"
     2) "shopcart:1908017YR51G1XWH"
     3) "subCat:3"
     4) "subCat:6"
     5) "subCat:1"
     6) "subCat:8"
     7) "subCat:9"
     8) "subCat:4"
     9) "shopcart:2004209Z3KCNCD1P"
    10) "subCat:7"
    11) "subCat:10"
    12) "carousel"
    13) "subCat:5"
    14) "cats"
    192.168.146.128:6379>
    

      

    7.修改主机192.168.146.129

    进入cd /usr/local/redis

    修改redisd.conf文件

    添加

    replicaof 192.168.146.128 6379

    masterauth 123456

    添加完成,保存

    8.关闭redis

    [root@localhost bin]#  ps aux | grep redis
    root      3586  0.1  1.2 161628 12452 ?        Ssl  21:19   0:05 ./bin/redis-server 192.168.146.129:6379
    root      4208  0.0  0.0 103248   832 pts/0    S+   22:11   0:00 grep redis
    [root@localhost bin]# kill -9 3586
    [root@localhost bin]#
    

      

    9.删除我们redis的持久化文件

    [root@localhost log]# ls
    appendonly.aof  dump.rdb
    [root@localhost log]# rm appendonly.aof dump.rdb 
    rm: remove regular file `appendonly.aof'? y
    rm: remove regular file `dump.rdb'? y
    [root@localhost log]#
    

      

    10.开启redis

    ./bin/redis-server ./redis.conf

    进入redis客户

    ./redis-cli -h 192.168.146.129 -p 6379 -a 123456

    [root@localhost bin]# ./redis-cli -h 192.168.146.129 -p 6379 -a 123456
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    192.168.146.129:6379> keys *
     1) "subCat:4"
     2) "subCat:9"
     3) "subCat:8"
     4) "subCat:1"
     5) "shopcart:2004209Z3KCNCD1P"
     6) "subCat:3"
     7) "shopcart:1908017YR51G1XWH"
     8) "subCat:10"
     9) "carousel"
    10) "cats"
    11) "subCat:5"
    12) "subCat:7"
    13) "subCat:6"
    14) "subCat:2"
    192.168.146.129:6379>
    

      这里的数据又有了,这跟192.168.146.128上的redis同步了

    11.通过info replication查看

    这里它已经变为slave从机了

    它的主机master_host:192.168.146.128

    master_link_status:up 主机master启动的

    192.168.146.129:6379> info replication
    # Replication
    role:slave
    master_host:192.168.146.128
    master_port:6379
    master_link_status:up 
    master_last_io_seconds_ago:6
    master_sync_in_progress:0
    slave_repl_offset:1831
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1831
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1831
    192.168.146.129:6379>
    

      

    12.从为了slave从机就只能读操作了,不能进行写操作

    192.168.146.129:6379> set name aaa
    (error) READONLY You can't write against a read only replica.
    192.168.146.129:6379>
    

      

    这里主从复制就成功了

    修改主机192.168.146.130

    192.168.146.130同上修改就可以了

    添加

    replicaof 192.168.146.128 6379

    masterauth 123456

    添加完成,保存

    后面的步骤同上面的192.168.146.129一样

    在192.168.146.130通过info replication查看

    192.168.146.130:6379> info replication
    # Replication
    role:slave
    master_host:192.168.146.128
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:9
    master_sync_in_progress:0
    slave_repl_offset:2741
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2741
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1359
    repl_backlog_histlen:1383
    192.168.146.130:6379>
    

      

    在192.168.146.128nfo replication查看

    192.168.146.128:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.146.129,port=6379,state=online,offset=2895,lag=0
    slave1:ip=192.168.146.130,port=6379,state=online,offset=2895,lag=0
    master_replid:13e5ca34c383c3a0043d46a3dec7093a5199e4e6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2895
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:2895
    192.168.146.128:6379>
    

      

      这样主从复制就完成了

  • 相关阅读:
    Cookie和Seesion
    Forms组件
    分页器组件
    关于Django的Ajax操作
    Oracle常用数据库表操作
    redis的缓存穿透 缓存并发 缓存失效
    Struts2的拦截器
    Struts2的各种标签库
    Struts2基础知识
    Java常用数据结构和算法
  • 原文地址:https://www.cnblogs.com/Amywangqing/p/12897247.html
Copyright © 2011-2022 走看看