redis主从同步的简单应用

redis主从同步应用介绍

在使用redis缓存的时候,再优化的redis服务器也会有宕机的时候,这个时候我们就需要对redis做一些能够预防的措施,比如哨兵模式+集群,哨兵模式+多源缓存(类似于分区存储的方式)等等多种解决方案,这里讲的是第一种 etc.

运行客户端 redis-cli --raw 中文显示(redis使用过程中显示乱码)

1、主库:master 配置介绍(redis.conf){此文件的路径在redis的解压文件下}

bind ip
开启线程守护
daemonize yes (哨兵模式开启必备)
连接master (主从切换必备)
#masterauth 密码 (从库密码【密码存在】)

设置主从同步不超过10s
min-slaves-to-write 1 默认0 降级
min-slaves-max-lag 10

2、从库:salveof 配置介绍(redis.conf中修改){和上面一样,相同的整个文件夹copy一份作为从库}

slaveof 192.168.10.1 6379 绑定主库id 端口
daemonize yes (哨兵模式开启必备)
#masterauth 密码 (主库密码【密码存在】)

3、哨兵模式:(和从库一样copy)

新建文件:sentine.conf
命令:redis-server.exe sentinel.conf --sentinel

#保护模式
protected-mode no

#端口
port 26380

#守护进程
#daemonize yes

#设置pid文件路径
pidfile /opt/redis/sentinel_26380.pid

#工作路径,不用改
dir /tmp

#设置日志文件路径
#logfile /opt/redis/logs/sentinel26380.log

4、哨兵模式介绍

#哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
#(objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
#slaves是自动发现,不用指定slaves。 mymaster 给主库命的名
2表示一主一从(2个)
sentinel monitor mymaster 192.168.2.11 6379 2

#master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 30000

#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
sentinel parallel-syncs mymaster 1

#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 180000

#设置master和slaves的密码
sentinel auth-pass mymaster redis2016



sentinel monitor mymaster 192.168.2.11 6379 2

这个要配局域网IP,否则远程连不上,

最后的quorum最好配成2,不要配成1,否则容易切换失败

测试时可以把

sentinel down-after-milliseconds mymaster 30000 参数设短点,减少等待时间

daemonize no

logfile “”》以下都是redis的sentinel文件sentinel.conf文件中的配置


备份

appendonly yes #启用AOF持久化方式
appendfilename “appendonly.aof” #AOF文件的名称,默认为appendonly.aof
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。

save 900 1 #启用RDB快照功能,默认就是启用的
save 300 10
save 60 10000 #即在多少秒的时间内,有多少key被改变的数据添加到.rdb文件里

dbfilename dump.rdb #快照文件名称

生成配置

修改dbfilename(生成的数据库文件名)
dbfilename “dump端口.rdb”
还需要修改dir(本地数据库目录)
dir “/usr/local/redis/datadir” (别忘了创建这个datadir文件夹,并且要主要权限哦)


主从恢复

那么现在要重新将主节点切换回去。步骤如下:

a)登录临时切换的主节点slave-node1

[root@slave-node1 ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set name chenchen
OK
127.0.0.1:6379> get name
“chenchen”
127.0.0.1:6379> save //将数据保存
OK

b)将现在的主redis(即slave-node1节点,临时设置的主节点)根目录下app文件和dump.rdb文件拷贝覆盖到原来主redis的根目录(覆盖前将原来主redis下的持久化文件备份下)命令如下

[root@slave-node1 ~]# rsync -e “ssh -p22” -avpgolr /var/redis/redis/dump.rdb 172.16.0.237:/var/redis/redis/
[root@slave-node1 ~]# rsync -e “ssh -p22” -avpgolr /var/redis/redis/appendonly.aof 172.16.0.237:/var/redis/redis/

c)重启原来的主redis(即master-node节点)

[root@master-node ~]# /etc/init.d/redis stop
[root@master-node ~]# /etc/init.d/redis start

d)在现在的主redis(即slave-node1)中切换(或者直接重启该节点的redis,因为redis.conf文件中已经配置了;如果不想重启redis,就使用下面的命令)

[root@slave-node1 ~]# redis-cli -h 127.0.0.1(这里可以是远程ip,在允许访问的情况下,能ping通) -p 6379 slaveof 172.16.0.237 6379
OK

e)登录原来的主redis(也就是master-node)查看

[root@master-node ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info

#Replication
role:master
connected_slaves:1
slave0:ip=从库ip,port=6379,state=online,offset=1,lag=0
master_repl_offset:1

总结:在使用的主从同步的时候,哨兵也可以集群,记得把哨兵的name改名,原理一样

以上是个人分享,这里就不截图了,所有的命令都是可行的(使用过),部分ip是例子ip,记得区分。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值