Redis(二)主从复制原理及实战配置部署过程

Redis主从复制原理及实战配置部署过程

redis-主从复制(简介):

(master-replicaset)

mysql是从库拉取主库的binlog实现主从复制
redis是主库推送到从库rdb文件实现主从复制
redis主从复制原理:
1)从库向主库发送sync命令。
2)主库接收到sync命令会调用bgsave命令,创建一个RDB文件,并使用缓冲区记录接下来执行的所有写命令
3)当主库执行完bgsave命令时,它会向从库发送RDB文件,而从库则接收RDB文件并载入RDB文件
4)主库将缓冲区储存的所有写命令发送给从库执行

-------------------------------------------------------------------------------------

1)在开启主从复制的时候,使用的RDB方式同步主从数据的
2)同步开始后,主库通过传送命令到从库的方式实现主从复制
3)2.8版本以后实现psync的机制,实现断线重连

img

复制一致性问题:
在读写分离环境下,客户端向主服务器发送写命令SETn10086,主服务器在执行这个写命令之后,向客户端返回回复,并将这个写命令传播给从服务器。
接到回复的客户端继续向从服务器发送读命令GETn,并且因为网络状态的原因,客户端的GET命令比主服务器传播的SET命令更快到达了从服务器。
因为从服务器键n的值还未被更新,所以客户端在从服务器读取到的将是一个错误(过期)的n值。

img

数据一致性参数:
min-slaves-to-write 1       #主库数据至少同步到1台从库(同步后返回确认)
min-slaves-max-lag 10       #主库与从库的网络延时不能超过10秒(超过10秒会返回失败)
断线重连过程:

img

redis-主从复制实战:

  • 在多实例或者多节点部署redis都可以做主从复制,两个redis也可以做,但之后会有哨兵集群需要用到此环境。
  • 当前文章基于redis部署之上进行部署,如为部署请移步:点击跳转

系统:CentOS-7.5
地址:

10.0.0.10   redis-01(master)
10.0.0.20   redis-02(slave)
10.0.0.30   redis-03(slave)
配置hosts文件:(所有节点)
cat >>/etc/hosts<<EOF
10.0.0.10 redis-01
10.0.0.20 redis-02
10.0.0.30 redis-03
EOF
配置模板:(所有节点)
daemonize yes
port 6379
logfile /data/6379/redis.log
bind 10.0.0.10 127.0.0.1
requirepass redhat
dir /data/6379
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec
配置从库master认证:(redis-02节点 与 redis-03节点)
#以下参数是告诉从库,主库的认证密码是redhat
vim /data/6379/redis.conf

masterauth redhat
开启主从:(redis-02节点 与 redis-03节点)
#这个命令是关键点,直接加入配置文件内-----------(建议)
slaveof 10.0.0.10 6379

或

#'redis-02执行
redis-cli -h 10.0.0.20 -a redhat slaveof 10.0.0.10 6379
#redis-03执行
redis-cli -h 10.0.0.30 -a redhat slaveof 10.0.0.10 6379

重启所有节点的Redis服务

查看主从状态:(redis-01节点)
[root@redis-01 ~]# redis-cli -h 10.0.0.10 -p 6379 -a redhat info replication

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrrCSc19-1609206564519)(https://dbawsp.com/uploads/redis/images/m_d16402d8bf953f278b43396f00bc3ecb_r.png)]

数据同步测试:
#redis-01节点
[root@redis-01 ~]# redis-cli -h 10.0.0.10 -p 6379 -a redhat set name olda
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
#redis-02节点 与 redis-03节点
[root@redis-02 ~]# redis-cli -h 10.0.0.20 -a redhat get name
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
"olda"

[root@redis-03 ~]# redis-cli -h 10.0.0.30 -a redhat get name
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
"olda"
关闭复制:
  • 不关闭redis服务之命令交互方式关闭复制
slave of no one
or '-u' option on the command line interface may not be safe.
"olda"
关闭复制:
  • 不关闭redis服务之命令交互方式关闭复制
slave of no one
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在输入中…………

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值