-
redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库
-
环境准备,运行3个redis数据库,达到1主2从的配置
#主库 6379 port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dbfilename dump.rdb dir /data/6379 #从库 6380 port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 slaveof 127.0.0.1 6379 #从库 6381 port 6381 daemonize yes pidfile /data/6381/redis.pid loglevel notice logfile "/data/6381/redis.log" dbfilename dump.rdb dir /data/6381 slaveof 127.0.0.1 6379
-
在对应的data目录下建配置中对应的文件夹 存放持久化文件
mkdir /data/{6379,6380,6381}
-
开启主从复制
redis-server 6379.conf redis-server 6380.conf redis-server 6381.conf #开启三个redis库 之后可以直接通过端口调用 redis-cli info #查看数据库信息 redis-cli info replication #在从库上配置主从信息,如果不想每次写 在配置文件中就直接写入也可以,上面已经写好了 redis-cli -p 6380 slaveof 127.0.0.1 6379 redis-cli -p 6381 slaveof 127.0.0.1 6379 #这时通过检查发现 主从关系已经建立 redis-cli -p 6379 info replication redis-cli -p 6380 info replication redis-cli -p 6381 info replication
-
主从复制 本质是读写分离,即主库可以读写,从库只读
-
模拟主从复制故障,手动切换master-slave身份
#1.杀死6379进程 ,干掉主库 kill -9 6379的进程id #2.手动切换 6381为新的主库,需要先关闭它的从库身份 redis-cli -p 6381 slaveof no one #3.修改6380的新主库是 6381 redis-cli -p 6380 slaveof 127.0.0.1 6381