redis mysql主从分离_Redis主从同步,读写分离

1. Redis主从同步

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。

2. 配置主从同步

Mater Slave的模式,从Slave向Master发起SYNC命令。

可以是1 Master 多Slave,可以分层,Slave下可以再接Slave,可扩展成树状结构。

2.1 配置Mater,Slave

配置非常简单,只需在slave的设定文件中指定master的ip和port

Master: test166

修改设定文件,服务绑定到ip上

重启Redis

# systemctl restart redis

Slave: test167

修改设定文件,指定Master

也可以用命令行设定:

2.2同期情况确认

Master:

Slave:

同期正常时:

master_link_status:up

master_repl_offset和slave_repl_offset相等,

master_last_io_seconds_ago在10秒内。

2.3 Slave升级为Master

Master不可用的情况下,停止Master,将Slave的设定无效化后,Slave升级为Master

2.4 Health Check

Slave按照repl-ping-slave-period的间隔(默认10秒),向Master发送ping。

如果主从间的链接中断后,再次连接的时候,2.8以前按照full sync再同期。2.8以后,因为有backlog的设定,backlog存在master的内存里,重新连接之前,如果redis没有重启,并且offset在backlog保存的范围内,可以实现从断开地方同期,不符合这个条件,还是full sync

用monitor命令,可以看到slave在发送ping

2.5设置Master的写行为

2.8以后,可以在设定文件中设置,Master只有当有N个Slave处于连接状态时,接受写操作

3. Redis HA管理工具

redis-sentinel 能监视同期的状态,发现Master down的时候,会进行failover,将Slave升级为Master,启动后会自动更新sentinel设定文件,发生failover时,会自动修改sentinel和redis的设定文件

环境:

Master: 10.86.255.167 :6379    sentinel:26379

Slave1: 10.86.255.166 :6379   sentinel:26379

Slave2: 10.86.255.167 :7379   sentinel:36379

Sentinel的设定文件在/etc/redis-sentinel.conf,对failover的动作等可以进行一些定义,本次主要验证Sentinel的动作,设定文件可以根据具体情况自行调整

3.1 设定Master,Slave

参照上文设定Master,Slave,并确认Mater和2个Slave的同期状态正常

3.2 Master上设定Sentinel

启动sentinel

确认

1778f0edca612c1f28e93917a17f3e3c.png

确认Master信息

09bb91f8f81fa25c244c85e12b9322e8.png

确认Slave信息

6c888c4dee07ae0edcd8ed713a69faa3.png

3.3 Slave上设定Sentinel

在slave1上设定sentinel

启动slave1

在slave2上设定sentinel

启动slave2

3.4 动作确认

停止Master

确认日志发生fail over

确认Slave2变成Master,Slave1是Slave

ad001d60117de900ca86c003c840a347.png

216cde6a5f984127de5ec433065193f1.png

启动刚才停掉的Master,确认变为Slave

a0fc2bad9e4c435abf77e2113b1d96be.png

3.5 Sentinel命令

4. 后记

本文介绍了Redis主从同步,读写分离,及HA,后续会继续研究Redis。

下面关于Redis的文章您也可能喜欢,不妨参考下:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RedisMySQL主从复制的架构中,读写过程通常包括以下步骤: 1. 客户端连接Redis主服务器。客户端通过TCP/IP协议连接Redis主服务器,并进行身份验证。 2. 客户端发送Redis命令。客户端向Redis主服务器发送命令,包括读取和写入操作。 3. Redis主服务器执行命令。Redis主服务器根据接收到的命令执行相应的操作,包括读取和写入数据。 4. Redis主服务器将写入操作同步到MySQL主服务器。Redis主服务器将写入操作同步到MySQL主服务器上,保证数据的持久化。 5. MySQL主服务器将写入操作同步到MySQL从服务器。MySQL主服务器将写入操作同步到MySQL从服务器上,保证数据的复制和备份。 6. 客户端连接Redis从服务器或MySQL从服务器。客户端可以选择连接Redis从服务器或MySQL从服务器进行读取操作。如果连接Redis从服务器,则可以充分利用Redis从服务器的读取性能;如果连接MySQL从服务器,则可以保证数据的一致性和可靠性。 7. 客户端发送读取命令。客户端向Redis从服务器或MySQL从服务器发送读取命令。 8. Redis从服务器或MySQL从服务器执行读取命令。Redis从服务器或MySQL从服务器根据接收到的读取命令执行相应的操作,包括读取数据并返回结果。 9. Redis从服务器或MySQL从服务器将结果返回给客户端。Redis从服务器或MySQL从服务器将执行结果返回给客户端,客户端进行相应的处理。 在RedisMySQL主从复制的架构中,主服务器负责写操作和数据同步,从服务器负责读操作和数据复制。这样可以充分利用RedisMySQL各自的优势,同时保证数据的一致性和可靠性。但是需要注意的是,主从复制架构中可能存在数据同步延迟和数据不一致等问题,需要根据实际需求进行相应的优化和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值