zoukankan      html  css  js  c++  java
  • 学习记录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句命令即可启动哨兵模式

    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所配置的规则来了。

  • 相关阅读:
    Java基础语法与变量初步学习
    Java基本数据类型转换
    Java变量常量与基本数据类型
    Java进制转换
    Java 开发环境配置
    Java运算符
    STL—vector删除重复元素
    子窗口和父窗口重绘
    怎么判断文件是否被占用
    多线程的理解
  • 原文地址:https://www.cnblogs.com/huajidafahao/p/11266480.html
Copyright © 2011-2022 走看看