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句命令即可启动哨兵模式
redis-sentinel sentinel-26379.conf
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所配置的规则来了。