【redis-4】redis主从复制

本文详细介绍了Redis主从复制的作用及实现过程,包括配置、复制启动、权限验证等环节,并探讨了不同场景下主从复制的应用策略。

一:作用

可以把master的数据同步到slave中保存,增强数据安全性。

可以分散来自客户端的读请求,降低master的压力。

默认主宕机后无法主从切换,利用哨兵模式可以做到。

二:过程:

1、slave连接master时候,master会执行BGSAVE操作。所以master中须保证已配置dir和dbfilename选项,并且所指路径和文件对于redis是可写的。

2、主从复制的设置方式:

a、在slave的conf中:slaveof   master<ip>  master<port> ,slave启动时,就会去连接master。(5.0之后slaveof变为replicaof

b、如果slave正在运行,用户可以发送指令:slaveof  master<ip>  master<port>  来连接master。   (slaveof  no  one命令终止复制)

3、复制的启动过程:

实际运用中,master最好只使用50%-65%的内存,留下一定的内存用于BGSAVE命令和创建用于记录写命令的缓冲区,否则会影响redis处理命令请求的效率(主从服务器间的网络宽带不足也会影响)。

4、当多个从连接一个主时,可能出现以下之一:

5、主从链:就是slave可以有slave

同时使用AOF和主从复制,可以将数据持久化到多台机器。当然,这得保证需要持久化的服务器上开启了AOF相关配置(appendonly  yes和appendfsync  everysec)。

6、权限验证

主从正常连接后,进行权限验证
主未设置密码( requirepass=“” ) ,从也不用设置密码( masterauth=“”
主设置密码 (requirepass!=""), 从需要设置密码 (masterauth= 主的 requirepass 的值 )
或者从通过 auth 命令向主发送密码

上面认识了主从复制和主从链,什么情况下使用?

1、读请求的重要性明显高于写,并且请求的数量远远超出一台redis可以处理的范围,这时候需要添加服务器,就可以使用主从复制。

2、master无法快速更新所有slave,或者因重新连接和重新同步slave导致系统超载,可以使用主从链,不要把所有的slave绑定到一台master上。

注:slave其实是可以接受写命令的,修改slave配置文件中的slave-read-only no则可,,slave接受的写操作时不会同步到master的,一般也不会这么做…

使用docker-compose安装Redis主从和哨兵可按以下步骤进行: ### 安装前准备 创建一个目录用于存放相关文件,如 `[root@localhost ]#mkdir -p /usr/local/docker-compose-redis-sentinel`,并将准备文件全部上传到该目录。同时,要准备好Redis的主配置文件(redis.conf)、从配置文件(redis.conf)以及哨兵的配置文件(redis-sentinel.conf)[^1]。 ### 配置docker-compose.yml文件 在三台服务器分别配置docker-compose,以下是一个示例配置: ```yaml version: '3' services: redis: image: redis:6.2.14 container_name: redis-master ports: - 6379:6379 volumes: - ./redis/conf/redis-master.conf:/usr/local/etc/redis/redis.conf - ./redis/data:/usr/local/etc/redis/data restart: always privileged: true command: redis-server /usr/local/etc/redis/redis.conf networks: - my-network sentinel: image: redis:6.2.14 container_name: redis-sentinel command: redis-sentinel /usr/local/etc/redis/sentinel.conf ports: - "26379:26379" volumes: - ./redis/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf restart: always networks: - my-network networks: my-network: name: my-network driver: bridge ``` 此配置文件指定了Redis主节点和哨兵节点的镜像、容器名称、端口映射、挂载卷、重启策略等信息。其中,`redis` 服务为Redis主节点,`sentinel` 服务为哨兵节点,它们共享同一个网络 `my-network` [^3]。 ### 启动服务 在每台机器上进入项目目录(如 `/opt/redis-sentinel` )并运行以下命令启动服务: ```bash cd /opt/redis-sentinel docker-compose up -d ``` 需要确保 `docker-compose.yml` 文件存在,否则直接运行 `docker-compose up` 会报错 [^2]。 ### 验证安装 可以使用以下命令验证Redis主从和哨兵是否安装成功: ```bash docker exec -it redis-master redis-cli -h 127.0.0.1 -p 6379 -a pass ``` 进入Redis客户端后,执行 `PING` 命令,如果返回 `PONG`,则表示连接成功。还可以进行数据读写操作,如 `set LTingZxTest04 ZHANGSANLISIWANGWU` 和 `get LTingZxTest04` 来验证数据的读写功能 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值