redis学习笔记-安装redis/主从复制/哨兵模式

详细转载:https://www.jianshu.com/p/8af6177f4c23?utm_source=desktop&utm_medium=timeline

redis部署

①一台新的centos云服务器安装redis前提:

1、需要安装wget: yum -y install wget

2、安装rz sz上传下载文件: yum -y install lrzsz

3、解压命令tar:yum -y install tar

4、gcc:yum -y install gcc

②下载与安装

下载: wget http://download.redis.io/releases/redis-5.0.8.tar.gz

解压:tar -xvf redis-5.0.8.tar.gz

建立软连接:ln -s redis-5.0.8 redis

编译:进入 redis ,执行编译。命令:cd redis, 然后直接输入: make&&make install

③启动

/root/redis/src/redis-server /root/redis/redis.conf

 

 

 

修改守护进程,则可以后台运行redis:vi /root/redis/redis.conf

daemonize yes

测试

 

 

启动

  1. 启动方式1:redis-server , 默认端口为 6379

  2. 启动方式2:redis-server --port 6380,指定端口启动

  3. 启动方式3:通过配置文件启动,也是我们推荐的启动方式,方便管理

    • 命令 redis-server redis-xxxx.conf

    • 在安装的redis目录中新建 data 文件。mkdir data 方便我们存储数据

    • 在安装的redis目录中新建 config 文件。mkdir config

    • 复制 redis 目录中 redis.conf 文件到 config/ 目录中。cp redis.conf ./config

    • 进入 config 目录。cd config

 

主从复制:

过程:

1. 副本库通过slaveof 10.0.0.51 6379命令,连接主库,并发送SYNC给主库 
2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3. 副本库接收后会应用RDB快照
4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
5. 到此,我们主复制集就正常工作了
6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.
8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的

主从模式搭建

  本例采用单例的1主2从的搭建方式。

  

服务类型角色IP地址端口
Redis master 127.0.0.1 6379
Redis slave 127.0.0.1 6380
Redis slave 127.0.0.1 6381

  1、首先准备一个redis实例

  2、准备一份主配置文件,端口是6379

复制代码
 1 # 包含文件(redis-base.conf,文件从redis安装目录中拷贝的)
 2 include /data/soft/redis-sentinel/redis-base.conf
 3 
 4 # 将redis-base.conf文件中,bind注释,需要在外网访问,将protected-model改为no
 5 protected-mode no
6 7 # 端口 8 port 6379 9 10 # 后台运行 11 daemonize yes 12 13 # pid文件 14 pidfile redis_6379.pid 15 16 # 日志文件 17 logfile /usr/local/redis/log/6381/redis_6381.log
18 
19 # 主认证密码
20 masterauth 123456
21 
22 # 认证密码
23 requirepass 123456
24 
25 # 最大内存10M,一般为机器内存的3/4
26 maxmemory 10mb
27 
28 # 内存达到最大时策略,可选择其他策略
29 maxmemory-policy volatile-lru
30 
31 # 目录
32 dir /usr/local/redis/data/6379
33 
34 # 快照文件
35 dbfilename dump_6379.rdb     
复制代码

  3、准备一份从配置文件,端口是6380,6381,在主配置文件的基础上,修改相应配置,并加上以下2行

1 # 从节点要跟随的主节点
2 slaveof 192.168.0.17 6380
3 
4 # 主节点认证密码,如果设置了密码,就要设置
5 masterauth 123456

 

   4、目录结构如图:

    

  5、先启动主节点,然后启动从节点

    主节点启动命令:/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6379.conf

    从节点启动命令:/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6380.conf

 

  6、redis客户端链接主节点,查看信息

    命令:redis-5.0.5/src/redis-cli -c -h 192.168.0.3 -p 17007 -a 123456

    主节点信息:

 

 登录从节点:

./bin/redis-cli -c -h 192.168.0.17 -p 6380

查看从节点信息

   7、验证主从复制是否成功:

    这里我们假设Master-Slave已经建立。
    #启动master服务器。
    [root@Stephen-PC redis]# redis-cli -p 6379
    redis 127.0.0.1:6379>
    #情况Master当前数据库中的所有Keys。
    redis 127.0.0.1:6379> flushdb
    OK
    #在Master中创建新的Keys作为测试数据。
    redis 127.0.0.1:6379> set mykey hello
    OK
    redis 127.0.0.1:6379> set mykey2 world
    OK
    #查看Master中存在哪些Keys。
    redis 127.0.0.1:6379> keys *
    1) "mykey"
    2) "mykey2"
    
    #启动slave服务器。
    [root@Stephen-PC redis]# redis-cli -p 6380
    #查看Slave中的Keys是否和Master中一致,从结果看,他们是相等的。
    redis 127.0.0.1:6380> keys *
    1) "mykey"
    2) "mykey2"
    
    #在Master中删除其中一个测试Key,并查看删除后的结果。
    redis 127.0.0.1:6379> del mykey2
    (integer) 1
    redis 127.0.0.1:6379> keys *
    1) "mykey"
    
    #在Slave中查看是否mykey2也已经在Slave中被删除。
    redis 127.0.0.1:6380> keys *
    1) "mykey"

 

硝兵常用命令:

 

 

故障转移:

 

 

 

 

 

 

 

 

 

如果发现启动其中某个实例后,ps没有进程,那就是启动失败,需要到对应的日志看:

 

 问题1:dir 路径写错了,

 

 少了个/

 

redis运行路径-/usr/local/redis/bin

 问题2:启动从节点6382时,报错:Increased maximum number of open files to 10032 (it was originally set to 1024).

 

针对如上错误,作如下处理:

1)查看打开文件的上限和redis服务进程,修改上限:

输入如下命令,查看其上限:

ulimit -a

 其中"open files"数量为4864,设置其上限:

ulimit -n 10032

 问题3:运行6382时报错:Creating Server TCP listening socket *:6381: bind: Address already in use

解决:可能配置文件配错了,配成6381端口,或者执行启动命令时,写错配置文件名称了。

 

dump.rdb是由Redis服务器自动生成的
默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。
至于多久做一次SNAPSHOT,SNAPSHOT文件的路径和文件名,你可以在redis的conf文件里指定。

posted @ 2021-02-24 22:44  fangxs666  阅读(139)  评论(0编辑  收藏  举报