应用程序对服务器大量的读写,服务器很可能会宕机,导致数据丢失。为了解决这一问题就有了主从复制。
作用:
1:防止数据丢失
2:提高系统的吞吐量
主从复制:从服务器复制主服务器中的数据。
读写分离:应用程序在主服务器写,在从服务器读。
配置:
1:手动
2:哨兵模式
手动:一主二仆(一种说法,可以有多个仆),星火相传(一个主服务器可以传到另一个服务器,另一个服务器可以传到别的服务器),反客为主(操作,从节点变为主节点)
我自己在根目录创建一个app文件夹,里面有redis,又新建了一个rediscluster文件,在rediscluster下创建了3个文件夹node1,node2,node3
①:准备多台服务器(用三个不同的redis服务进程模拟三个机器,指定不同的配置文件)
创建三个文件夹(node1,node2,node3),把redis.conf拷贝到三个文件夹下
②:修改各个文件夹下redis.conf文件
修改内容:
端口号(port)
守护进程(daemonize 改为yes,默认为no)
进程文件(pidfile) /app/rediscluster/node1/redis.pid
日志文件(logfile)/app/rediscluster/node1/redis.log
dir /app/rediscluster/node1/
这里启动多个redis命令:
cd /app/rediscluster
redis-server node1/redis.conf
启动redis-cli -h -p
-h 机器名(本地:127.0.0.1)
-p 端口号
redis-cli -p 7777(7777是我设置的redis端口号)
查看reids进程
ps -ef | grep redis
目前,这3个redis没有任何联系
配置主从(2种,配从不配主,从节点只能读,主节点能读能写):node1:端口号:6666 node2:端口号:7777 node3:端口号:8888
查看配置:info replication
方法一:用命令配置
在从节点上面执行 slaveof host port
方法二:修改配置文件
在redis.conf中,找到slaveof(默认是注释的,把注释删掉)
slaveof 127.0.0.1 port(父节点的端口号)
复制原理:
- Slave启动成功连接到master;
- slave向master会发送一个sync命令;
- Master接到命令后执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
- 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
- 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
- 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
- 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;