首页 / REDIS / 五、redis主从复制
五、redis主从复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了五、redis主从复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3710字,纯文字阅读大概需要6分钟。
内容图文
![五、redis主从复制](/upload/InfoBanner/zyjiaocheng/862/300d6018097f48d39d6414e710d593f1.jpg)
主从复制
在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。
建立配置
参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认情况下, Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。
配置复制的方式有以下三种:
1.在配置文件中加入replicaof (masterHost) (masterPort)随Redis启动生效。
2.在redis-server启动命令后加入–replicaof (masterHost} (asterPort)生效。
3.直接使用命令:relicaof (masterHost) (masterPort)生效。
例如:
1、
[root@redis ~]# vim /usr/local/redis/redis.conf
replicaof 192.168.1.70 6379
2、
[root@redis ~]# redis-server /usr/local/redis/redis.conf --slaveof 192.168.1.70 6379
3、
127.0.0.1:6379> SLAVEOF 192.168.1.75 6379
验证:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello //从查看
"world"
Slaveof节点只保留主节点的信息,然后返回复制流程,以异步方式执行 Info replication
127.0.0.1:6379> info replication //主节点查看
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.75,port=6379,state=online,offset=70,lag=1
master_replid:ed8d7f58ca00c3c200af689d8229e9200fdc10a3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70
127.0.0.1:6379> info replication //从节点查看
# Replication
role:slave
master_host:192.168.1.70
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:ed8d7f58ca00c3c200af689d8229e9200fdc10a3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
在主从数据不同步的情况下,主创建数据不会同步成功
需要把主的dump.rdb传到从(dump.rdb是上一章redis持久化)
[root@redis ~]# scp /data/redis/dump.rdb 192.168.1.75:/data/redis/
断开主从复制
Slaveof命令不但可以建立复制,还可以从节点执行slaveof no one断开与主节点的复制关系
127.0.0.1:6379> SLAVEOF no one
断开复制主要流程:
1、断开与主节点复制关系
2、从节点晋升为主节点从节点断开复制后并不会抛弃原有数据,只是无法在获取主节点上的数据变化。
通过slaveof命令还可以切主
切主就是slaveof no one断开主从复制,现在就是双主;
在原主执行slaveof ip(要切换的主的IP) 端口号
就切换成功了
从75:slaveof no one
现在是双主情况
原主70:slaveof 192.168.1.75 6379
切主成功
1 断开与旧主的复制关系
2 与新主的节点建立关系
3 删除从节点当前的所有数据(为了生产安全不要操作!!!!!)
4 对新主节点进行复制操作
只读
默认情况下,从节点使用slave-read-only=yes配置为只读模式。
由于复制只能从主节点到从节点,对于从节点的任何修改主节点都无法感知,修改从节点会造成主从数据不一致。因此建议线上不要修改从节点的只读模式。
127.0.0.1:6379> set hello world
(error) READONLY You can't write against a read only replica.
复制过程的原理
1、保存主节点信息(master)信息
2、从节点内部通过每秒运行的定时任务维护,来复制相关的逻辑,当定时任务发现存在的新的主节点,从节点会尝试与该新主节点建立网络连接;从节点会建立一个socket套接字,专门用于接受主节点发送的复制命令。从节点无法建立链接,定时任务会无限重复,直到链接成功,或执行 slaveof no one
3、连接成功时,从节点发送ping命令,请求进行首次通信
(1)检测主从间网络套接字是否可用
(2)检测主节点当前是否接受处理命令如果发送ping命令后,从节点没有收到主节点的pong回复时,比如网络超时或者主节点正在阻塞无法响应命令,从节点会断开复制连接,下次定时任务会发起重连。
4、执行权限的验证,密码验证
5、同步数据集 psync同步,主节点全部发送给从节点
6、命令持续复制
内容总结
以上是互联网集市为您收集整理的五、redis主从复制全部内容,希望文章能够帮你解决五、redis主从复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。