一.什么是主从复制?

redis单机存在问题:
1.单机机器故障,不能快速恢复
2.单机容量内存限制
3.单机QPS问题

简单来说slave复制master数据。

主从复制的作用:
1.提供数据副本(备份)
2.扩展读的性能(读写分离)

  • 一个slave只有一个master,一个master有多个slave

  • 数据流单向:master->slave

二、如何配置复制

1.通过slaveof命令配置,指定是谁slave服务

redis-server /Users/zhangrenjie/redis-master-slave/redis_6381.conf
127.0.0.1:6382>slaveof 127.0.0.1 6379
OK

查看主从信息

127.0.0.1:6381> info replication

#Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:1418
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:8ad20b647446628d7f21585a73838af209d9e147
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1418
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:705
repl_backlog_histlen:714

进入主服务

127.0.0.1:6379> info replication

#Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6380,state=online,offset=914,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=914,lag=0
slave2:ip=127.0.0.1,port=6382,state=online,offset=914,lag=0
master_replid:8ad20b647446628d7f21585a73838af209d9e147
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:914
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:914

取消做slave从节点,原有库里通过过来的数据不会消失

127.0.0.1:6382> slaveof no one
OK

注意:slave同步master数据时,slave上自有数据会被清除

2.通过配置文件配置

  • slaveof ip port
  • slave-read-only yes 从节点只读

需要修改完善的地方:

1.daemon yes #后台运行
2.pidfile #pid进程ID存放文件
3.logfile #log存放路径
#save 100 1
#save 1000 10
4.dbfilename dump-6379.rdb #数据文件
5.dir #工作目录
6.masterauth #主节点密码
7.slave-read-only yes #设置从节点只读
8.slaveof ip port #指定属于谁的从节点