redis 从库数据同步失败——爬坑记

早上上班,发现redis的一个slave节点down了一个。对,没错,不是数据不同步那么简单,连redis服务进程都自动退出了。
场景:主从同步模式
master-->slave1
master-->slave2
master-->slave3
info状态: slave1,slave2 都是state=online,offset=5744884846,lag=1正常状态,slave3是state=send_bulk,offset=0,lag=0

1、重启redis操作
日志内容:WARNING overcommit_memory is set to 0
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.
a:第一个解决:
编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效 echo 1 > /proc/sys/vm/overcommit_memory
b:原因就是因为128太小了。执行echo 511 > /proc/sys/net/core/somaxconn

命令就把这个问题解决了。但是这个只是暂时的。如果想要永久解决,打开ietc/sysctl.conf
vim /etc/sysctl.conf
net.core.somaxconn= 1024
sysctl -p 永久生效
c: 需要解决THP的内存问题 :
echo never > /sys/kernel/mm/transparent_hugepage/enabled
重启日志报错:Short read or OOM loading DB. Unrecoverable error, aborting now.
处理:rm -rf dump.rdb 快照文件后重启

            重启redis slave3后出现同步的异常:
            master日志:Connection with slave 47.254.xx.xxx:6380 lost.
            slave3日志:I/O error trying to sync withMASTER: connection lost‘
            现象:slave3上每次同步完成rdb后会不断循环同步 即:从库周期性的在产生temp-rewriteaof-xxx.rdb文件 不断重复  文件为375M
            client-output-buffer-limit参数设置的问题,默认为256Mb 64MB 0
            控制台设置增大限制:2G
            CONFIG SET client-output-buffer-limit "slave 2147483648 1073741824 300"
            配置文件redis.conf
            client-output-buffer-limit slave 2048mb 1024mb 300
            (主从都配置一下)
            命令行设置生效,不需要重启。
            问题还是存在,每次同步完后不断同步
            最后解决:从slave2上将rdb文件拷贝到slave3的redis目录下重启,解决。
            具体原因。。。。。有待探索

原文地址:http://blog.51cto.com/soul455879510/2126560

时间: 2024-12-12 19:44:54

redis 从库数据同步失败——爬坑记的相关文章

redis与mysql数据同步

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步, 二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主 键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键. 1 String tbname = "login"; 2 3 //获取mysql表主键值--redis启动时 4

oracle11g dataguard 备库数据同步的检查方法

概述: 一.环境 主库: ip地址:192.168.122.203 oracle根目录:/data/db/oracle SID:qyq 数据文件路径/data/db/oracle/oradata/qyq 归档文件路径:/data/db/oracle/archive' 备库: ip地址:192.168.122.204 oracle根目录:/data/app/oracle SID:qyq 数据文件路径/data/app/oracle/oradata/qyq 归档文件路径:/data/app/orac

利用脚本实现mysql主库到备库数据同步(每五分钟同步一次增量)

目标: 将主库数据(IP1)每五分钟一次同步到备库(IP2) 服务器备库上,只同步增加量 思路: 利用crontab 每五分钟一次定时执行脚本进行数据同步 在脚本中编译实现查询五分钟内的数据增加量,并将增加量导入到备库 实现过程及代码(以record 表为例): bash脚本中内容 vi transaction.sh----建立transaction脚本实现同步 #!/bin/bash source.bash_profile (由于定时执行的功能使用crontab实现,需要在bash中添加使环境

.NET Core爬坑记 1.0 项目文件

前言: 之所以要写这个系列是因为在移植项目到ASP.NET Core平台的过程中,遇到了一些“新变化”,这些变化有编译方面的.有API方面的,今天要讲的是编译方面的一些问题.我把它们整理后分享出来,以便各位博友不要再遇到这些坑. 在Dotnet Core RC2版本中,project.json 管理着整个项目,包括编译文件.依赖包管理.版本信息.平台依赖与发布等功能. 关于项目中引用: 比如我们一般看到Project.json中一般会有如下内容: "dependencies": { &

使用LiteOrm删除数据对象失败的坑

使用 LiteOrm.newSingleInstance(BaseApplication.getInstance(), Constant.DB_NAME); 在不同进程中创建了两次对象,在保存和删除的时候分别使用了这两个对象,导致删除失败.

微信支付(公众号)爬坑记,包含 total_fee 失败和 JSAPI 签名验证失败等等

做商城类网站不免会需要做支付功能,目前在中国大陆通用的做法就是使用支付宝支付和微信支付,上一篇博文已经讲个支付宝支付. 这篇文章来讲一讲微信支付,微信支付的方式有很多种,本文主要讲 JSAPI 支付的前端部分. 各种配置不细讲. 后台需要生成各种签名后返回给前台调用. 前台调用,微信浏览器提供一个方法 WeixinJSBridge.invoke, 但是这个还需要加上 window 来执行不然会报错, 无法通过. 前端严格按照微信提供的 demo 来写一个字符都不能错,参数一次为:appId, t

Git爬坑记

Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细的 Git教程, 如果看完的话, 相信对 Git的使用理解已经基本不是问题了. 常用Git命令清单 Git 分支 - 何谓分支 Git基础命令 git config --global user.name "myname" git config --global user.email &qu

Spring-Data-JPA 爬坑记

一: 实体类的常用注解 2.1 @Entity 标识这个 pojo 是一个 jpa 实体 2.2 @Table(name = "表名") 指定类对应的数据库表名 2.3 @Id 标记某一字段为表主键 2.4 @GeneratedValue 标记主键生成策略 2.5 @Column 标记为字段,有如下属性 2.5.1 name 对应数据库的字段名,默认为 属性名 2.5.2 unique 是否唯一,默认 false 2.5.3 nullable 是否可以为空 默认为 true 2.5.4

单片机爬坑记-03-编译环境

Arduino IDE是最难用又最好用的单片机IDE,没有之一!难用之处在于没有自动补全(这一点最是难受,但又最是无处说理),库文档也常常不全,时不时就要开Source Insight看看库文件的源代码,很是麻烦:好用之处则在于库管理和开发板管理极为方便,调用某个库的时候需要#include的头文件也是一键完成,尤其适用于新建工程(先把所有头文件#include上)和库管理(开发板相关文件一般不怎么变动). 寻求一个"能自动补全.方便管理项目.省心省事不折腾.能跨平台作业"的IDE是自