本博客属作者原创,未经允许禁止转载,请尊重原创!如有问题请联系QQ509961766
选择安装版或者压缩版下载都可以。
准备2台windows 服务器,我这里是windows server 2012
主服务:192.168.1.246:6379 (master)
备服务:192.168.1.90:6379(slave)
首先修改主服务master的redis.windows.conf,一共修改3个地方
先启动主服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了从服务ip等信息
然后启动备服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了主服务ip等信息
在主服务器上进入redis安装目录运行redis-cli.exe客户端程序
然后在备服务器上进入redis安装目录运行redis-cli.exe客户端程序,同上
1、Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步
2、Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令
3、Master完成RDB文件后,将其发送给所有Slave服务器
4、Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件
5、Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令
6、全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。(第一次全量)
7、增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步。(之后增量)
8、但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
主机会自动将数据同步到从机,可以进行读写分离,提升性能。
当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,但实际上是一种服务的冗余。
在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
每次slave断开以后(无论是主动断开,还是网路故障)再连接master都要将master全部dump出来rdb,在aof,即同步的过程都要重新执行一遍;所以要记住多台slave不要一下都启动起来,否则master可能IO剧增(间隔1-2分)
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
当有主节点发生异常情况,就会导致不能写入,导致业务出错!解决方法是可以使用Redis-Sentinel哨兵模式,详情见系列文章第二篇。