Redis 学习之主从复制详解程序员
Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
Redis主从复制:主从复制可以允许多个slave server 拥有和master server相同的数据库副本
1、Redis主从复制的特点:
a、 master 可以有多个slave
b、 多个slave 可以链接同一个master外,还可以链接其他slave
c、 主从复制不会阻塞master,在数据同步的时候,master可以继续处理client请求
d、 提高系统的伸缩性
2、Redis主从复制的过程:
a、 slave与master建立链接,发送sync同步请求。
b、 master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。
c、 后台完成保存后,就将此文件发送给slave
d、 Slave将此文件保存到硬盘上。
3、Redis 主从复制操作步骤
环境:
Redis主从结构支持一主多从(所有从节点的配置都一样)
master:192.168.6.190
slave:192.168.6.191
配置slave服务器,在slave服务器的配置文件中加入一下代码
slaveof 192.168.222.1 6379 #指定master的ip和端口
Masterauth jalja #主机密码
# Master-Slave replication. Use slaveof to make a Redis instance a copy of # another Redis server. A few things to understand ASAP about Redis replication. # 1) Redis replication is asynchronous, but you can configure a master to # stop accepting writes if it appears to be not connected with at least # a given number of slaves. # 2) Redis slaves are able to perform a partial resynchronization with the # master if the replication link is lost for a relatively small amount of # time. You may want to configure the replication backlog size (see the next # sections of this file) with a sensible value depending on your needs. # 3) Replication is automatic and does not need user intervention. After a # network partition slaves automatically try to reconnect to masters # and resynchronize with them. # slaveof masterip masterport slaveof 192.168.6.190 6379 # If the master is password protected (using the "requirepass" configuration # directive below) it is possible to tell the slave to authenticate before # starting the replication synchronization process, otherwise the master will # refuse the slave request. # masterauth master-password masterauth jalja
启动master服务器:
[[email protected] bin]# ./redis-server /usr/local/redis/etc/redis.conf
查看master配置信息:127.0.0.1:6379 info
slave0:ip=192.168.6.191,port=6379,state=online,offset=141,lag=0 master_repl_offset:141 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:140
启动slave服务器:
[[email protected] bin]# ./redis-server /usr/local/redis/etc/redis.conf
查看slave配置信息:127.0.0.1:6379 info
# Replication role:slave master_host:192.168.6.190 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:99 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
测试:
master:
127.0.0.1:6379 keys * (empty list or set) 127.0.0.1:6379 set name jalja 127.0.0.1:6379
slave:
127.0.0.1:6379 keys * (empty list or set) 127.0.0.1:6379 set name jalja 127.0.0.1:6379
配置时遇到错误:master_link_status:down
1、确定master与slave的redis端口是开放的,未被防火墙拦截
2、修改 master redis.cnf 文件中bind 为bind 0.0.0.0
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/6396.html
服务器部署程序员系统优化网站设置运维相关文章
- 学习Redis:实现快速而强大的数据访问(redis用法)
- Redis论坛:学习、交流、分享(redis论坛)
- Redis配置文件下载,方便快捷。(redis配置文件下载)
- 快速学习:如何连接使用 Redis?(redis怎么连接)
- Slots和Redis:如何优化数据分配和存储性能?(slots redis)
- 学习进入Redis容器的简单方法(怎么进入redis容器)
- 彻底改变工作效率每秒刷新Redis(每秒刷新redis)
- 百度开源Redis实现稳定运行(百度开源redis)
- 深入浅出学习如何查询Redis字段(查redis字段)
- 深度探索Redis解析大数据存储的最新奥秘(深入学习redis)
- 什么时候开始学习Redis(什么时候才能学redis)
- 如何使用TP5框架操作Redis(tp5怎么操作redis)
- 高效利用单机Redis实现分区(单机redis如何分区)
- 了解Redis,开启新世界(怎么样开启redis)
- 从0开始学习克隆Redis代码(克隆redis代码)
- 如何面对Redis源码分层理解精益求精(如何学习redis源码)
- 揭秘大数据时代Redis能为你做什么(大数据 redis作用)
- 本地缓存与Redis同步协同创新的提升效率之路(本地缓存同步redis)
- 学习Redis源码在研究分布式原理中获取灵感(如何阅读redis源码)
- Redis集群负载不均衡的解决方案(redis集群不均匀)
- 利用Redis队列实现顺序消息消费(redis 队列顺序消费)
- 基于Redis的多读取队列设计实践(redis 队列 多读取)
- Redis暂停服务这到底是怎么回事(redis起不起来)
- 简单上手Redis设置密码4步骤实现(redis设置密码4)
- Redis聪明节省学习使用帮助命令(redis获取帮助命令)
- 深度学习Redis自增序列的使用(redis自增序列使用)
- Redis评论缓存高效实现社交流畅(redis评论缓存方案)