Redis_如何进行主从复制?
选用:一主两从或一主一从
主从搭建步骤:
主机:不用配置。仅仅只需要配置从机,从机slave配置:(这里是伪集群)
1.复制出一个从机,注意使用root用户
[root@xj0927 myapps]# cp redis/ redis3 -r
[root@xj0927 myapps]# ll
drwxr-xr-x. 3 root root 4096 Sep 11 15:42 redis
drwxr-xr-x. 3 root root 4096 Sep 11 16:03 redis3
2.修改从机的redis.conf
语法:replicaof 主机ip 主机端口号
3.修改从机的port地址为6380(自定义)
redis.conf配置文件:
4.清除从机中的持久化文件(可选_有则清除)
[root@localhost bin]# rm -rf appendonly.aof dump.rdb
5.启动从机
[root@localhost redis1]# ./bin/redis-server ./redis.conf
查看redis信息:
info replication
6.启动6380的客户端
[root@xj0927 redis3]# ./bin/redis-cli -h 192.168.77.130 -p 6380
192.168.77.130:6380>
从主机添加一条数据:
192.168.77.130:6379> set k8 haha
OK
从机得到数据:
192.168.77.130:6380> get k8
"haha"
注意:
- 主机一旦发生增删改操作,那么从机会自动将数据同步到从机中
- 从机不能执行写操作,只能读
7.宕机情况咋办?
从redis:
- 重新启动即可
主redis:
- 从数据库(从机)中执行
SLAVEOF NO ONE
命令,断开主从关系并且提升为主库继续服务[把
一个从做为主机,这个时候新主机[之前的从机]就具备写入的能力]; - 主服务器修好后,重新启动后,执行
SLAVEOF
命令,将其设置为从库[老主机设置为从机]。
缺点:手动执行,过程复杂,容易出错。
添加哨兵:
1.配置哨兵
一主两从,启动任一从机时,启动哨兵模式
哨兵主要是用来监听主服务器的,所以一般把哨兵部署在从服务器上监听。
在从机的bin目录下添加配置文件:sentinel.conf
[root@xj0927 bin]# vim sentinel.conf
sentinel monitor mastername 192.168.77.130 6379 1
在配置中输入:sentinel monitor mastername 内网IP(127.0.0.1) 6379 1
- mastername 监控主数据的名称,自定义
- 127.0.0.1:监控主数据库的IP
- 6379:端口
- 1:最低通过票数
2.启动哨兵
哨兵是一个单独的进程,启动之前确保主从服务是正常的。先启动主服务,后启动从服务
日志写入文件:
[root@xj0927 bin]# ./redis-sentinel ./sentinel.conf >sent.log &
[1] 3045
启动redis:
主机启动:
[root@xj0927 redis]# ./bin/redis-server ./redis.conf
从机启动:
[root@xj0927 redis3]# ./bin/redis-server ./redis.conf
启动后,会自动配置sentinel.conf,并生成内容:若下次再启动redis需要删除下生成的内容:
sentinel myid 1f9750f7d952cee9048fcd4c7c8abb20b1ba3961
# Generated by CONFIG REWRITE
port 26379
dir "/home/admin/myapps/redis3/bin"
protected-mode no
sentinel deny-scripts-reconfig yes
sentinel monitor mastername 192.168.77.130 6379 1
sentinel config-epoch mastername 0
sentinel leader-epoch mastername 1
sentinel known-replica mastername 192.168.77.130 6380
sentinel current-epoch 1
启动哨兵:
[root@xj0927 redis3]# ./bin/redis-server redis.conf --sentinel
注意:若再次启动哨兵,需要删除myid唯一标识(最好启动一次,就新配置一次)
3.使用哨兵
假如此时:断电了,硬盘故障,坏了等等
杀死主机pid:kill -9 2773
[root@xj0927 redis]# kill -9 2773
哨兵工作之前的从机:
192.168.77.130:6380> info replication
# Replication
role:slave
master_host:192.168.77.130
master_port:6379
哨兵工作之后:从机自动提升为主机
192.168.77.130:6380> info replication
# Replication
role:master
connected_slaves:0
同时也会自动修改redis.conf的主从机配置文件
replicaof 192.168.77.130 6380
指向了新主机。再次启动原有的主机,原有的主机会变成从机。