redis学习笔记之八:Redis数据复制(主从)

n 复制
Redis支持复制的功能,以实现当一台服务器的数据更新后,自动将新的数据同步到
其它数据库。
Redis复制实现中,把数据库分为主数据库master和从数据库slave,主数据库可以
进行读写操作,从数据库一般是只读的,当主数据库数据变化的时候,会自动同步给从数
据库。


n 复制带来的好处
1:可以实现读写分离
2:利于在主数据库崩溃时的数据恢复


n 复制的配置
主数据库不做配置;从数据库需要在配置中设置“slaveof 主数据库ip 主数据库端口”。
n 复制的基本操作命令
1:info replication :可以查看复制节点的相关信息
2:slaveof:可在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数
据库,那么会停止和原主数据库的同步关系,转而和新的主数据库同步

例:slaveof 127.0.0.1 6379
3:slaveof no one:使当前数据库停止与其他数据库的同步,转成主数据库

n 复制的基本原理
1:slave启动时,会向master发送sync命令,2.8版后发送psync,以实现增量复制
2:主数据库接到sync请求后,会在后台保存快照,也就是实现RDB持久化,并将保
存快照期间接收到的命令缓存起来
3:快照完成后,主数据库会将快照文件和所有缓存的命令发送给从数据库
4:从数据库接收后,会载入快照文件并执行缓存的命令,从而完成复制的初始化
5:在数据库使用阶段,主数据库会自动把每次收到的写命令同步到从服务器
n 乐观复制策略
Redis采用乐观复制的策略,容忍在一定时间内主从数据库的内容不同,当
然最终的数据会是一样的。这个策略保证了性能,在复制的时候,主数据库并不
阻塞,照样处理客户端的请求。
Redis提供了配置来限制只有当数据库至少同步给指定数量的从数据库时,
主数据库才可写,否则返回错误。配置是:min-slaves-to-write、min-slavesmax-lag
 

n 无硬盘复制
当复制发生时,主数据库会在后台保存RDB快照,即使你关闭了RDB,它也会这么做,这样就会导
致:
1:如果主数据库关闭了RDB,现在强行生成了RDB,那么下次主数据库启动的时候,可能会从RDB来恢复数
据,这可能是旧的数据。
2:由于要生成RDB文件,如果硬盘性能不高的时候,会对性能造成一定影响
因此从2.8.18版本,引入了无硬盘复制选项:repl-diskless-sync


n 哨兵(sentinel)
Redis提供了哨兵工具来实现监控Redis系统的运行情况,主要实现:
1:监控主从数据库运行是否正常
2:当主数据库出现故障时,自动将从数据库转换成为主数据库
3:使用Redis-sentinel,redis实例必须在非集群模式下运行
n 开启哨兵功能
建立一个sentinel.conf文件,里面设置要监控的主数据库的名字,形如:
sentinel monitor 监控的主数据库的名字 127.0.0.1 6379 1

用 redis-sentinel  /usr/local/redis4.0/sentinel.conf 启动哨兵机制
注:redis会实时更改sentinel.conf的内容,当主服务挂了之后,从服务被选举变成主服务。

此时 redis会自动写入当前主服务的信息到sentinel.conf  文件中。以便于在成功选举之后的主服务所在机器挂了之后

再次选举主服务。

1 表示选举主数据库的最低票数
(1)这个文件的内容,在运行期间会被sentinel动态进行更改
(2)可以同时监控多个主数据库,一行一个配置即可
  

猜你喜欢

转载自blog.csdn.net/u010800970/article/details/81365256