单点模式的缺陷:
1.机器故障
2.容量瓶颈
3.QPS瓶颈
主从模式:【实际生产环境中主从不可以部署在同一个机器上】
1.无论主节点还是从结点都有一个完整的数据副本,即主从之间的数据同步;
2.主节点提供读写服务,从节点只提供读服务;
3.可以实现读写分离的操作;
4.有效扩展性能;
------------------------------------------------------------------------------------------------------------------------------------------------------------------
applet@ZhongDome:~/servers$ mkdir -pv master-slave
mkdir: created directory 'master-slave'
applet@ZhongDome:~/servers$ cd master-slave/
applet@ZhongDome:~/servers/master-slave$
同时创建3给目录,作为一主两从,并且每个目录包含三个子目录conf,data,logs
applet@ZhongDome:~/servers/master-slave$ mkdir -pv {10190,10191,10192}/{conf,data,logs}
mkdir: created directory '10190'
mkdir: created directory '10190/conf'
mkdir: created directory '10190/data'
mkdir: created directory '10190/logs'
mkdir: created directory '10191'
mkdir: created directory '10191/conf'
mkdir: created directory '10191/data'
mkdir: created directory '10191/logs'
mkdir: created directory '10192'
mkdir: created directory '10192/conf'
mkdir: created directory '10192/data'
mkdir: created directory '10192/logs'
applet@ZhongDome:~/servers/master-slave$ ls
10190 10191 10192
将配置文件分布copy到三个目录中conf子目录下
applet@ZhongDome:~/servers/master-slave$ cp ~/servers/redis/conf/redis.conf 10190/conf/
applet@ZhongDome:~/servers/master-slave$ cp ~/servers/redis/conf/redis.conf 10191/conf/
applet@ZhongDome:~/servers/master-slave$ cp ~/servers/redis/conf/redis.conf 10192/conf/
applet@ZhongDome:~/servers/master-slave$ vim 10190/conf/redis.conf
applet@ZhongDome:~/servers/master-slave$ vim 10191/conf/redis.conf
applet@ZhongDome:~/servers/master-slave$ vim 10192/conf/redis.conf
applet@ZhongDome:~/servers/master-slave$ vim 10192/conf/redis.conf
修改每个配置文件
daemonize yes
pidfile /home/applet/servers/master-slave/10190/pid
port 10190
#bind 127.0.0.1
loglevel notice
logfile "/home/applet/servers/master-slave/10190/logs/redis.log"
dir /home/applet/servers/master-slave/10190/data
【编辑用户环境配置文件,加入环境设置
applet@ZhongDome:~/servers/master-slave$ vim ~/.profile
PATH=$PAHT:$HOME/bin
export REDIS_HOME=/home/applet/servers/redis
PATH=$PATH:$REDIS_HOME/bin
export PATH
[applet@ZhongDome:~/servers/master-slave$ source ~/.profile] //即时生效
applet@ZhongDome:~/servers/master-slave$ redis-server 10190/conf/redis.conf
applet@ZhongDome:~/servers/master-slave$ redis-server 10191/conf/redis.conf
applet@ZhongDome:~/servers/master-slave$ redis-server 10192/conf/redis.conf 】
启动三个redis:
截止目前为止,三个结点为相互独立,没有任何关系的redis结点;
分别连接每个结点:
目前三个结点的role:master都是主;
使用命令配置主从:
先修改一下所有r结点的配置文件,把protected-mode no关闭,否则必须设置密码才能连接;
1.在需要配置为从结点的终端上输入:
#SLAVEOF [ip地址] [端口号]
#slaveof no one //解除从节点状态(断开后不会清空数据,还是保留断开前的数据内容)
(在做主从复制的时候,子结点的数据会完全清空,然后复制主节点数据)
2.通过配置文件conf/redis.conf来实现主从:(配置完成需要重启redis)
-主节点配置文件不用修改
-从节点加入#SLAVEOF [ip地址] [端口号]
•一个master可以拥有多个slave,多个slave同时连接一个master,节点在复制时不会影响master对外提供服务,提供系统的伸缩性。
•主从复制的过程
•slave与master建立连接,发送sync同步命令
•master开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。
•后台完成保存后,就将文件发送给slave
•slave将此文件保存到硬盘上
•配置
•修改redis.conf, 增加slaveof配置,设置masterauth