Redis主从复制超详细好用搭建方案

news/2024/7/24 12:31:03 标签: nginx, linux, 服务器

Redis主从复制最佳搭建方案

为了方便学习,我们将本该搭建在三台不同服务器上的Redis放在一台虚拟机上通过启动三个不同端口号的Redis运行。

这里我们以简单的一主二仆为例,并假设我们所有服务器的密码都是password123

首先,我们在根目录下创建myredis文件夹

cd /
mkdir myredis

然后复制redis.conf文件到 /myredis 文件夹。

cp /etc/redis.conf /myredis/redis.conf

注意:实际操作前两个步骤不需要做,直接修改每台服务器上面redis的配置文件即可。

**为了少写几行代码,这里我们把redis的AOF关掉,即修改redis文件中appendonly的值为no。如果对数据的完整性比较严重,建议开启。**这里,我们修改redis.conf文件如下:

appendonly no

接着我们创建三个conf文件(分别取名redis6379.conf、redis6380.conf、redis6381.conf)。内容如下:(其实有个真实的三台服务器的情况下,主机没啥好配的,记得写个密码加密就行了,端口号最好也记得改一下,我就有过不配密码不改端口号,写博客暴露ip地址导致被攻击的惨痛经历。。。。)

redis6379.conf

include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
requirepass password123

redis6380.conf

include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
replicaof 127.0.0.1 6379
requirepass password123
masterauth password123
replica-priority 80

redis6381.conf(作为6380端口的从机,实现薪火相传)

include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
replicaof 127.0.0.1 6380
requirepass password123
masterauth password123
replica-priority 90

介绍一下各个属性:

属性介绍
include /myredis/redis.conf引入/myredis/redis.conf文件的所有配置信息
pidfile /var/run/redis_6381.pidpid文件位置
portredis的端口号
dbfilename数据库名称(RDB数据库)
replicaof从属于哪台主机
requirepass本机的密码
masterauth主机的密码
replica-priority哨兵模式的权重,值越小,成为主机的优先级越高

最后我们还可以整一个Redis的哨兵模式,实现当主机宕机的时候,从机主动切换为主机,防止自家的产品某天主机宕机导致整个产品直接裂开的情况。

在myredis目录下新建一个sentinel.conf文件(不要改他的文件名):

sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster password123

解释一下,这里mymaster是为监控对象起的服务器的名称,1是至少有多少个哨兵同意就可以迁移 的数量。
然后开启我们的哨兵:

redis-sentinel sentinel.conf

他的默认端口号是26379。

最后我们启动我们所有的redis服务器即可。


http://www.niftyadmin.cn/n/1733339.html

相关文章

Redis集群超详细教程及其实战(附带各种问题解决)

文章目录Redis集群超详细教程及其实战简介搭建Redis集群实战槽(Slot)把玩集群故障恢复集群的Jedis开发Redis集群超详细教程及其实战 简介 Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点…

Redis解决缓存穿透问题

文章目录Redis解决缓存穿透问题什么是缓存穿透解决方法Redis解决缓存穿透问题 什么是缓存穿透 请看图,当我们用户访问我们的服务器的时候,服务器一般会先访问我们的redis,查看我们的缓存是否有需要的数据,如果没有我们再去访问数…

Redis解决缓存击穿问题

文章目录Redis解决缓存击穿问题什么是缓存击穿解决方案Redis解决缓存击穿问题 什么是缓存击穿 缓存击穿:数据库的压力瞬时增大,且redis中并无大量的key过期,redis正常运行的情况下,数据库奔溃了。(他跟缓存穿透的区别…

Redis解决缓存雪崩问题

文章目录Redis解决缓存雪崩问题什么是缓存雪崩怎么解决Redis解决缓存雪崩问题 什么是缓存雪崩 缓存雪崩:在极少时间内,查询大量key的批量过期,导致不停访问数据库,加大服务器的压力,最终服务器奔溃的情况。&#xff…

Redis解决分布式锁

文章目录Redis解决分布式锁什么是分布式锁上锁的解决方案Redis解决分布式锁上锁实战Redis解决分布式锁 什么是分布式锁 随着业务发展的需要,原先单机部署的系统现在已经演化成了分布式集群系统。即,原先我们用一个服务器就啥也扔进去了,啥也…

js实现睡眠方法(sleep)

js实现睡眠方法(sleep) 如果你不需要用到原函数的this那么这么用。(需要用到this请往下看) //这种用法在doSomething处使用this的话,指向的是匿名函数 //3000表示睡眠3s后执行doSomething setTimeout(function(){//d…

解决Vue控制台报错:NavigationDuplicated: Avoided redundant navigation to current location

它的提示是 避免到当前位置的冗余导航。 简单来说就是重复触发了同一个路由。 解决方法如下: 在router文件夹下的index.js文件中添加这几行代码即可: const originalPush Router.prototype.push//解决报错信息:NavigationDuplicated: Avoi…

Vue拦截器报错Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘code‘)

如果出现Vue拦截器报错Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘code’)。 那么,很可能是因为你修改了你的拦截器却没有重启你的前端服务器的原因。重启一下就可以啦。