Redis主从复制原理分析
1、什么是主从复制
将服务器分为主服务器,主的服务器可以做读写操作,从服务器只能做度的操作。
2、主从复制应用场景
集群(多台服务器)、读写分离、日志备份、高可用
3、什么是读写分离
读和写分库链接,读一个库,写一个库。相互不影响。增加整体吞吐量。
Redis环境安装配置
下载Redis安装包wget http://download.redis.io/releases/redis-3.2.9.tar.gz
解压Redis安装包
tar -zxvf redis-3.2.9.tar.gz
安装
cd redis-3.2.9
Make
Cd src
make install PREFIX=/usr/local/redis
移动配置文件到安装目录下
cd …/
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc
配置redis为后台启动
vi /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes vi
/usr/local/redis/etc/redis.conf // requirepass 123
开启redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
连接Redis客户端
./redis-cli -h 127.0.0.1 -p 6379 -a “123456”
PING 结果表示成功
关闭防火墙
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
停止Redis服务
./redis-cli -h 127.0.0.1 -p 6379 -a “123456” shutdown
修改redis.conf
注释掉
#bind 127.0.0.1 开启外网访问
Redis配置中从复制
配置非常简单,一定先把防火墙端口号打开,我们在从服务器配置
修改slave从redis中的 redis.conf文件,这样就配置成功了。要想配置一主多从,就在多个从服务器配置这个就行。
slaveof (主服务器的IP地址) 6379 #Redis的端口号 masterauth 123456—
主redis服务器配置了密码,则需要配置
Redis哨兵机制
Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:
- 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
- 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
实现配置:
- 拷贝到etc目录
cp sentinel.conf /usr/local/redis/etc - 修改sentinel.conf配置文件
sentinel monitor mymast 192.168.110.133 6379 1 #主节点 名称 IP 端口号 选举次数
sentinel auth-pass mymaster 123456 - 修改心跳检测 5000毫秒
sentinel down-after-milliseconds mymaster 5000 - sentinel parallel-syncs mymaster 2 — 做多多少合格节点
- 启动哨兵模式
./redis-server /usr/local/redis/etc/sentinel.conf --sentinel & - 停止哨兵模式