美文网首页
Redis数据库--主从复制

Redis数据库--主从复制

作者: 荆俊玮 | 来源:发表于2019-12-05 00:01 被阅读0次

一、环境准备

搭建俩台Redis相同的数据库,Redis数据库搭建请参考:https://www.jianshu.com/p/204dcfc4d0ab

1.环境说明

安装包存放路径:/server/tools
配置文件:/opt/redis_6379/conf/redis_6379.conf
应用软件包路径:/opt/redis(软连接文件)
数据存储路径:/data/redis_6379
Redis主数据库:db01:10.0.0.51
Redis从数据库:db02:10.0.0.52

2.测试数据生成

使用脚本或命令在主数据库中插入key,从数据库为无数据的状态,并且此时主从数据库均不开启认证功能
db01:

for i in `seq 1000`;do redis-cli set k$i v$i;done
redis-cli 
127.0.0.1:6379> DBSIZE
(integer) 1000
cat /opt/redis_6379/conf/redis_6379.conf|grep "^#r"
#requirepass "123456"

db02:

cat /opt/redis_6379/conf/redis_6379.conf|grep "^#r"
#requirepass "123456"
redis-cli 
127.0.0.1:6379> DBSIZE
(integer) 0

二、主从复制命令

1.主从复制开启

方法1:临时生效:SLAVEOF 主库IP地址 端口号

SLAVEOF 10.0.0.51 6379
127.0.0.1:6379> SLAVEOF 10.0.0.51 6379
OK
127.0.0.1:6379> DBSIZE
(integer) 1000

说明:在主从复制过程中是由从库起始发出请求信息,因此临时开启的命令需要在从库上进行

方法2:写入配置文件

说明:当临时开启主从复制后,再将从库的Redis数据库关闭,此时重新启动数据库后,主从复制关系取消,如图所示:

image.png
因此,使Redis数据库永久生效需在配置文件中添加参数
### 以守护进程模式启动,在后台运行
daemonize yes
### 绑定的主机地址
bind 10.0.0.52 127.0.0.1
### 监听端口
port 6379
### pid文件和log文件的保存地址
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log
### 设置数据库的数量,默认数据库为0
databases 16
### 指定本地持久化文件的文件名,默认是dump.rdb
dbfilename redis_6379.rdb
### 本地数据库的目录
dir /data/redis_6379
### 触发RBD持久化保存条件
#900S内有一个key生成触发RDB快照持久化
save 900 1
#300S内有十个key生成触发RDB快照持久化
save 300 10
#60S内有一万个key生成触发RDB快照持久化
save 60 10000
### 开启AOF独立日志持久化功能
##设置AOF独立日志名称
appendfilename "redis_6379.aof"
##AOF持久化功能开关
appendonly yes
##AOF重写时间设置--everysec每秒重写 
appendfsync everysec
##AOF回写机制算法及触发条件,默认AOF文件大小超过64MB时触发
#auto-aof-rewrite-percentage 100
#auto-aof-rewrite-min-size 64mb
###永久开启主从复制
SLAVEOF 10.0.0.51 6379
### 登陆密码
#requirepass "123456"

2.取消同步命令:

10.0.0.52:6379> SLAVEOF no one
OK

说明:当从库开启主从复制后,从库就不具备写或删除的权限,变为只读权限,而当主库发生故障时,从库会不断的一直向主库发生连接请求,不会自动识别主库宕机的问题,因此此时需要手动取消同步,使得从库恢复单节点状态,变为可读可写

10.0.0.52:6379> SLAVEOF 10.0.0.51 6379
OK
10.0.0.52:6379> 
10.0.0.52:6379> set kc vc
(error) READONLY You can't write against a read only slave.
10.0.0.52:6379> get ka
"va"
10.0.0.52:6379> del  ka
(error) READONLY You can't write against a read only slave.

生产环境中正是因为这个缺陷,导致Redis数据库主从复制应用场景极少,为了改善这个缺陷,Redis哨兵概念产生。

3.主从复制流程:

从库发起同步请求
11:55:12.686 * Connecting to MASTER 10.0.0.51:6379
11:55:12.687 * MASTER <-> SLAVE sync started
11:55:12.687 * Non blocking connect for SYNC fired the event.
11:55:12.687 * Master replied to PING, replication can continue...
11:55:12.688 * Partial resynchronization not possible (no cached master)
11:55:12.690 * Full resync from master: c63b80909e49adfa3880dcc87ccffb89d148a564:436

主库接收请求
11:55:12.694 * Slave 10.0.0.52:6379 asks for synchronization
11:55:12.694 * Full resync requested by slave 10.0.0.52:6379

主库开始BGSAVE
11:55:12.694 * Starting BGSAVE for SYNC with target: disk
11:55:12.695 * Background saving started by pid 13009
(生成子进程开始进行BGSAVE,持久化操作)
11:55:12.700 * DB saved on disk
11:55:12.700 * RDB: 6 MB of memory used by copy-on-write

从库接收主库的数据,清空自己的数据,然后将主库发送过来的RDB文件加载到内存中
11:55:12.780 * MASTER <-> SLAVE sync: receiving 12887 bytes from master
11:55:12.781 * MASTER <-> SLAVE sync: Flushing old data
(刷新以前的数据,此时正在进行清空从库数据操作)
11:55:12.781 * MASTER <-> SLAVE sync: Loading DB in memory
(将从主库复制来的RBD文件写入到内存中,生成数据)
11:55:12.782 * MASTER <-> SLAVE sync: Finished with success

主库接收从库消息,主从复制成功
11:55:12.786 * Background saving terminated with success
11:55:12.786 * Synchronization with slave 10.0.0.52:6379 succeeded
注意:在进行主从复制的过程中,由于从库会进行清空旧数据的操作,因此在手动执行临时开启主从复制的同时,一定要注意是否在从库上开启的,否则会导致,主库清空数据,后果严重。

相关文章

  • redis搭建主从复制和哨兵模式

    主从复制配置 redis主从复制 概述 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(m...

  • redis包含三种集群策略

    redis包含三种集群策略1,主从复制,2,哨兵3,集群 主从复制 在主从复制中,数据库分为俩类,主数据库(mas...

  • Redis|主从复制与哨兵机制

    1. Redis主从复制 1.1 Redis主从复制 Redis主从复制主要有两个角色,主机(master)对外提...

  • Redis同步和持久化机制

    一、Redis的主从复制Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master),一类是...

  • Redis主从复制之数据同步

    前言:redis数据同步是redis主从复制的第二个阶段。该阶段实现slave初次连接或断线重连后redis数据库...

  • 【Redis学习笔记】13 Redis 主从复制

    1. Redis 主从复制特性 2. Redis 主从复制流程 3. Redis 主从复制操作 IP地址端口角色1...

  • Redis主从复制

    Redis主从复制 一.主从复制介绍 1.Redis复制功能介绍 1)Redis 使用异步复制。从 Redis2....

  • Redis的高可用

    Redis主从复制 什么是主从复制 Redis有三种集群方案,主从复制,哨兵,cluster集群,主从复制是指将一...

  • redis(二)

    Redis用户认证 禁用危险命令 主从复制的过程 主从复制的部署 哨兵 Redis哨兵+主从+密码 Redis哨兵...

  • redis sentinel 主从切换(failover)解决方

    主从复制简单来说就是把一台redis数据库中的数据同步到另一台redis数据库,并且按照数据流向,数据的发送者我们...

网友评论

      本文标题:Redis数据库--主从复制

      本文链接:https://www.haomeiwen.com/subject/rihrgctx.html