配置从库,不配置主库
命令
info replication : 查看角色信息
SLAVEOF ip port : 作为从库的配置
1.修改其他redis.conf的信息,包括端口号,log文件名,dump.rdb名称,即生成的文件不要具有相同名称
2.window下不能开启daemonize,因此也没有pid文件
3.开启redis服务
4.使用redis-cli -p port 链接redis服务,刚开始时,两个redis都是master,可以使用info replication 查看角色信息
5.选择端口为6379的redis 为master,使用SLAVEOF ip port(主数据库ip和端口) 让6380端口选择6379,并作为6379的从数据库
6.现在,主从复制就搭建成功了,在主数据库(master)写入数据,数据会复制到从数据库(slave).并且slave只能读数据,不能写数据,这也实现了读写分离。
7.现在使用shutdown挂掉master,主从关系不会改变,从数据库会一直等待主数据库重新连接,master_link_status为down,当主数据库重新连接,master_link_status为up,主从关系还在
8.但是,当master挂掉以后,我们不可能一直等到master被修复,我们需要从剩下的从数据库中选择新的master
方法1:使用SLAVEOF no one,清除一个slave之前的角色状态,将slave角色改为master,剩余数据库再使用SLAVEOF ip port 选择追随的master,(也可以直接在配置文件中进行配置)这种方法需要人实时监控,手动修改,这样当然是不科学的。
方法2:哨兵模式(sentinel),新建sentinel.conf文件,使用以下语句进行监控,可以同时监控多个master
sentinel monitor 被监控的数据库的名称(随便起) ip port 1
例子:
sentinel monitor mymaster 127.0.0.1 6379 1
使用以下命令启动监控
启动后,sentinel.conf文件会发生改变:
sentinel myid 7d99cb709255eefab961f6b345b860ea333da9ba
# Generated by CONFIG REWRITE
port 26379
dir "F:\\redis"
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 127.0.0.1 6380
sentinel current-epoch 0
启动后,当master挂掉后,会从剩余的从数据库推选出新的master,如果之前的master重新连接上来,将作为新master的slave
以上,redis的主从复制就可以说是成功实现了。