ecilpse做网站,app定制制作价格,小学生摘抄新闻2024版四年级,云南手工活外发加工网Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式
主从复制 将主节点的数据改变同步给从节点 作用 备份数据读写分离 存在的问题#xff1a; 手动干预切主等操作主节点的写能力受到单机限制主节点的存储能力受到单机限制
主从模式的故障恢复
当主节点发生故障时 手动干预切主等操作主节点的写能力受到单机限制主节点的存储能力受到单机限制
主从模式的故障恢复
当主节点发生故障时客户端连接主节点失败两个从节点和主连接失败人工选取一个从节点slaveof no one使其成为新的主节点更新应用方信息重启让另一个从节点连接新主原来的主恢复作为从去连接新主
哨兵
blog
拓扑结构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDHbOoMx-1572053628652)(media/15653345582593/%206.2%20%E6%8B%93%E6%89%91%EF%BC%88171%EF%BC%89.png)]
复制配置
复制过程
命令slaveof slaveof 127.0.0.1:6379
保存主节点信息 执行slaveof后会打印日志
id38 addr127.0.0.1:47458 fd6 name age2700 idle0 flagsN db0 sub0 psub0 multi-1 qbuf0 qbuf-free32768 obl0 oll0 omem0 eventsr cmdclient
参数 含义
id 客户端连接的唯一标识这个id是随着Redis的连接自增的重启Redis后会重置为0。
addr 客户端的地址和端口
fd 套接字所使用的文件描述符
age 以秒计算的已连接时长
idle 以秒计算的空闲时长看 ageidle时则此链接为空连接
flags 客户端 flag
db 该客户端正在使用的数据库 ID
sub 已订阅频道的数量
psub 已订阅模式的数量
multi 在事务中被执行的命令数量
qbuf 输入缓冲区总量字节为单位 0 表示没有分配查询缓冲区
qbuf-free 输入缓冲区剩余容量字节为单位 0 表示没有剩余空间
obl 输出缓冲区的长度字节为单位 0 表示没有分配输出缓冲区
oll 输出列表包含的对象数量当输出缓冲区没有剩余空间时命令回复会以字符串对象的形式被入队到这个队列里
omem 输出缓冲区和输出列表占用的内存总量
events 文件描述符事件
cmd 最近一次执行的命令主从建立socket连接 每秒运行定时任务维护复制逻辑直到成功或者slaveof no one取消复制连接失败Error condition on socket for SYNC:{socket_error_reason} 发送pingmingling 检查主从质检网络套接字是否可用检测主从节点当前是否可接收处理命令日志Master replied to PING, replication can continue... 权限验证 5. 主节点如果配置了requirepass,就需要认证 6. 从节点配置相应的masterauth。同步数据集命令持续复制 7. 上面的操作已经把数据同步完了后面就持续把写命令发送给从库
数据同步
复制偏移量
主节点在处理完毕写入命令之后会把命令的字节长度做累加记录统计信息在master_repl_offset对比主从节点的复制偏移量判断是否数据一致
复制积压缓冲区(repl_backlog) 保存在主节点上的一个固定长度的队列默认为1M 保存最近已复制的数据用于部分复制和复制命令丢失的数据补救 参数含义 repl_backlog_active:1开启复制缓冲区repl_backlog_size:1048576缓冲区最大长度repl_backlog_first_byte_offset:2起始偏移量计算当前缓冲区 可用范围repl_backlog_histlen:969335已保存数据的有效长度
参数信息
主库(info replication) 127.0.0.1:7001 info replication
# Replication
role:master
connected_slaves:1
slave0:ip127.0.0.1,port7004,stateonline,offset969336,lag1
master_repl_offset:969336
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:969335从库(info replication)
127.0.0.1:7004 info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:7001
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:969350
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0主节点运行id
节点启动后动态分配的ID用于唯一识别节点ID变更后会发生全量复制
重启后会改变需要使用debug reload命令重启并保持ID不变命令会阻塞当前节点主线程阻塞期间先生成rdb快照并清空数据后再加载rdb文件。对于大数据量的主节点和无法容忍阻塞的应用场景慎用
参数
127.0.0.1:7002 info server
# Server
redis_version:3.2.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:53849fee5fb41517
redis_mode:cluster
os:Linux 3.10.0-957.1.3.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:24334
run_id:698e129042d03211b71e7c3117e37731a3bc5eca
tcp_port:7002
uptime_in_seconds:700399
uptime_in_days:8
hz:10
lru_clock:4879595
executable:/usr/local/redis/3.2/redis-server
config_file:/etc/redis.d/redistest_7002.confpsync178)
从节点使用psync命令完成部分复制和全量复制功能。
总览图