redis的主从同步
一.redis的主从操作流程
1. 准备三个redis配置文件
#进入redis的配置文件夹,准备好这几个文件,6379不用管,默认的,和这次操作无关 [root@qishi ~]# cd /etc/redis/ [root@qishi redis]# ll total 80 -rw-r--r--. 1 root root 57774 Apr 20 15:31 6379.conf -rw-r--r--. 1 root root 183 Apr 20 16:32 6380.conf #主数据库master -rw-r--r--. 1 root root 206 Apr 20 16:36 6381.conf #从数据库slave -rw-r--r--. 1 root root 206 Apr 20 16:36 6382.conf #从数据slave
2.写入以下配置
#注意,一下内容指定的路径一定要有,就是说要自己先创建好,否则可能报错
port 6380 daemonize yes pidfile /etc/redis/data/6380/redis.pid loglevel notice logfile "/etc/redis/data/6380/redis.log" dbfilename dump.rdb dir /etc/redis/data/6380 protected-mode no
3.目前这三个配置文件配置一样,我们只需修改端口,让他们的端口不用即可(路径也不一样)
#需要在配置所在的文件夹中操作,同理其他两个配置文件指定路径也要创建好 #可以使用这一条命令通过6380.conf生成6381和6382的配置文件 sed "s/6380/6381/g" 6380.conf > 6381.conf sed "s/6380/6382/g" 6380.conf > 6382.conf
4. 在6381和6382下添加以下配置,使之成为从数据库
slaveof 127.0.0.1 6380 #可以使用以下一行命令直接追加写入到两个从库的配置文件中 echo "slaveof 127.0.0.1 6380" >>6381.conf echo "slaveof 127.0.0.1 6380" >>6382.conf
5. 确认三个配置文件无误
6. 开启这三个redis服务,确保三个服务启动正常
[root@qishi redis]# redis-server /etc/redis/6380.conf [root@qishi redis]# redis-server /etc/redis/6381.conf [root@qishi redis]# redis-server /etc/redis/6382.conf
7. 查看redis主从数据库的状态
redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6382 info replication
8. 验证redis主从复制情况
(1)先验证三个数据库是否能正常连接
redis-cli -p 6380 redis-cli -p 6381 redis-cli -p 6382
( 2 ) 在6380上面写入数据,查看6381和6382是否能够正常同步
(3)在从数据库写入数据
9. 手动进行主从复制故障切换
(1) 杀掉6380的进程,模拟主库故障
kill -9 进程ID
(2)在6381和6382上手动指定一个主库(我现在指定6382为主库)
( 3 ) 在6382的redis上执行这一行命令
slaveof no one #去除从库身份
(4) 在6381上执行以下命令,将原来的指向6380改为指向6382
原来的配置指向:
#去除原来的从库身份并且重新指定主库,要确保要指定的主库已经执行了slaveof no one slaveof no one slaveof 127.0.0.1 6382
(5) 验证新的主从架构状态
(6) 验证新的主从架构是否可以正常写入数据,同步数据
如果可以,说明主从正常
如果想永久生效必须:去修改配置文件