Redis主从复制

栏目: 数据库 · 发布时间: 5年前

内容简介:Redis的主从复制配置起来比较简单,主从配置有以下特点:在一台节点上配置文件中定义自己是谁的从节点,并且启用主节点密码认证即可。下面使用3台主机配置一主两从的结构,redis使用一主多从的结构时还可以实现像mysql MHA那样的复制集群,当master节点宕机后,可以在两个slave节点中根据优先级选举新的master。环境准备好之后,具体情况如下:

Redis的主从复制配置起来比较简单,主从配置有以下特点:

  1. 一个Master可以有多个slave主机,支持链式复制
  2. Master以非阻塞方式同步数据至slave主机

在一台节点上配置文件中定义自己是谁的从节点,并且启用主节点密码认证即可。下面使用3台主机配置一主两从的结构,redis使用一主多从的结构时还可以实现像mysql MHA那样的复制集群,当master节点宕机后,可以在两个slave节点中根据优先级选举新的master。

  • 安装Redis

    本次采用源码编译的方式安装Redis,执行相关的命令如下:

#下载 redis 安装包
cd /usr/local/src
wget http://download.redis.io/releases/redis-5.0.3.tar.gz

#解压安装包
tar -zxvf redis-5.0.3.tar.gz

#拷贝到/usr/local/redis目录
mkdir -p /usr/local/redis

#编译安装
make & make install

#redis安装完成后,redis-server、redis-cli等程序默认安装在/usr/local/redis/src目录中,我们需要将它安装到系统搜索路径,并安装为系统服务,方便在任何终端访问,并且开机自动启动。

cd /usr/local/src/redis/utils
./install_server.sh

#重复上述安装操作,安装redis到6380和6381端口
./install_server.sh

环境准备好之后,具体情况如下:

三个Redis实例分别安装以下IP地址和端口,角色分别如下

192.168.1.103 6379 master

192.168.1.103 6380 slave

192.168.1.103 6381 slave

  • 配置Master节点
bind 0.0.0.0     #绑定地址 (绑定在127.0.0.1,只有本机客户端可以访问,其他服务器无法访问,绑定在0.0.0.0上,如果没有端口限制,那么其他服务器则可以连接该服务器的该端口)
requirepass 123456   #启用密码认证

#默认master节点修改这两项就可以了,也可以进行其他设置
  • 配置Slave节点
bind 0.0.0.0    
#定义master信息
slaveof 192.168.1.103 6379   
#认证
masterauth 123456  

#从节点上配置这三项页就可以,其他参数可以根据情况选择调整即可。

修改后记得重启服务,可以登录到master节点查看信息。

  • 首先使用client list命令查看
[root@192 bin]# redis-cli -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:44273 fd=7 name= age=2456 idle=1 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf
id=4 addr=127.0.0.1:45342 fd=8 name= age=2453 idle=1 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf
id=6 addr=127.0.0.1:49306 fd=9 name= age=6 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client
127.0.0.1:6379> 

cmd=client     表示是master
cmd=replconf   表示是slave
  • 首先使用info replication 命令查看
127.0.0.1:6379> info replication
# Replication
role:master #自己的角色
connected_slaves:2 #从节点数量
slave0:ip=127.0.0.1,port=6380,state=online,offset=3738,lag=0 #从节点信息
slave1:ip=127.0.0.1,port=6381,state=online,offset=3738,lag=1 #从节点信息
master_replid:061bcdd36e3b8d9a0c38d29dc762e908445baad6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3738
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3738
127.0.0.1:6379>

可以看到主从差不多已经配置好了,接下来可以进行简单的验证复制,在master节点设置一个key,看两个slave节点复制情况。

Master节点创建一个key:

[root@192 bin]# redis-cli -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set jobNo 123456
OK
127.0.0.1:6379>

从slave 6380 :

[root@192 bin]# redis-cli -p 6380 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> get jobNo
"123456"
127.0.0.1:6380>

从slave 6381:

[root@192 bin]# redis-cli -p 6381 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6381> get jobNo
"123456"
127.0.0.1:6381>

可以看出在master上设置的key已经同步到了两个slave上。

slave节点定义也可以通过指令设置,设置后立即生效,并且会被保存至配置文件中,指令配置方式如下:

配置slave节点

redis-cli> SLAVEOF <MASTER_IP> <MASTER_PORT>
redis-cli> CONFIG SET masterauth <PASSWORD>

redis主从复制相关配置

下面是redis主从复制场景的一些可调参数,需要根据实际环境调整

  • slave-serve-stale-data yes : 是否可以把不新鲜的数据服务与客户端
  • slave-read-only yes : 从节点只读,启用slaveof定义后才生效
  • repl-diskless-sync no :是否同时向多个从节点同时发数据
  • repl-diskless-sync-delay 5 :发送的延迟时间
  • repl-ping-slave-period 10 探测从节点状态
  • repl-timeout 60 探测节点超时时间
  • repl-disable-tcp-nodelay no : 启用nodelay
  • repl-backlog-size 1mb
  • slave-priority 100 : 从节点优先级,复制集群中,主节点故障时,sentinel应用场景中的主节点选举时使用的优先级;数字越小优先级越高,但0表示不参与选举;
  • min-slaves-to-write 3:主节点仅允许其能够通信的从节点数量大于等于此处的值时接受写操作;
  • min-slaves-max-lag 10:从节点延迟时长超出此处指定的时长时,主节点会拒绝写入操作;

查看原文

最后更新于 2019-02-27 22:26:15 并被添加「redis」标签,已有 2 位童鞋阅读过。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

逆流而上

逆流而上

阿里巴巴集团成长集编委会 / 电子工业出版社 / 2017-11 / 59.00

本书是阿里巴巴集团荣耀背后的技术血泪史。全书通过分享业务运行过程中各个领域发生的典型“踩坑”案例,帮助大家快速提升自我及团队协作,学习到宝贵的处理经验及实践方案,为互联网生产系统的稳定共同努力。从基础架构、中间件、数据库、云计算、大数据等技术领域中不断积累经验,颠覆技术瓶颈,不断创新以适应不断增长的需求。 本书主要面向互联网技术从业人员和在校师生,使读者能够通过此书基本了解阿里在各技术领域的能力,......一起来看看 《逆流而上》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具