redis的主从复制

1.配置一主一从结构

|----------------|----------|
| IP地址 | 主机名 |
| 192.168.10.161 | redis161 |
| 192.168.10.162 | redis162 |
| 192.168.10.163 | redis163 |

环境准备
bash 复制代码
[root@redis161 ~]# yum install -y redis
[root@redis161 ~]# systemctl stop firewalld &&setenforce 0
修改配置文件
bash 复制代码
[root@redis161 ~]# vim /etc/redis.conf 
bind 192.168.10.161
port 6379
[root@redis161 ~]# systemctl restart redis
[root@redis161 ~]# redis-cli -h 192.168.10.161 -p 6379
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:69b76fe5c2e039cba288e4388eb34668d3bfd65d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
配置salve服务器
bash 复制代码
[root@redis162 ~]# vim /etc/redis.conf
bind 192.168.10.162
port 6379
[root@redis162 ~]# systemctl restart redis
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> replicaof 192.168.10.161 6379
OK
192.168.10.162:6379> config rewrite
OK
192.168.10.162:6379> exit
[root@redis162 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.161 6379
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> info replication
# Replication
role:slave
master_host:192.168.10.161
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:476
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:476
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:476

3)在主服务器host61查看角色

bash 复制代码
[root@redis161 ~]# redis-cli -h 192.168.10.161 -p 6379
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.10.162,port=6379,state=online,offset=1176,lag=0
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1176
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1176
存储数据
192.168.10.161:6379> mset x 1 s 2 z 3
OK
192.168.10.161:6379> keys *
1) "z"
2) "s"
3) "x"

4)在从服务器查看是否同步数据

bash 复制代码
[root@redis162 ~]# redis-cli -h 192.168.10.162 -p 6379
192.168.10.162:6379> keys *
1) "x"
2) "z"
3) "s"
192.168.10.162:6379> mget x z s
1) "1"
2) "3"
3) "2"

2.配置一主多从结构

要求:把host63也配置为host61的从服务器

bash 复制代码
[root@redis163 ~]# vim /etc/redis.conf 
bind 192.168.10.163
port 6379
[root@redis163 ~]# systemctl restart redis
[root@redis163 ~]# redis-cli -h 192.168.10.163 -p 6379
192.168.10.163:6379> info replication 无集群信息
# Replication
role:master
connected_slaves:0
master_replid:79bc218cf3fa5eb9a18417220bb8f7b0372c8859
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.10.163:6379> REPLICAOF 192.168.10.161 6379  #配置主节点信息
OK
192.168.10.163:6379> CONFIG rewrite
OK
192.168.10.163:6379> exit
[root@redis163 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.161 6379
[root@redis163 ~]# redis-cli -h 192.168.10.163 -p 6379
192.168.10.163:6379> keys *
1) "x"
2) "s"
3) "z"

在redis161主机查看

bash 复制代码
192.168.10.161:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.162,port=6379,state=online,offset=1983,lag=0
slave1:ip=192.168.10.163,port=6379,state=online,offset=1983,lag=1
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1983
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1983

3.配置主从从结构

bash 复制代码
要求: 把host63恢复为独立的redis服务器,然后配置为host62的从服务器

192.168.10.163:6379> REPLICAOF no one 清除集群信息
192.168.10.163:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:714d4a8767466a816a5732259b5c08f002921bba
master_replid2:222f317cb008e09781b92761dd79126c34f661ad
master_repl_offset:2529
second_repl_offset:2530
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1914
repl_backlog_histlen:616
192.168.10.163:6379> REPLICAOF 192.168.10.162 6369 配置162主机为master节点
192.168.10.163:6379> config rewrite
OK
192.168.10.163:6379> exit
[root@redis163 ~]# tail -n 1 /etc/redis.conf 
replicaof 192.168.10.162 6379
192.168.10.163:6379> info replication
# Replication
role:slave
master_host:192.168.10.162
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:2529
master_link_down_since_seconds:116
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:714d4a8767466a816a5732259b5c08f002921bba
master_replid2:222f317cb008e09781b92761dd79126c34f661ad
master_repl_offset:2529
second_repl_offset:2530
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1914
repl_backlog_histlen:616

在redis162查看角色

bash 复制代码
192.168.10.162:6379> info replication
# Replication
role:slave
master_host:192.168.10.161
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:2893
slave_priority:100
slave_read_only:1
connected_slaves:1
slave0:ip=192.168.10.163,port=6379,state=online,offset=2893,lag=1
master_replid:222f317cb008e09781b92761dd79126c34f661ad
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2893
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2893
192.168.10.162:6379> 
相关推荐
kura_tsuki3 小时前
[Oracle数据库] Oracle 常用函数
数据库·oracle
YA3334 小时前
java基础(十)sql的mvcc
数据库
weixin_307779138 小时前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
SelectDB8 小时前
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
数据库·人工智能·数据分析
我是哈哈hh8 小时前
【MySQL】在UBuntu环境安装以及免密码登录入门
linux·数据库·mysql·ubuntu
喪彪9 小时前
MySQL新手教学
数据库·mysql·adb
柳贯一(逆流河版)10 小时前
Spring 三级缓存:破解循环依赖的底层密码
java·spring·缓存·bean的循环依赖
丘大梨12 小时前
QT 基础聊天应用项目文档
运维·数据库·系统架构
HMBBLOVEPDX12 小时前
MySQL的多版本并发控制(MVCC):
数据库·mysql·mvcc