广告
返回顶部
首页 > 资讯 > 数据库 >Redis-3.2主从复制与集群搭建
  • 529
分享到

Redis-3.2主从复制与集群搭建

2024-04-02 19:04:59 529人浏览 安东尼
摘要

一、Redis 主从搭建1.下载并解压yum install -y GCc gcc-c++ pcre zlib pcre-devel&n

一、Redis 主从搭建

1.下载并解压

yum install -y GCc gcc-c++ pcre zlib pcre-devel tcl 
wget  Http://download.Redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
cd redis-3.2.4
make 
cd src && make test && make install
mkdir /etc/redis
cp ../redis.conf /etc/redis/redis.conf

2.系统参数调优

vim /etc/sysctl.conf
net.core.somaxconn = 20480  #最大队列长度,应付突发的大并发连接请求,默认为128
net.ipv4.tcp_max_syn_backlog = 20480  #半连接队列长度,此值受限于内存大小,默认为1024
vm.overcommit_memory = 1
0 表示检查是否有足够的内存可用,如果是,允许分配;如果内存不够,拒绝该请求,并返回一个错误给应用程序。
1 允许分配超出物理内存加上交换内存的请求
2 内核总是返回true
sysctl -p  #加载生效参数

3.配置文件说明

3.1 后台运行

daemonize yes

3.2 bind地址监听

默认bind的填写的127.0.0.1这样配置是只允许本地访问
bind 0.0.0.0

3.3 日志配置

logfile "/var/log/redis.log"

3.4 服务启动脚本

vim /etc/init.d/redis

# chkconfig: 2345 90 10
# description: service of redis for start and stop add by tomener
 
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
 
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/redis.conf"
AUTH="Passwd"
BIND_IP='0.0.0.0'
case "$1" in
        start)
                if [ -f $PIDFILE ]
                then
                       echo "$PIDFILE exists, process is already running or crashed."
                else
                       echo "Starting Redis server..."
                       $EXEC $CONF
                fi
                if [ "$?"="0" ]
                then
                       echo "Redis is running..."
                fi
                ;;
        stop)
                if [ ! -f $PIDFILE ]
                then
                       echo "$PIDFILE exists, process is not running."
                else
                       PID=$(cat $PIDFILE)
                       echo "Stopping..."
                       $REDIS_CLI -h $BIND_IP -a $AUTH -p $REDISPORT  SHUTDOWN
                       sleep 2
                       while [ -x $PIDFILE ]
                       do
                               echo "Waiting for Redis to shutdown..."
                               sleep 1
                       done
                       echo "Redis stopped"
                fi
                ;;
         restart|force-reload)
                ${0} stop
                ${0} start
                ;;
         *)
                echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                exit 1
esac
chkconfig redis on    #设置开机自启动
service redis restart    #启动服务

3.5 设置密码

编辑配置文件/etc/redis/redis.conf,重启生效

requirepass redispwd  
redis-cli -p 6379 -a redispwd            #连接数据库需要-a参数输入密码

3.6 备份恢复

使用命令查看备份目录,此目录为服务启动时候的目录,恢复可以将文件存放到此目录下,重启启动redis服务,既可完成rdb数恢复。

CONFIG GET dir           #查看备份目录
save                 #执行备份

Redis-3.2主从复制与集群搭建

4.Redis持久化

4.1 rdb方式

工作原理:

当redis生成dump.rdb文件时,工作过程如下:

redis主进程fork一个子进程,fork出来的子进程将内存的数据集dump到临时的RDB中

当子进程对临时的RDB文件写入完毕,redis用新的RDB文件代替旧的RDB文件

默认配置如下:

save 900 1
save 300 10
save 60 10000

其意义:

当1个key更新值时每900秒保存一次数据到硬盘

当10个key更新值时每300秒保存一次到硬盘

当10000个key更新值时每60秒保存一次到硬盘

4.2 aof方式

aof本质是redis操作(写操作)日志文件。aof默认是未开启的,需要在配置文件中进行设置,在配置文件中将这一行改为appendonly yes就可以了。

工作原理:

AOF :append only file。

每当Redis执行一个改变数据集的命令时,这个命令都会被追加到AOF文件的末尾。

当redis重新启动时,程序可以通过AOF文件恢复数据。

三种appedn方式:

appendfsync always
appendfsync everysec
appendfsync no

appendfsync always每次有新命令追加到 AOF 文件时就执行一次 fsync :非常慢,也非常安全

appendfsync everysec每秒 fsync 一次:足够快(和使用 RDB 持久化差不多),并且在故障时只会丢失 1 秒钟的数据。

appendfsync no从不 fsync :将数据交给操作系统来处理。更快,也更不安全的选择。

推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

aof能够保证数据的安全,但是在重启时比较耗时,而且aof文件的体积比rdb文件大。

5.Redis主从复制

5.1 概述

Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份。具有以下特点:

  • 异步复制,从2.8版本开始,slave能不时地从master那里获取到数据。

  • 允许单个master配置多个slave,易横向扩展

  • slave允许其它slave连接到自己。一个slave除了可以连接master外,它还可以连接其它的slave。形成一个图状的架构

  • master在进行replication时是非阻塞的,这意味着在replication期间,master依然能够处理客户端的请求。

  • slave在replication期间也是非阻塞的,也可以接受来自客户端的请求,但是它用的是之前的旧数据。可以通过配置来决定slave是否在进行replication时用旧数据响应客户端的请求,如果配置为否,那么slave将会返回一个错误消息给客户端。不过当新的数据接收完全后,必须将新数据与旧数据替换,即删除旧数据,在替换数据的这个时间窗口内,slave将会拒绝客户端的请求和连接。

  • 一般使用replication来可以实现扩展性,例如说,可以将多个slave配置为“只读”,或者是纯粹的数据冗余备份。

  • 能够通过replication来避免master每次持久化时都将整个数据集持久化到硬盘中。只需把master配置为不进行持久化操作(把配置文件中持久化相关的配置项注释掉即可),然后连接上一个slave,这个slave则被配置持久化选项。不过需要注意的是,在这个方案中,必须确保master不会自动启动。

5.2 安全性

Master持久化功能关闭时Replication的安全性当有需要使用到replication机制时,一般都会强烈建议把master的持久化开关打开。即使为了避免持久化带来的延迟影响,不把持久化开关打开,那么也应该把master配置为不会自动启动的。

5.3 replication工作原理

为如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个SYNC命令给master请求复制数据。

master收到SYNC命令后,会在后台进行数据持久化,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。当持久化进行完毕以后,master会把这份数据集发送给slave,slave会把接收到的数据进行持久化,然后再加载到内存中。然后,master再将之前缓存在内存中的命令发送给slave。

当master与slave之间的连接由于某些原因而断开时,slave能够自动重连master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送给多个并发连接的slave。

当master和slave断开重连后,一般都会对整份数据进行复制。但从redis2.8版本开始,支

5.4 主从配置

与replication相关的配置比较简单,只需要把下面一行加到slave的配置文件中:

slaveof  masterIPaddress  6379

如果master通过requirepass配置项设置了密码,slave每次同步操作都需要验证密码,可以通过在slave的配置文件中添加以下配置项:

masterauth <passWord>

6 常用命令

启动redis:

redis-server /etc/redis/redis.conf

客户端命令工具

/usr/local/bin/redis-cli -h 192.168.1.1
192.168.1.1:6379> auth Passwd           #登录,密码验证
192.168.1.1:6379>info               #查看数据库状态
192.168.1.1:6379>info replication            #查看slave的复制状态
192.168.1.1:6379>set key 123          #插入数据
192.168.1.1:6379>keys *            #列出数据
flushdb                    #清空当前数据
flushall                   #清除所有数据库


7.测试主从及切换

7.1 主从测试

Redis-3.2主从复制与集群搭建

Redis-3.2主从复制与集群搭建

7.2主从切换

停止主

Redis-3.2主从复制与集群搭建

切换从为主

redis-cli -h localhost slaveof NO ONE

Redis-3.2主从复制与集群搭建

恢复原来主数据库

将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

启动原来的主redis

Redis-3.2主从复制与集群搭建

在从数据库切换主数据库redis-cli -h localhost -p 6379 slaveof 172.17.10.193 6379

测试从已经切换回来

Redis-3.2主从复制与集群搭建


二、Redis 集群搭建

Redis高版本使用ruby实现了集群,所以需要ruby环境,安装ruby环境和redis的gem接口后,就可以使用redis的redis-trib.rb脚本创建集群。

Redis安装成功后,创建单独目录

mkdir /usr/local/redis/cluster -p

再在其下创建目录 7000、7001、7002、7003

mkdir /usr/local/redis/cluster/7000 -p
cp redis.conf /usr/local/redis/cluster/7000/

将redis.conf分别拷贝到这几个目录下面,并分别修改redis.conf 中的端口号port和目录名一致

分别修改配置文件

daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_7000.pid              //pidfile文件对应7000,7002,7003
port  7000                                //端口7000,7002,7003
cluster-enabled  yes                        //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf          //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  5000                  //请求超时  设置5秒够了
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

Redis-3.2主从复制与集群搭建

查看服务是否已经起来

Redis-3.2主从复制与集群搭建

2.安装相关软件包

yum -y install ruby ruby-devel rubygems rpm-build

再用 gem 这个命令来安装 redis接口    gem是ruby的一个工具包

gem install redis

如果安装失败,可手动安装

wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
sudo gem install -l ./redis-3.2.1.gem

3.redis-trib.rb脚本创建集群

cd /root/redis-3.2.4/src
./redis-trib.rb create --replicas 1 172.17.10.191:7000 172.17.10.191:7001 172.17.10
7005 172.17.10.191:7006

--replicas  1  表示 自动为每一个master节点分配一个slave节点 

Redis-3.2主从复制与集群搭建

Redis-3.2主从复制与集群搭建

./redis-trib.rb check 172.17.10.191:7000

Redis-3.2主从复制与集群搭建

4.测试

redis-cli -c -p 7000

设置数据,然后停止7000端口监听的redis

登录其他,查看获取数据。

Redis-3.2主从复制与集群搭建

Redis-3.2主从复制与集群搭建

Redis-3.2主从复制与集群搭建

您可能感兴趣的文档:

--结束END--

本文标题: Redis-3.2主从复制与集群搭建

本文链接: https://www.lsjlt.com/news/39191.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis-3.2主从复制与集群搭建
    一、Redis 主从搭建1.下载并解压yum install -y gcc gcc-c++ pcre zlib pcre-devel&n...
    99+
    2022-10-18
  • MongoDB 主从复制集搭建
    一、Mongodb复制集简介什么是复制集?复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。...
    99+
    2022-10-18
  • docker如何搭建redis主从哨兵集群
    这篇文章主要讲解了“docker如何搭建redis主从哨兵集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker如何搭建redis主从哨兵集群”吧!1:获取redis镜像docker...
    99+
    2023-07-02
  • Redis主从以及哨兵集群搭建(二)
    Redis主从以及哨兵集群搭建一、前言  Redis主从同步原理同MySQL的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决MySQL单点故障的MHA十分相似。因...
    99+
    2022-10-18
  • redis复制集群搭建的实现
    目录前言环境准备搭建过程问题总结前言 Redis 复制集群是开发中一种比较常用的集群模式,本篇演示如何在Centos7上快速搭建一个redis复制集群; 环境准备 1、基于centos7系统的服务器(或者云服务器); 2...
    99+
    2022-08-10
    redis复制集群搭建 redis复制集群
  • redis主从集群搭建的方法是什么
    搭建Redis主从集群的方法有以下几种:1. 使用Redis Sentinel(哨兵):Redis Sentinel是Redis官方...
    99+
    2023-09-09
    redis
  • 基于Docker搭建Redis主从集群的实现
    目录1、拉取 Redis 镜像2、创建 6 个 Redis 容器3、启动 Redis 容器4、组建 Redis 集群5、关于Redis集群搭建最近陆陆续续有不少园友加我好友咨询 re...
    99+
    2022-11-12
  • 如何搭建Redis集群实现三主三从
    这篇文章给大家分享的是有关如何搭建Redis集群实现三主三从的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装需要在每一个节点上进行下载解压安装包cd /usr/local/wget http://downloa...
    99+
    2023-06-04
  • MySQL 5.7 主从集群搭建
    IP功能Linux版本192.168.56.136MasterCentOS 7.9192.168.56.140SlaveCentOS 7.9 一、安装前的准备 1、卸载老版本 (1)查看是否安装mariadb(centos7默认安装) 命令...
    99+
    2023-09-16
    mysql 数据库 linux
  • redis主从复制的搭建步骤
    这篇文章将为大家详细讲解有关redis主从复制的搭建步骤,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主从复制的原理在Redis集群中,让若干个Redis服务器去复制另一...
    99+
    2022-10-18
  • MySQL主从复制、读写分离、高可用集群搭建
    MySQL主从复制、读写分离、高可用集群搭建 一、服务介绍      1.1 Keepalived    Keepa...
    99+
    2022-10-18
  • 怎么搭建jenkins主从集群
    这篇文章主要讲解了“怎么搭建jenkins主从集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么搭建jenkins主从集群”吧!1. 检查服务器包配置[可选]一般不需要apt的额外配置,...
    99+
    2023-06-19
  • Redis中主从复制、Sentinel、集群有什么用
    这篇文章主要为大家展示了“Redis中主从复制、Sentinel、集群有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis中主从复制、Sentine...
    99+
    2022-10-18
  • docker搭建redis主从哨兵集群的实现步骤
    目录1:获取Redis镜像2:创建redis主从+哨兵docker-compose文件3:redis配置和哨兵配置说明4:启动docker-compose5:查看启动情况6:进入主节点查看集群情况本文以docker-co...
    99+
    2022-07-10
    dockerredis主从哨兵集群 redis主从哨兵集群
  • docker搭建redis三主三从集群的实现步骤
    目录一 准备Redis镜像、容器1.1 下载redis6.0.81.2 准备6台服务器配置文件1.3 创建6台redis容器二 创建主从集群关系2.1 进入任意一台redis容器2.3 查看集群状态三 主从容错切换迁移案...
    99+
    2022-08-17
    dockerredis三主三从集群 dockerredis三主三从
  • 基于docker环境下如何搭建redis主从集群
    基于docker环境下如何搭建redis主从集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1   前言笔者给大家介绍基于docker环境下搭建Red...
    99+
    2023-06-04
  • k8s搭建mysql集群实现主从复制的方法步骤
    目录环境介绍一、部署NFS服务器二、创建PV三、编写mysql的yaml文件四、启动MySQL五、验证MySQL主从复制环境介绍 名称版本操作系统IP备注K8S集群1.20.15Centos7.9192.168.11.2...
    99+
    2023-01-05
    k8s mysql主从 k8s搭建mysql主从
  • redis集群为什么要用主从复制功能
    redis集群为什么要用主从复制功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为了使得集群在一部分节点下线或者无法与集群的...
    99+
    2022-10-18
  • Mysql主从复制搭建
    1.mysql主库会把所有的写操作记录在binlog日志中,并且生成log dump线程,将binlog日志传给从库的I/O线程,从库生成两个线程,一个是I/O线程,另外一个是SQL线程。 主将更改操作记录到binlog里从将主的binlo...
    99+
    2020-09-28
    Mysql主从复制搭建
  • Redis中主从复制、哨兵、集群的示例分析
    这篇文章将为大家详细讲解有关Redis中主从复制、哨兵、集群的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Redis 主从复制1. 主从复制的概述主从复制,...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作