前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis主从复制

Redis主从复制

作者头像
用户1456517
发布2019-03-05 16:05:12
5000
发布2019-03-05 16:05:12
举报
文章被收录于专栏:芝麻实验室芝麻实验室

环境说明:

代码语言:javascript
复制
- Master:172.18.250.208 [node1]
- Slave 1:172.18.251.4   [node2]
- Slave 2:172.18.252.113 [node2]

时间同步

  • 这是保证redis主从复制正确工作的基础

# ntpdate 172.18.0.1

安装redis

  • 分别在各个节点安装redis, 并设置为开机自启。
代码语言:javascript
复制
[root@node1 ~]# yum -y install redis #Slave节点亦同
[root@node1 ~]# systemctl enable redis 

配置主节点

  • 主服务器只需开放监听,允许复制即可;同时建议开启密码认证,以提升安全性。
代码语言:javascript
复制
[root@node1 ~]# vim /etc/redis.conf 
bind 0.0.0.0 #监听本机所有地址;生产环境中,应根据实际需要开放内网或公网特定IP的监听
requirepass guomai #定义认证密码
[root@node1 ~]# systemctl start redis
[root@node1 ~]# ss -tnlp |grep redis
LISTEN     0      128      *:6379      *:*       users:(("redis-server",pid=10958,fd=4))
  • 定义数据项
代码语言:javascript
复制
[root@node1 ~]# redis-cli 
127.0.0.1:6379> auth guomai
OK
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set Amoy "XiaMen"
OK
127.0.0.1:6379> get Amoy
"XiaMen"
127.0.0.1:6379> exit

配置从节点

  • redis允许通过配置文件配置和通过Redis CLI配置并写入配置文件,因此,这里我将分别通过node2和node3节点演示
  1. 配置文件方式
代码语言:javascript
复制
[root@node2 ~]# vim /etc/redis.conf 
bind 0.0.0.0
requirepass slaveauth #即便是从节点 也应设置密码认证
# slaveof <masterip> <masterport>
slaveof 172.18.250.208 6379
# masterauth <master-password>
masterauth guomai
[root@node2 ~]# systemctl start redis
  • 检验配置是否生效
代码语言:javascript
复制
[root@node2 ~]# redis-cli 
127.0.0.1:6379> auth slaveauth #本地redis密码
OK
127.0.0.1:6379> keys * 
1) "Amoy"
127.0.0.1:6379> get Amoy #说明和Master Redis同步成功
"XiaMen"
  • 当然,我们也可以通过info argument指令判断是否成功成为Slave
代码语言:javascript
复制
127.0.0.1:6379> info Replication
# Replication
role:slave #本机角色
master_host:172.18.250.208 #父节点IP
master_port:6379 #端口
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:535
slave_priority:100
slave_read_only:1 #是否只读; 1表示只读,0表示可读写
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

2.Redis CLI方式

代码语言:javascript
复制
[root@node3 ~]# vim /etc/redis.conf
bind 0.0.0.0
requirepass slavepasswd
[root@node3 ~]# redis-cli 
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@node3 ~]# systemctl start redis 
[root@node3 ~]# redis-cli
127.0.0.1:6379> auth slavepasswd
OK
127.0.0.1:6379> CONFIG GET slaveof 
1) "slaveof"
2) ""
127.0.0.1:6379> CONFIG GET MASTERAUTH
1) "masterauth"
2) ""
127.0.0.1:6379> SLAVEOF 172.18.250.208 6379
127.0.0.1:6379> CONFIG SET MASTERAUTH guomai
OK
127.0.0.1:6379> CONFIG REWRITE #保存到配置文件中; 通过CLI添加的配置项将默认追加到主配末尾(如下图)
OK
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> keys *
1) "Amoy"
127.0.0.1:6379> get Amoy
"XiaMen"
  • 查看本机信息
代码语言:javascript
复制
127.0.0.1:6379> INFO REPLICATION
# Replication
role:slave #当前为Slave
master_host:172.18.250.208
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:1515
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

主节点上查看Slave信息

代码语言:javascript
复制
[root@node1 ~]# redis-cli 
127.0.0.1:6379> auth guomai
OK
127.0.0.1:6379> INFO Replication
# Replication
role:master #本机为Master
connected_slaves:2 #连接到本机的Slave数量
slave0:ip=172.18.251.4,port=6379,state=online,offset=2201,lag=1 #Slave的IP, 请求端口, 状态等相关信息
slave1:ip=172.18.252.113,port=6379,state=online,offset=2201,lag=0
master_repl_offset:2201
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:2200
127.0.0.1:6379> CLIENT LIST #查看客户端连接列表; 也可在Slave上通过该命令查看所有相关连接
id=2 addr=172.18.251.4:38463 fd=5 name= age=1610 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=63 addr=172.18.252.113:33543 fd=6 name= age=620 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=64 addr=127.0.0.1:56950 fd=7 name= age=193 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/11/19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档