redis 主从复制
文章插图
master 节点提供数据,也就是写 。slave 节点负责读 。
不是说master 分支不能读数据,也能只是我们希望将读写进行分离 。
slave 是不能写数据的,只能处理读请求
主从实现客户端 127.0.0.1:6379 服务器 212.64.89.173:6379
方式一客户端发送请求同步命令
slaveof masterip masterport
Copyslaveof 212.64.89.173 6379
方式二客户端启动服务器参数redis-server --slaveof masterip masterport
Copyredis-server --slaveof 212.64.89.173 6379
方式三在客户端的配置文件中写入 slaveof 信息Copyredis.confslaveof 212.64.89.173 6379
注意 断开主从链接方式: 客户端执行 slaveof no one设置链接密码server 端服务启动后设置
Copyconfig set requierpass <password>
配置文件添加密码Copy# redis.confrequirepass <password>
client 端命令设置密码Copyauth <password>
配置文件设置密码Copymasterauth <password>
启动客户端设置密码Copyredis-cli -a <password>
建立连接建立链接的过程就是希望 master和 slave都保有对方的 IP 和 Port 。文章插图
数据同步数据的同步分两部分,全量同步和增量同步,在增量同步结束后,master 应当保存Slave 同步数据的位置 。
文章插图
复制(积压)缓冲区它有两部分组成 偏移量 + 字节值
结构
文章插图
创建1 当启动AOF 时就会创建 复制积压缓冲区
2 当被选为 master 节点,必须创建积压缓冲区
作用保存所有的对数据修改或数据库修改的指令,查询指令不会被记录 。
数据源所有的进入master 的对数据修改或数据库修改的指令都会被填充到积压缓冲区中 。
偏移量1 Master 和 Slave 都会记录 offset 值, 每次复制都会对比offset 是否一致 。如果一致,Master直接从 offset 处开始传缓冲区数据,如果不一致,那么Master将遵循 Slave 的offset 来传 。当然会保证命令是完整的 。
2 Master 保存有多个 offset 而 Slave 仅保存自己的 。
3 Master发送一次,记录一次, Slave 接受一次记录一次 。
关于Master注意1如果master 数据量过大,应该避免业务高峰期进行数据同步 。避免造成 master 阻塞
2 数据缓冲区满, 此时将会丢弃最早的记录(FIFO),如果全量复制的时间开销过大,则可能在开增量复制时候已经存在数据丢失,这会导致Master 和 Slave 数据不一致,为了保证一致性,必须开始新一轮的全量复制,完成后缓冲区又被填满并存在丢弃,则会让Slave进入死循环 。
因此数据缓冲区要设置的大小合适(依具体情况而定) 。
Copyrepl-backlog-size 1mb# 默认的大小为 1MB
3 master 单机内存不应该占用主机内存过多 。一般的 50 ~ 70% 预留下 30% ~ 50%来进行bgsave 、 创建复制缓冲区、执行其他业务等 。关于Slave注意1 为避免slave进行全量复制、部分复制时服务器响应阻塞或数据不同步,建议关闭此期间的对外服务 。
Copyslave-server-stale-data yes|no
【经常用Redis,你知道主从复制吗?】2 数据同步阶段,master发送给 slave 信息可以理解 master是 slave 的一个客户端,主动向slave发送命令 。3 多个slave同时对master请求数据同步,master发送的RDB文件增多,会对带宽造成巨大冲击,如果master宽带不足,因此数据同步需要根据业务需求,适量错峰 。
4 slave过多时,应该对拓扑结构进行调整,由一主多从结构变为树状结构,中间结点即是master,也是slave 。但是使用树状结构时,因为层级越深,数据同步时延越大,因此将强一致性的数据放在顶层节点,一致性稍弱的数据放在靠底层的节点 。
命令传播当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致的状态,同步的动作成为命令传播master将接受到的数据变更命令发送给slave,slave接受命令后执行命令 。
网络闪断闪连 忽略短时间网络中断 部分复制长时间网络中断 全量复制
服务器运行ID(runid)每台服务器每次运行都会产生的身份识别码,同一个服务器多次运行产生的runid是不一样的 。
推荐阅读
- 喜新不厌旧,一招让Windows10找回曾经的经典开始菜单
- 淘宝怎么经营 淘宝开网店如何运营
- 清明节|清明后夜钓,深浅如何选择?鱼群已经转移,还需在这些位置下竿!
- 抵押人未经配偶同意提供的房产抵押是否有效?
- 淘宝网开店时货源如何选择?定价的技巧是什么? 淘宝开店时常用的定价方法
- 淘宝开店之后怎么操作 淘宝开店技巧与经验
- 多巴胺的作用是什么?
- 二十年老白茶,正皓茶业新品预告岁月足迹20载经典之作
- 宜良县宝洪茶山公路通车惠及全县茶叶经济发展
- 茶叶店的经营之道,茶叶悄然晋升为主角