redis的主从配置实际上是配置多个实例,然后通过命令、配置、启动方式去配置是作为主实例还是从实例。主从配置的时候,需要把aof持久化关闭,rdb持久化开启。
新建/myconfig/myredis文件夹,复制一份基础配置到/myconfig/myredis文件夹。
cp /usr/local/redis/etc/redis.conf /myconfig/myredis/redis.conf
在/myconfig/myredis文件夹新建四个实例配置分别是
redis_25001.conf(主),redis_25002.conf(从),redis_25003.conf(从),redis_25004.conf(从)
25001实例配置
#include包含基础配置文件
include /myconfig/myredis/redis.conf
# 监听的IP地址和端口
bind 0.0.0.0
port 25001
#进程号
pidfile /var/run/redis_25001.pid
#配置rdb持久化文件
dbfilename dump25001.rdb
#密码
masterauth 你的主库授权密码
25002实例的配置
#include包含基础配置文件
include /myconfig/myredis/redis.conf
#监听的IP地址和端口
bind 0.0.0.0
port 25002
#进程号
pidfile /var/run/redis_25002.pid
#配置rdb持久化文件
dbfilename dump25002.rdb
#密码
masterauth 你的主库授权密码
25003实例的配置
#include包含基础配置文件
#默认基础配置一般放这里;/usr/local/redis/etc/redis.conf,可以复制一份到自己定义的目录下
include /myconfig/myredis/redis.conf
#监听的IP地址和端口
bind 0.0.0.0
port 25003
#进程号
pidfile /var/run/redis_25003.pid
#配置rdb持久化文件
dbfilename dump25003.rdb
#密码
masterauth 你的主库授权密码
25004实例配置
#include包含基础配置文件
include /myconfig/myredis/redis.conf
#监听的IP地址和端口
bind 0.0.0.0
port 25004
#进程号
pidfile /var/run/redis_25004.pid
#配置rdb持久化文件
dbfilename dump25004.rdb
#密码
masterauth 你的主库授权密码
#配置文件指定主库
replicaof 127.0.0.1 25001
分别启动四个实例
cd /usr/local/redis/bin && ./redis-server /myconfig/myredis/redis_25001.conf
cd /usr/local/redis/bin && ./redis-server /myconfig/myredis/redis_25002.conf
cd /usr/local/redis/bin && ./redis-server /myconfig/myredis/redis_25003.conf
cd /usr/local/redis/bin && ./redis-server /myconfig/myredis/redis_25004.conf
查看redis进程,看看是否都启动成功。
ps aux|grep redis
登录查看目前redis主从信息,此时应该都是master。
info replication
输出
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:f04f09d212543ff4168600afa6c2e4a4cff3abe5
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
设置主从有三种方式
一是启动的时候slaveof或者replicaof(临时)指定主库,这里用25001的机器作为25001的从库启动。
cd /usr/local/redis/bin && ./redis-server /myconfig/myredis/redis_25002.conf --slaveof 127.0.0.1 25001
二是登录到客户端,通过命令设置(临时)指定主库 客户端登录25003,设置作为25001的从库。
--slaveof 127.0.0.1 25001
三是通过实例配置文件(永久)配置指定主库,对于25004,因为在实例配置文件的时候就指定了25001作为主库,所以不需要指定,启动就作为从库。
登录再次查看目前redis主从信息,此时只有25001端口实例是master。三个从库实例
info replication
输出
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=25003,state=online,offset=2182,lag=0
slave1:ip=127.0.0.1,port=25002,state=online,offset=2182,lag=0
slave2:ip=127.0.0.1,port=25004,state=online,offset=2182,lag=0
master_failover_state:no-failover
master_replid:4847c391e22378bf7b0b1541332d18a43d4a09ec
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2182
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2182
查看数据是否能主从同步.
set domain iamzcr.com
get domain
#输出
iamzcr.com