一、配置redis主从复制
搭建主从复制之前的准备工作
1.解压上传的redis压缩包到安装目录。
2.安装gcc环境。
由于redis是由C语言编写的,它的运行需要C环境,因此我们需要先安装gcc。安装命令如下:
yum install gcc-c++
3.进入到 /usr/local/redis-6.2.6/(我本地的redis安装目录) 目录下,进行编译与安装。
3.1.对解压后的文件进行编译
3.2.进入redis安装目录下的src文件夹,安装redis
4.修改redis安装目录中的配置文件redis.conf
4.1.bind 127.0.0.1注释掉,里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
4.2.protected-mode 改为no,默认是设置成yes的, 防止了远程访问
4.3.将daemonize属性改为yes,表示后台启动。
5.测试redis启动和客户端连接(安装redis后,redis-server和redis-cli已经存在于/usr/local/bin中,所以在任何地方都可以运行)
5.1 启动redis5.2 redis客户端连接redis
说明redis已成功安装,并且使用OK。
停掉上面的redis服务,下面开始做主从复制。
1. 创建/myredis文件夹
2. 复制redis安装目录下的redis.conf配置文件到文件夹中
3. 配置一主两从,创建三个配置文件
redis6379.conf(主)内容
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
redis6380.conf(从)内容
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
redis6381.conf(从)内容
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
把三个服务启动起来,因为redis-server在/usr/local/bin中,所以直接启动
4. 配置主从服务
4.1客户端连接redis服务
打开三个新的窗口,用客户端连接这三个服务,命令分别如下:
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
在6380和6381的窗口输入以下命令:
配从(库)不配主(库)
slaveof <ip><port>
成为某个实例的从服务器
4.2 info replication打印主从复制的相关信息
5. 验证主从服务器的读写
主服务器既可写也可读
从服务器只能读,不能写
以上是单纯的主从复制
二、哨兵配置(在第一步主从的基础上继续进行配置)
6. 配置哨兵sentinel
在/myredis目录下新建sentinel.conf文件,名字绝不能错。
6.1配置哨兵,填写内容
sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称,1为至少有多少个哨兵同间迁移的数量。
6.2启动哨兵
redis-sentinel在/usr/local/bin中,所以可以直接启动
redis-sentinel /myredis/sentinel.conf
6.3验证哨兵功能
停掉6379主服务器,6380从服务会升级为主服务器
启动6379服务后,6379是从服务器
7. 从服务器升级为主机服务器的规则
(1) 选择优先级靠前的
redis.conf文件中有一个replica-priority,值越小优先级越高.
(2) (如果优先级相同)选择偏移量最大的(偏移量是指获得原主机数据最全的)
谁和主机同步数据值最高,谁优先成为主机。
(3) (如果优先级和偏移量相同)选择runid最小的从服务器
根据runid随机选择。
每个redis实例启动后都会随机生成一个40位的runid.