学习记录02 --- redis数据库的安装,以及主从复制和哨兵模式开启

Posted huajidafahao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习记录02 --- redis数据库的安装,以及主从复制和哨兵模式开启相关的知识,希望对你有一定的参考价值。

emmmmmm,这个其实是28号老师布置下来的任务,但博客今天才开,思来想去还是把昨天的给补上吧,按住顺序来吧!

1、redis的安装

redis数据库的安装并不难,首先安装好依赖,因为redis是C语言编写,需要安装gcc来编译

yum install gcc-c++ -y(安装gcc)

执行上面的命令就安装完了gcc,接下来我们需要一个目录,用来安装redis

我是安装在/usr/local/redis里面的,所以直接执行下面的代码就可以创建一个目录

mkdir /usr/local/redis

当然,还得需要下载redis,下面贴出官网,可能需要魔法上网

https://redis.io/

我是在官网下的5.0.5版本的,不知道是不是最新的

下载来后上传到/usr/local,用下面的一系列操作即可完成安装

cd /usr/local  先进入到这个目录

tar -zvxf redis-5.0.5.tar.gz  解压出来

cd redis-5.0.5  进入到解压的目录

make  开始编译

make PREFIX=/usr/local/redis install  安装到/usr/local/redis

这样只是安装好了,还需要配置conf,把安装包里面的conf复制过去就行了

cd /root/redis-5.0.5

cp redis.conf  /usr/local/redis/bin/ (复制配置文件)

然后还需要修改conf文件中的一些配置

vi  /usr/local/redis/bin/redis.conf(修改/usr/local/redis/bin/redis.conf)

因为默认情况下,redis不是后台运行,我们需要找到daemonize,把值改成yes

还有databases后面的值,表示多少个实例,我改成了32

启动的话,用redis-server就可以,完整的执行命令是下面的

/usr/local/redis/bin/redis-server  /usr/local/redis/bin/redis.conf

但是每次开启或者关闭都要输入这么长,太麻烦了,我干脆就把redis的bin目录添加到了path

所以我们每次启动就只需要下面这样就可以了

redis-server  /usr/local/redis/bin/redis.conf

使用redis-cli就可以测试是否正常启动了

当然,可以修改下/etc/rc.local,让redis开机就启动

2、主从复制

emmm,最开始看到这个一脸懵逼,后来看了几篇文章后有了个大概,我用自己的话来表达下哈

主从复制就是建立一个和主数据库一模一样的数据库,而这个数据库就叫做从数据库,每次主数据库更新数据只是把更新的几行复制给从数据库,从数据库只做读操作,写操作都交给主数据库,这就是读写分离,使用主从复制和读写分离的好处就是可以减少服务器的负担,哪怕主数据库在写入大量数据占用资源时,也丝毫不影响前台读数据的速度,同时当主数据库挂掉的时候,从数据库也依然能够工作,不会影响正常使用。

这段话是我自己理解的,当然不够深刻,望谅解哈,解压来配置主从复制了。

把原先的redis.conf再拷贝一份,改个名字,就叫做redis6380.conf

cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis6380.conf

一般来说要多个服务器,但我电脑如果开多个虚拟机有点吃不消,就在一台虚拟机上完成也是可以的,要注意修改端口号

修改redis6380.conf,在里面加入slaveof 192.168.200.128 6379    

这个ip是我虚拟机的ip,如果是看我这个教程配置的改成自己的ip(emmmmmm,写的这么烂真的有人看么)

别忘了要把port改成6380,接下来的启动顺序就是先启动主数据库,然后启动从数据库,这样主从复制便完成了

3、哨兵模式

emmmmm,还是先了解什么是哨兵模式,然后再开始动手

哨兵模式就是用一个或者多个哨兵实例组成的,对redis的所有节点进行监控,每隔一段时间会向主节点发送命令,如果主节点没有回应,就是出现了故障,主节点出现故障后,会将从节点中选一个升为主节点,确保数据库能够正常工作。

首先创建哨兵模式的sentinel.conf文件,和端口号对应,所以名称取为sentinel-26379.conf比较容易区分

下面则是配置内容

port 26379
daemonize yes
logfile "26379.log"
dir "./"
sentinel monitor mymaster 192.168.200.128 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
sentinel auth-pass mymaster 123
bind 192.168.200.128 127.0.0.1

当然还有从数据库的,也就是配置从节点

port 26380
daemonize yes
logfile "26380.log"
dir "./"
sentinel monitor myslave 192.168.200.128 6379 2
sentinel down-after-milliseconds myslave 30000
sentinel parallel-syncs myslave 1
sentinel failover-timeout myslave 15000
sentinel auth-pass myslave 123
bind 192.168.200.128 127.0.0.1

两个配置好后,只需要执行下面2句命令即可启动哨兵模式

sentinel-26379.conf ./src/redis-sentinel sentinel-26379.conf

sentinel-26379.conf ./src/redis-sentinel sentinel-26380.conf

关于配置文件一些字段的解释

sentinel monitor <master-name> <ip> <redis-port> <quorum>
告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效

sentinel auth-pass <master-name> <password>
设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。

sentinel down-after-milliseconds <master-name> <milliseconds>
这个配置项指定了需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的。 单位是毫秒,默认为30秒

sentinel parallel-syncs <master-name> <numslaves>
这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

sentinel failover-timeout <master-name> <milliseconds>
failover-timeout 可以用在以下这些方面:     
1. 同一个sentinel对同一个master两次failover之间的间隔时间。   
2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。    
3.当想要取消一个正在进行的failover所需要的时间。    
4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了。

以上是关于学习记录02 --- redis数据库的安装,以及主从复制和哨兵模式开启的主要内容,如果未能解决你的问题,请参考以下文章

分布式缓存技术redis学习系列——redis简介以及linux上的安装

分布式缓存技术redis学习系列——redis简介以及linux上的安装

分布式缓存技术redis学习系列——redis简介以及linux上的安装

Redis安装 Redis学习记录

Redis学习与总结

mac 中安装redis 以及 安装php-redis扩展过程详细记录