暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第十七章 主从故障恢复(Redis)

蜜蜂点滴 2020-07-09
141

服务器准备:Redis服务器(已经部署好Redis),服务器db02。

Redis:192.168.198.132

db02:192.168.198.146

一、模拟实践:

备份了数据,但是主库不小心同步了空的从库,主库恢复数据。

彻底关闭redies:

#pkill redus

清空数据:

#rm -rf /data/redis_cluster/redis_6379/*

配置文件:

cat >/application/redis_cluster/redis_6379/conf/redis_6379.conf<<EOF

###守护进程启动模式

daemonize yes

###绑定的主机地址

bind 192.168.198.132 127.0.0.1

###监听端口

port 6379

###pid文件和log文件的保存地址

pidfile /application/redis_cluster/redis_6379/pid/redis_6379.pid

logfile /application/redis_cluster/redis_6379/logs/redis_6379.log

###设置数据库的数量,默认数据库为0

database 16

###指定本地持久化的文件名,默认是dump.rdb

dbfilename redis_6379.rdb

###本地数据库的目录

dir /data/redis_cluster/redis_6379

save 60 100

save 300 10

save 600 1

###以下内容注释掉

#appendonly yes

#appendfilename "appendonly.aof"

#appendfsync everysec

#no-appendfsync-on-rewrite no

#auto-aof-rewrite-percentage 100

#auto-aof-rewrite-min-size 64mb

#aof-load-truncated yes

EOF

所有节点启动服务:

redis-server /application/redis_cluster/redis_6379/conf/redis_6379.conf

2、redis主库操作

redis主库上执行:

for i in {1..2000};do redis-cli set k_${i} v_${i};echo "${i} is ok";done

主库生成数据:

redis-cli bgsave

主库备份数据:

#cd /data/redis_cluster/redis_6379/

#cp redis_6379.rdb redis_6379.rdb.bak

#mv redis_6379.rdb.bak /data/redis_cluster/

模拟操作失误,主库同步了从库:

#redis-cli

>slaveof 192.168.198.146 6379

#ps -ef|grep redis

3、redis主库恢复操作:

停掉redis主库的redis服务:

#redis-clis shutdown

检查是否真的停止:

#ps -ef|grep redis

注释掉配置文件里的slaveof:

#slaveof

恢复备份:

#cd /data/redis_cluster/redis_6379/

#cp redis_6379.rdb.bak redis_6379.rdb

启动:

redis-server /application/redis_cluster/redis_6379/conf/redis_6379.conf

检查:

#redis-cli

>keys *

二、主库故障

模拟主库故障

1、主库故障切换到从库

在db02上执行:

#redis-cli

>SLAVEOF 192.168.198.132 6379

查看db02日志:

#tail -f /application/redis_cluster/redis_6379/logs/redis_6379.log

关闭主库redis:(主库宕机)

#redis-cli shutdown

从库一直发生连接错误,主库崩溃,如何尽快恢复业务?

从库db02如何接管:

从库slaveof no one取消主从关系

db02备份数据:

#redis-cli bgsave

#cd /data/redis_cluster/redis_6379/

#cp redis_6379.rdb redis_6379.rdb.bak

2、旧主库redis修复上线:

(1)旧主库启动:

redis-server /application/redis_cluster/redis_6379/conf/redis_6379.conf

(2)旧主库数据恢复

旧主库设置为从库,把db02的数据都复制过来。

#redis-cli

>slaveof 192.168.198.146 6379

(3)主库再次切换到旧主库里:

负载均衡关闭后端负载,防止数据写入。

修复后的从库重新升级为主库

redis>slaveof no one

代码修改为主库的IP,负载均衡重新挂载后端服务。

(4)重新生成主从关系:

从库db02>slaveof 192.168.198.132


文章转载自蜜蜂点滴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论