复制过程中丢失文件-(复制过程中丢失文件怎么办)

来源:191路由网 2022-11-08 13:35:37

文件在复制过程中丢失 (文件在复制过程中丢失怎么办) 1.redis 从复制原理出发从库到主库发送同步请求,主库接收从库发送的同步请求,主库开始使用 bgsave 生成 rdb 文件主库 rdb 将文件生成后保存到磁盘中 rdb 从仓库接收主仓库发送的文件 rdb 文件,将 rdb 内存中载入文件

与主库同步时,从库中清空所有数据,因此在做 redis 尽量选择没有任何数据的主从 redis

架构图


环境准备

2.部署两台 redis

2.1 192.168.81.210 配置

1.创建redis部署路径[root@redis-1 ~]# mkdir -p /data/redis_cluster/redis_6379/{conf,pid,logs,data}[root@redis-1 ~]# tree /data/redis_cluster//data/redis_cluster/└── redis_6379 ├── conf ├── logs ├── pid └── data 2.下载redis[root@redis-1 ~]# mkdir /data/soft[root@redis-1 ~]# cd /data/soft[root@redis-1 /data/soft]# wget https://repo.huaweicloud.com/redis/redis-3.2.9.tar.gz3.编译安装redis[root@redis-1 /data/soft]# tar xf redis-3.2.9.tar.gz -C /data/redis_cluster/[root@redis-1 /data/soft]# cd /data/redis_cluster/[root@redis-1 /data/redis_cluster]# ln -s redis-3.2.9/ redis[root@redis-1 /data/redis_cluster]# cd redis/src[root@redis-1 /data/redis_cluster/redis]# make && make install4.准备配置文件[root@redis-1 ~]# vim /data/redis_cluster/redis_6379/conf/redis_6379.conf daemonize yesbind 192.168.81.210 127.0.0.1port 6379pidfile /data/redis_cluster/redis_6379/pid/redis_6379.pidlogfile /data/redis_cluster/redis_6379/logs/redis_6379.logdatabases 16dbfilename redis_6379.rdbdir /data/redis_cluster/redis_6379/data/save 900 1save 300 100save 60 10000appendonly yesappendfilename "appendonly.aof"appendfsync alwaysappendfsync everysecappendfsync nono-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yes5.启动redis[root@redis-1 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf2.2 192.168.81.220 配置

由于 redis-1 一套已经部署好了 redis,我们可以直接复制使用

1.使用rsync将redis-1的redis复制你的目录[root@redis-1 ~]# rsync -avz /data root@192.168.81.220:/2.查看复制的目录文件[root@redis-2 ~]# ls /data/redis_cluster/redis redis-3.2.9 redis_6379[root@redis-2 ~]# ls /data/redis_cluster/redis_6379/conf data logs pid3.编译安装redis,使系统能够使用redis直接执行命令make install即可,因为编译步骤在redis-1已经做了[root@redis-2 ~]# cd /data/redis_cluster/redis-3.2.9/[root@redis-2 /data/redis_cluster/redis-3.2.9]# make install4.修改redis配置文件[root@redis-2 ~]# vim /data/redis_cluster/redis_6379/conf/redis_6379.conf bind 192.168.81.220 127.0.0.15.启动redis[root@redis-2 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf3.redis 主从复制配置

3.1.批量创建主库 key

[root@redis-1 ~]# for i in{0..2000}; do redis-cli set k_${i}v_${i}; echo "k_${i}is ok"; done127.0.0.1:6379> DBSIZE(integer) 2001

3.2.配置从库连接主库

实现两种配置方式 Redis 主从复制:

配置文件实现命令执行命令

3.2.1.在配置文件中设置

1.修改配置文件[root@redis-2 ~]# vim /data/redis_cluster/redis_6379/conf/redis_6379.conf slaveof 192.168.81.210 6379 #指定主库ip和端口2.重启redis[root@redis-2 ~]# redis-cli shutdown[root@redis-2 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf

3.2.2.命令行热更新配置

[root@redis-2 ~]# redis-cli127.0.0.1:6379> SLAVEOF 192.168.81.210 6379OK

3.3.检查主库数据同步主库数据

1.从库中执行keys检查数据是否相同[root@redis-2 ~]# redis-cli 127.0.0.1:6379> keys * 2.在主库上新建一个key,检查从库是否存在主:127.0.0.1:6379> set name jiangxlOK从:127.0.0.1:6379> get name "jiangxl"k_114,检查从库是否也删除了主:127.0.0.1:6379> del k_114(integer) 1从:127.0.0.1:6379> get k_114(nil)

3.4.在查看日志时,主要从同步原理

主库从库有记录复制的详细日志

4.redis 从复制危险操作开始

4.1.使用热更新配置误操作

redis 如果使用热更新配置进行主从复制,有时候因为选错了主机,把从库误认为是主库,所以在主库上执行了 slaveof,这将导致主库上的数据被清空,因为从库中没有数据

从库同步主库时,将清空所有原始数据

误操作过程

从库数据为0127.0.0.1:6379> DBSIZE(integer) 0主库数据为2001127.0.0.1:6379> DBSIZE(integer) 2001在主库上同步操作本应从库的数据127.0.0.1:6379> SLAVEOF 192.168.81.220 6379OK再次查看数据,127数据已清空.0.0.1:6379> DBSIZE(integer) 0

4.2.避免热更新配置误操作

在配置文件中直接配置主从而不使用热更新 slaveof 先执行 bgsave,手动备份数据,然后在数据目录中,将 rdb 将文件复制成另一个文件备份,这样即使有问题,也可以恢复

bgsave 之后不需要重启,直接备份 rdb 文件即可

1.手动持久化127.0.0.1:6379> BGSAVEBackground saving started2.备份rdb文件[root@redis-1 ~]# cd /data/redis_cluster/redis_6379/[root@redis-1 /data/redis_cluster/redis_6379]# cd data/[root@redis-1 /data/redis_cluster/redis_6379/data]# cp redis_6379.rdb redis_6379.rdb.bak3.主库再次同步错误,数据丢失127.0.0.1:6379> SLAVEOF 192.168.81.220 6379OK127.0.0.1:6379> keys *(empty list or set)4.还原备份rdb先停止文件redis,在还原[root@redis-1 ~]# redis-cli shutdown[root@redis-1 /data/redis_cluster/redis_6379/data]# cp redis_6379.rdb.bak redis_6379.rdb5.检查还原后的数据[root@redis-1 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf 127.0.0.1:6379> DBSIZE(integer) 20015.模拟 redis 主要从复制错误数据恢复

模拟 redis 恢复同步误操作数据

大致思路:

清空两台 redis 在主库上创建一些数据,然后使用 bgsave 命令将数据保存到磁盘中,然后将磁盘 rdb 文件备份将从数据库中同步,模拟主库数据丢失 rdb 还原数据库备份文件

本实验的主要目的是操作 redis 备份还原

5.1.清空数据

两台 redis 都需要操作

先关闭再删除数据再启动

[root@redis-1 ~]# redis-cli shutdown[root@redis-1 ~]# rm -rf /data/redis_clu st

点击展开全文

相关阅读

win10突然不能关机-(win10突然不能关机不能休眠)

win突然不能关机(win突然不能关机不能休眠)相信有许多深度技术用户在使用windows在10系统中,会出现一些计算机故障问题。没有朋友刚刚安装了最新版本win1021h1系统电脑关机异常,下面深度技术小编就来分享一下具体的处理方法。方法如下:从U盘开始后,点击左下角的修理计算机。选择疑难答案,然后点击高级选项。3...

2022-11-08

复制过程中丢失文件-(复制过程中丢失文件怎么办)

文件在复制过程中丢失(文件在复制过程中丢失怎么办)1.redis从复制原理出发从库到主库发送同步请求,主库接收从库发送的同步请求,主库开始使用bgsave生成rdb文件主库rdb将文件生成后保存到磁盘中rdb从仓库接收主仓库发送的文件rdb文件,将rdb内存中载入文件与主库同步时,从库中清空所有数据,因此在做redis尽量选择没有任何数据的主从...

2022-11-08

路由器该网址-(路由器网站地址)

该网站的路由器(路由器网站地址)今天教你如何用手机修改我们家的路由器WiFi许多人认为修改路由器的密码WiFi密码需要电脑操作,其实我们平时用的手机都可以操作,而且步骤很简单,如果你还不懂,可以点赞收藏和我一起来了解一下,也许以后你会用的。在我们设置之前,我们必须确保手机喝这个修改的路由器匹配连接,首先,我们检查我们的手机是否连接路由器,我们打开手机设置,找到这个Wi...

2022-11-08

win7系统下载u盘安装8g-(win7系统下载u盘安装版)

win7系统下载u盘安装8g(win7系统下载u盘安装版)win在u盘上安装移动系统?工具准备1.准备8的容量G上述正常u盘;2.下载并安装旧白菜装机版u盘启动盘制作工具。流程步骤:1.插入准备好的u盘,然后打开旧白菜装机版u盘启动盘制作工具,确认软件识别插入的u盘,点击开始制作点击确定在还原提示窗中,如图所示:3.制作完成后,点击测试提示框中的是,如图:4.在测试...

2022-11-08

pe启动盘启动计算机-(PE盘启动电脑)

pe启动盘启动计算机(PE盘启动电脑)这个内容来自@什么值得买APP,观点只代表作者本人|作者:夜满楼听风雨:创作立场声明:站在普通玩家和普通消费者的情况下分享以下内容,文章中提到的所有商品和软件都与夜间无关。如果您认为我整理...

2022-11-08

191路由网 - 192.168.1.1,192.168.0.1无线路由器设置教程

版权声明:本站的文章和图片来自互联网收集,仅做分享之用如有侵权请联系站长,我们将在24小时内删除