首页 > 数据库 >redis主从复制集群环境搭建

redis主从复制集群环境搭建

时间:2023-04-03 21:04:47浏览次数:46  
标签:redis626 主从复制 redis 00 leo 集群 6.2 root

文档课题:redis主从复制集群环境搭建.
操作系统:rhel 7.9 64位
数据库:redis 6.2.6
主机名:主库leo-redis626-a,从库1 leo-redis626-b,从库2 leo-redis626-c
IP信息:主库192.168.133.100,从库1 192.168.133.101,从库2 192.168.133.102
端口号:主库 6379,从库1 6380,从库2 6381
1、拓扑结构
 
2、准备工作
--准备三台Linux服务器,且安装好redis 6.2.6环境.
[root@leo-redis626-a redis-6.2.6]# ps -ef|grep redis
avahi       870      1  0 20:18 ?        00:00:00 avahi-daemon: running [leo-redis626-a.local]
root      57363  57302  0 23:39 pts/0    00:00:00 redis-server *:6379
root      57396   2484  0 23:40 pts/1    00:00:00 grep --color=auto redis
[root@leo-redis626-b redis-6.2.6]# ps -ef|grep redis
avahi       854      1  0 20:31 ?        00:00:00 avahi-daemon: running [leo-redis626-b.local]
root      57079  57011  0 23:39 pts/0    00:00:00 redis-server *:6379
root      57093   2303  0 23:39 pts/1    00:00:00 grep --color=auto redis
[root@leo-redis626-c redis-6.2.6]# ps -ef|grep redis
avahi       871      1  0 20:29 ?        00:00:00 avahi-daemon: running [leo-redis626-c.local]
root      57044  56993  0 23:38 pts/0    00:00:00 redis-server *:6379
root      57054   2334  0 23:38 pts/1    00:00:00 grep --color=auto redis
--关闭三台服务器redis进程,开始相关配置.
[root@leo-redis626-a redis-6.2.6]# kill -9 57363
[root@leo-redis626-b redis-6.2.6]# kill -9 57079
[root@leo-redis626-c redis-6.2.6]# kill -9 57044
3、配置主从
3.1、编写配置文件
--配置第一台服务器,新建redis6379.conf文件.
[root@leo-redis626-a redis-6.2.6]# pwd
/usr/local/src/redis-6.2.6
[root@leo-redis626-a redis-6.2.6]# vi redis6379.conf
添加如下内容:
include /usr/local/src/redis-6.2.6/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
daemonize yes
bind 0.0.0.0
logfile "/usr/local/src/redis-6.2.6/redis.log"
说明:
A、参数说明
第一行:包含此前安装redis目录的配置.
第四行:数据持久化的rdb文件.
第五行:“daemonize yes”表示以后台运行redis进程.
第六行:“bind 0.0.0.0”防止从库执行slaveof时报错“Error condition on socket for SYNC: No route to host”,该参数仅在主库配置.
第七行:设置logfile目录文件.
B、后续以该配置文件启动redis服务.

--从库1新建redis6380.conf文件.
[root@leo-redis626-b redis-6.2.6]# vi redis6380.conf
添加如下内容:
include /usr/local/src/redis-6.2.6/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
daemonize yes
logfile "/usr/local/src/redis-6.2.6/redis.log"

--从库2新建redis6381.conf文件.
[root@leo-redis626-c redis-6.2.6]# vi redis6381.conf
添加如下内容:
include /usr/local/src/redis-6.2.6/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
daemonize yes
logfile "/usr/local/src/redis-6.2.6/redis.log"
3.2、关闭防火墙
--主库
[root@leo-redis626-a redis-6.2.6]# systemctl stop firewalld
[root@leo-redis626-a redis-6.2.6]# systemctl disable firewalld
--从库1
[root@leo-redis626-b redis-6.2.6]# systemctl stop firewalld
[root@leo-redis626-b redis-6.2.6]# systemctl disable firewalld
--从库2
[root@leo-redis626-c redis-6.2.6]# systemctl stop firewalld
[root@leo-redis626-c redis-6.2.6]# systemctl disable firewalld
3.3、开启redis进程
--启动三台服务器的redis进程.
--主库
[root@leo-redis626-a redis-6.2.6]# redis-server redis6379.conf
[root@leo-redis626-a ~]# ps -ef|grep redis
avahi       870      1  0 Apr02 ?      00:00:00 avahi-daemon: running [leo-redis626-a.local]
root      57625   2484  0 Apr02 pts/1    00:00:00 redis-server 127.0.0.1:6379
root      57679  57639  0 00:00 pts/2    00:00:00 grep --color=auto redis
[root@leo-redis626-a ~]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
--从库1
[root@leo-redis626-b redis-6.2.6]# redis-server redis6380.conf
[root@leo-redis626-b ~]# ps -ef|grep redis
avahi       854      1  0 Apr02 ?      00:00:00 avahi-daemon: running [leo-redis626-b.local]
root      57384   2303  0 00:00 pts/1    00:00:00 redis-server 127.0.0.1:6380
root      57459  57389  0 00:01 pts/2    00:00:00 grep --color=auto redis
[root@leo-redis626-b ~]# redis-cli -p 6380
127.0.0.1:6380> ping
PONG

--从库2
[root@leo-redis626-c redis-6.2.6]# redis-server redis6381.conf
[root@leo-redis626-c ~]# ps -ef|grep redis
avahi       871      1  0 Apr02 ?      00:00:00 avahi-daemon: running [leo-redis626-c.local]
root      57434   2334  0 00:01 pts/1    00:00:00 redis-server 127.0.0.1:6381
root      57441  57390  0 00:02 pts/2    00:00:00 grep --color=auto redis
[root@leo-redis626-c ~]# redis-cli -p 6381
127.0.0.1:6381> ping
PONG
4、配置主从
目标:配置leo-redis626-a作为主节点,leo-redis626-b、leo-redis626-c作为从节点.
--从库1
127.0.0.1:6380> slaveof 192.168.133.100 6379
OK
--从库2
127.0.0.1:6381> slaveof 192.168.133.100 6379
OK
说明:slaveof仅在从库执行.
5、结果验证
5.1、节点信息
--主节点查看.
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.133.101,port=6380,state=online,offset=280,lag=1
slave1:ip=192.168.133.102,port=6381,state=online,offset=280,lag=1
master_failover_state:no-failover
master_replid:42036cfd230f20054ec04042c0f001c3b083c3ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:280
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:280

--从库1查看.
[root@leo-redis626-b redis-6.2.6]# redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.133.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_read_repl_offset:3556
slave_repl_offset:3556
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:42036cfd230f20054ec04042c0f001c3b083c3ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3556
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3556

--从库2查看.
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:192.168.133.100
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_read_repl_offset:3612
slave_repl_offset:3612
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:42036cfd230f20054ec04042c0f001c3b083c3ce
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3612
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:267
repl_backlog_histlen:3346
5.2、添加键值测试
--主库添加键值.
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set key1 val1
OK

--从库1查询
127.0.0.1:6380> keys *
1) "key1"
127.0.0.1:6380> get key1
"val1"
--从库2查询
127.0.0.1:6381> keys *
1) "key1"
127.0.0.1:6381> get key1
"val1"

说明:如上所示,1主2从环境搭建完成.
6、架构缺点
redis主从复制存在主机Master宕机后,写服务无法使用,此时需要手动切换主从关系.
这样会造成一段时间内服务不可用.更多时候应考虑哨兵模式.

标签:redis626,主从复制,redis,00,leo,集群,6.2,root
From: https://blog.51cto.com/u_12991611/6167493

相关文章

  • 启动redis时,告警日志中出现“The TCP backlog setting of 511……”以及“overcommit_
    问题描述:启动redis时,告警日志中出现“TheTCPbacklogsettingof511……”以及“overcommit_memoryissetto0…..”警告,如下所示:系统:rhel7.9数据库:redis6.2.61、异常重现[[email protected]]#redis-serverredis6379.conf[root@leo-redis626-aredis-6.......
  • linux 安装redis
       一、准备好gcc环境yuminstallgcc-c++复制代码出现以下日志,代表安装成功。Packagegcc-c++-4.8.5-39.el7.x86_64alreadyinstalledandlatestversionLoadedplugins:fastestmirrorDeterminingfastestmirrorsbase......
  • 分布式系统——基于Redis的分布式锁的实现
    分布式锁的介绍分布式锁是分布式系统中用于协调多个进程或线程之间并发访问共享资源的一种机制。在分布式系统中,由于各个节点之间的通信存在延迟、故障等问题,可能会导致数据的不一致性。为了保证数据的一致性,需要使用分布式锁来协调各个节点的并发访问。在分布式系统中,多个节点......
  • Mysql主从复制
    工作原理图:主从复制的原理:分为同步复制和异步复制,实际复制架构中大部分为异步复制。复制的基本过程如下:1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请......
  • Redis常见问题答疑
    数据类型一个数据类型都对应了很多种底层数据结构。以List为例,什么情况下是双向链表,反之又在什么情况下是压缩列表呢?还是说是并存状态?1、Hash和ZSet是数据量少采用压缩列表存储,数据量变大转为哈希表或跳表存储2、但List不是这样,是并存的状态,List是双向链表+压缩列表key过期......
  • Redis 持久化之RDB 和 AOF
     Redis有两种持久化方案,RDB(RedisDataBase)和AOF(AppendOnlyFile)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习Redis的重点知识持久化。RDB详解RDB是Redis默认的持久化方......
  • 安装redis
     1、下载安装reids-4.0.111、推荐进入到linux路径/usr/local/src2、$wgethttp://download.redis.io/releases/redis-4.0.10.tar.gz3、$tarxzfredis-4.0.10.tar.gz4、$cdredis-4.0.10/5、$make&&makeinstall2、启动客户端    完成了。  安装......
  • php redis 悲观锁
     悲观锁(PessimisticLock),顾名思义,就是每次处理redis数据都以最悲观的场景展开,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是......
  • redis 高级数据 hyperLogLog
     1、统计独立的UV2、用做    基数  统计的{1,3,5,7,8,7,5} 基数集:{1,3,5,7,8}     基数:5{1,1,1,1,1,7,1}基数集:{1,7}基数:2基数是数据集去重后元素个数  用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据 核心是技术估算......
  • redis集群简介
     1.1       集群的概念所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。1.1.1      使用redis集群的必要性问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?答:(1)单个redis存在......