当前位置: 首页 > news >正文

关于Redis的主从复制功能

目录

一、主从配置管理

1.1、建立复制

1.2、断开复制

1.3、安全性

1.4、只读(默认)

1.5、传输延迟

二、部署Redis主从复制

2.1、案例环境

2.2、案例步骤推荐

一、主从配置管理

1.1、建立复制

主从复制配置方式有三种:

  • 在配置文件中加入slaveof {masterHost} {masterPort}随Redis启动生效,CONFIG SET masterauth "your_master_password"配置密码

  • 在redis-server启动命令后加入--slaveof {masterHost} {masterPort}

  • 直接使用命令redis-cli -h IP slaveof {masterHost} {masterPort}生效。

1.2、断开复制

slaveof命令不但可以建立复制,也可以执行slaveof no one来断开与主节点复制关系。

1.3、安全性

主节点通常会设置requirepass参数进行密码验证,这时所有的客户端访问必须使用auth命令实行校验。因此需要在从节点配置masterauth参数与主节点密码保持一致。

1.4、只读(默认)

默认情况下,从节点使用slave-read-only=yes配置为只读模式。由于复制只能从主节点到从节点,对于从节点的任何修改主节点都是无法感知的,修改从节点会造成主从数据不一致。因此建议线上将从节点设置为只读模式。

1.5、传输延迟

主从节点一般在不同机器上,复制时的网络延迟就成为需要考虑的问题,Redis为我们提供了repl-disable-tcp-nodelay参数用于控制是否关闭TCP_NODELAY,默认为no,为开启状态。

设置为no时,表示开启TCP_NODELAY,允许小包发送,使得网络延迟变小,但是会增加网络带宽消耗。

设置为yes时,表示关闭TCP_NODELAY,主节点会将小包合并发送,默认发送时间间隔取决于Linux内核,一般为40ms。节省了带宽,但是增大了延迟。

二、部署Redis主从复制

2.1、案例环境

系统IP地址Redis角色及端口
openEuler 24.03 192.168.150.34master:6379
openEuler 24.03 192.168.150.35slave:6379(6379.conf)slave:6380(6380.conf)

2.2、案例步骤推荐

  • 安装并配置master角色的redis服务;

  • 安装并配置slave角色的redis服务(双实例);

  • 验证主从复制功能;

环境准备

[root@localhost ~]# systemctl stop  firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y redis

配置slave角色的redis服务

[root@localhost ~]# vim /etc/redis.conf# replicaof <masterip> <masterport>replicaof 192.168.150.34 6379            #指定masterIP地址及监听端口#bind 127.0.0.1 -::1
bind 192.168.150.35            #设置监听IP地址protected-mode no            #关闭redis保护模式

启动服务

[root@localhost ~]# systemctl start redis

登录slave查看信息

[root@localhost ~]# redis-cli -h 192.168.150.35
192.168.150.35:6379> 
192.168.150.35:6379> info
# Replication
role:slave
master_host:192.168.150.34
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:126
slave_repl_offset:126
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:2c3a929a473738253bc95422b4e0c02228c3079e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126

在redis-server启动命令后加入--slaveof {masterHost} {masterPort} 配置第二台slave

[root@localhost ~]# vim /etc/redis.conf#bind 127.0.0.1 -::1
bind 192.168.150.36           #设置监听IP地址protected-mode no            #关闭redis保护模式
[root@localhost ~]# redis-cli -h 192.168.150.36
192.168.150.36:6379> SLAVEOF 192.168.150.34 6379
OK
192.168.150.36:6379> info
# Replication
role:slave
master_host:192.168.150.34
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_read_repl_offset:1050
slave_repl_offset:1050
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:2c3a929a473738253bc95422b4e0c02228c3079e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1050
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:981
repl_backlog_histlen:70

验证主从复制

master

[root@localhost ~]# redis-cli -h 192.168.150.34
192.168.150.34:6379> keys *
1) "d"
192.168.150.34:6379> get d
"hello"

slave1

192.168.150.35:6379> keys *
1) "d"
192.168.150.35:6379> get d
"hello"

slave2

192.168.150.36:6379> keys *
1) "d"
192.168.150.36:6379> get d
"hello"
192.168.150.35:6379> set a hello
(error) READONLY You can't write against a read only replica.

可以发现在slave节点上无法执行写操作,因为slave节点默认配置的是只读模式。

http://www.dtcms.com/a/540944.html

相关文章:

  • 笔记:理解Yolo网络运行规律并添加自制简易功能(以Yolo11为例)
  • node.js学习(一)
  • 江苏品牌网站建设网站如何防采集
  • mybatis-plus官方文档解析
  • PySide6 Win10记事本从零到一——第三章 记事本主窗口基础
  • 中国《个人信息保护法》与欧盟《GDPR》的差异对比
  • 手动配置ingress讲服务端获取客户端的真实用户IP
  • 做网站导航按钮怎么做网页游戏大全力荐新壹玩
  • 迅为rk3568开发板配置 rk3568_uart_config.hcs
  • 临沂哪里做网站比较好wordpress注册中文插件
  • 二谈-双FIFO流水案例
  • 揭开Linux跨平台 adb调试原理神秘面纱
  • 零基础学jsp网站开发自己做的网站链接
  • 根据参数动态配置多数据源
  • 帝国cms小程序获取分类的api接口
  • 黄冈网站建设有哪些某互联网公司开发官网的首页
  • 前端与Node.js
  • 怎样做电商网站好视频教学ps做网站页面设置为多大
  • 肇庆市住房和城乡建设局网站企业网站维护工作内容
  • 芯片选型避坑指南:如何根据需求快速筛选MCU
  • 【MATLAB代码】基于噪声协方差自适应的互补滤波器方法vs标准互补滤波,用于估计角度,附完整代码
  • 金仓数据库替代MongoDB实战:政务电子证照系统的国产化转型之路
  • 深度学习超材料逆向设计专题学习
  • 基于Matlab的批处理最小二乘法参数估计
  • 自己做书画交易网站北京网页设计如何创意
  • 鸿蒙应用开发:华为静默登录解决方案
  • 【Linux Oracle】批量抽取数据库特定条件的数据
  • 公司网站一年费用wordpress 球员
  • 百度建立企业网站建设的目的用h5开发的网站模板
  • Windows下C语言连接瀚高数据库