iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Redis实现主从复制的方法是什么
  • 526
分享到

Redis实现主从复制的方法是什么

2023-07-02 10:07:22 526人浏览 泡泡鱼
摘要

本篇内容介绍了“Redis实现主从复制的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Master&Slave是什么?

本篇内容介绍了“Redis实现主从复制的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    一、Master&Slave是什么?

    也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。

    二、它能干嘛?

    读写分离;

    容灾恢复。

    三、怎么玩?

    配从(库)不配主(库);

    从库配置:slaveof [主库IP] [主库端口];

    • 补充:每次slave与master断开后,都需要重新连接,除非你配置进Redis.conf文件;

    • 键入info replication 可以查看redis主从信息。

    修改配置文件细节操作

    - 拷贝多个redis.conf文件

    Redis实现主从复制的方法是什么

    - 指定端口

    Redis实现主从复制的方法是什么

    - 开启daemonize yes

    Redis实现主从复制的方法是什么

    - Pid文件名字

    Redis实现主从复制的方法是什么

    - Log文件名字

    Redis实现主从复制的方法是什么

    - Dump.rdb名字

    Redis实现主从复制的方法是什么

    常用3招

    - 一主二仆

    Redis实现主从复制的方法是什么

    一个Master,两个Slave,Slave只能读不能写;当Slave与Master断开后需要重新slave of连接才可建立之前的主从关系;Master挂掉后,Master关系依然存在,Master重启即可恢复。

    - 薪火相传

    Redis实现主从复制的方法是什么

    上一个Slave可以是下一个Slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个slave的Master,如此可以有效减轻Master的写压力。如果slave中途变更转向,会清除之前的数据,重新建立最新的。

    - 反客为主

    当Master挂掉后,Slave可键入命令 slaveof no one使当前redis停止与其他Master redis数据同步,转成Master redis。

    四、复制原理

    Slave启动成功连接到master后会发送一个sync命令;

    Master接到命令启动后的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master 将传送整个数据文件到slave,以完成一次完全同步;

    全量复制:而slave服务在数据库文件数据后,将其存盘并加载到内存中;

    增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步;

    但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。

    五、哨兵模式(sentinel)

    反客为主的自动版,能够后台监控Master库是否故障,如果故障了根据投票数自动将slave库转换为主库。一组sentinel能同时监控多个Master。

    使用步骤:

    在Master对应redis.conf同目录下新建sentinel.conf文件,名字绝对不能错;

    配置哨兵,在sentinel.conf文件中填入内容:

    • sentinel monitor 被监控数据库名字(自己起名字) ip port 1

    • 说明:上面最后一个数字1,表示主机挂掉后slave投票看让谁接替成为主机,得票数多少后成为主机。

    启动哨兵模式:

    • 命令键入:redis-sentinel /myredis/sentinel.conf

    • 注:上述sentinel.conf路径按各自实际情况配置

    六、复制的缺点

    延时,由于所有的写操作都是在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使得这个问题更加严重。

    Redis master, slave节点部署详解

    创建两个redis.conf文件, 一主一从

    redis_6379.confredis_6380.conf

    master conf 主要配置

    bind 127.0.0.1port 6379protected-mode yesdaemonize yespidfile /var/run/redis_6379.pidlogfile "/Data/apps/redis-3.2.12/logs/redis_6379.log"dbfilename dump_6379.rdbdir /Data/apps/redis-3.2.12/workplacerequirepass paopao

    slave conf 主要配置

    bind 127.0.0.1port 6380protected-mode yesdaemonize yespidfile /var/run/redis_6380.pidlogfile "/Data/apps/redis-3.2.12/logs/redis_6380.log"dbfilename dump_6380.rdbdir /Data/apps/redis-3.2.12/workplaceslaveof 127.0.0.1 6379masterauth paopao

    启动主从redis-server进程

    redis-server /Data/apps/redis-3.2.12/conf/redis_6379.confredis-server /Data/apps/redis-3.2.12/conf/redis_6380.conf

    其他相关配置

    # 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:# 1) 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求# 2) 如果slave-serve-stale-data是指为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个#    错误"SYNC with master in progress"slave-serve-stale-data yesslave-read-only yes# 从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒repl-ping-slave-period 10# repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒# 一定要确保repl-timeout大于repl-ping-slave-periodrepl-timeout 60# slave节点磁盘慢, 网速快时, 置为yes, master上的rdb文件将以Socket方式传输, 跳过磁盘存储repl-diskless-sync no# 传输前等待秒数, 为了等待更多的slave节点加入repl-diskless-sync-delay 5# 传输时,是否禁用tcp nodelayrepl-disable-tcp-nodelay no# 复制缓冲区大小repl-backlog-size 1mb# 复制缓冲区释放周期repl-backlog-ttl 3600# 为了sentinal模式, 选举master准备, 数值越小, 优先级越高slave-priority 100# require at least 3 slaves with a lag <= 10 seconds usemin-slaves-to-write 3min-slaves-max-lag 10# 可覆盖bind, port 配置, 对外ip portslave-announce-ip 5.5.5.5slave-announce-port 1234

    “Redis实现主从复制的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: Redis实现主从复制的方法是什么

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

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

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

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

    下载Word文档
    猜你喜欢
    • C++ 生态系统中流行库和框架的贡献指南
      作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
      99+
      2024-05-15
      框架 c++ 流行库 git
    • C++ 生态系统中流行库和框架的社区支持情况
      c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
      99+
      2024-05-15
      生态系统 社区支持 c++ overflow 标准库
    • c++中if elseif使用规则
      c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
      99+
      2024-05-15
      c++
    • c++中的继承怎么写
      继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
      99+
      2024-05-15
      c++
    • c++中如何使用类和对象掌握目标
      在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
      99+
      2024-05-15
      c++
    • c++中优先级是什么意思
      c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
      99+
      2024-05-15
      c++
    • c++中a+是什么意思
      c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
      99+
      2024-05-15
      c++
    • c++中a.b什么意思
      c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
      99+
      2024-05-15
      c++
    • C++ 并发编程库的优缺点
      c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
      99+
      2024-05-15
      c++ 并发编程
    • 如何在 Golang 中备份数据库?
      在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
      99+
      2024-05-15
      golang 数据库备份 mysql git 标准库
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作