IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis主从复制原理和操作(Master&Slave) -> 正文阅读

[大数据]Redis主从复制原理和操作(Master&Slave)

Redis主从复制

主从复制原理

1.从库向主库发起同步请求

2.主库接收到从库的同步请求

3.主库开始bgsave生成rdb文件

4.主库生成完成之后,保存在磁盘成功

5.主库将RBD文件发送给从库

6.从库接收主库的rdb文件

7.从库清空自己所有数据

8.从库将接受的rdb文件载入到内存中

主从复制日志讲解请添加图片描述

危险操作

如果主库不小心同步了空的从库,会导致主库的数据全部丢失!!!

请谨慎操作,尽量可以使用配置文件中修改的方式来进行。

主机信息

  • db1 192.168.40.1 master

  • db2 192.168.40.4 slave

主从复制操作方法一

第一个方法的直接在redis库中执行命令让数据库同步这样的操作有一定的风险如果数据库方向操作则会导致数据丢失。

#首先启动redis,然后向主库中插入数据。
[root@localhost redis_6379]# redis-cli
#我这之前插入的还有两千条数据
127.0.0.1:6379> DBSIZE
(integer) 20001

搭建redis从库

#可以直接将主库的redis文件复制到从库的服务器
rsync -avz redis_cluster/ 192.168.40.4:/opt/
#因为主从的配置文件中设计到的本地ip是不一样的需要手动改一下,找到以下内容手动修改成本地ip
### 绑定的主机地址
bind 127.0.0.1 192.168.40.4
#然后启动从库的redis

使用命令实现主从复制

这样操作的问题是临时同步的如果数据库重启那主从关系就不存在了。

#在保证主库有数据的情况下,连接从库
[root@localhost redis_6379]# redis-cli
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> 
#从库的数据是空的就可以执行同步的命令把主库的数据同步到从库
#redis的主从复制操作比较简单就只有“SLAVEOF”这么一条命令
127.0.0.1:6379> SLAVEOF 192.168.40.1 6379
OK
#然后过一会就可以查看到所有的数据都同步过来了,同步的原理可以看最前面的
127.0.0.1:6379> DBSIZE 
(integer) 20001

临时关闭主从的命令

#使用SLAVEOF no one命令可以关闭数据库的主从关系
127.0.0.1:6379> SLAVEOF no one
OK
127.0.0.1:6379> CONFIG GET slaveof
1) "slaveof"
2) ""

主从复制方法二

方法二比较稳定是通过修改从库的conf配置文件

#vim打开配置文件在最下面添加这一行
vim conf/redis_6379.conf
slaveof 192.168.40.1 6379

#然后我们删除本地的redis_6379.rdb文件
#关闭在启动reidis
[root@localhost redis_6379]# redis-cli shutdown
#启动redis
[root@localhost redis_6379]# redis-server conf/redis_6379.conf
#查询可以看到同步已经生效
127.0.0.1:6379> DBSIZE
(integer) 20001
127.0.0.1:6379> CONFIG GET slaveof
1) "slaveof"
2) "192.168.40.1 6379"

主从复制效果测试

#在主库db1上创建了name  zhangsan
127.0.0.1:6379> set name zhangsan
OK
#在从库上查询
127.0.0.1:6379> get name
"zhangsan"
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:58:28  更:2022-05-19 11:59:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:17:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码