Redis复制

1、现在有两个redis,172.16.2.16为master,10.65.200.202为salve
2、在slave端修改配置项 salveof,如下:
    slaveof 172.16.2.16 6379
3、在这种情况下,master端的修改,会同步到slave端。
4、但是slave端不能执行写操作,如下:
    127.0.0.1:6379> get name
    "andy"
    127.0.0.1:6379> set name bill
    (error) READONLY You can't write against a read only slave.
    原因是:如果slave可以写操作,就会导致主从数据不一致。因此,默认配置slave只能读操作。
5、当然,也可以配置写操作,如下:
    slave-read-only no
    但是,slave端的修改,不会同步到master端。
6、mysql是支持主主复制的,也就是两个设备互为主从。如果把两个redis设置为互为主从,行不行?
    目前的redis版本不支持互为主从。如果两个redis配置成互为主从,redis服务报错,如下:
    Master does not support PSYNC or is in error state (reply: -ERR Can't SYNC while not connected with my master)
7、也就是说,redis要实现主主复制,需要应用层管理。
    A仅仅作为master,B设置为A的salve。
    在某个条件下,B不再作为A的slave,仅仅设置为master,同时A设置为B的slave。
    注意:这里redis主主复制是指任一时刻只有一个方向的复制,并不是完全意义的主主复制,完全意义的主主复制是同时两个方向。
posted on 2017-02-11 19:37  Andy Niu  阅读(500)  评论(0编辑  收藏  举报