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> 
相关推荐
fen_fen16 小时前
Oracle建表语句示例
数据库·oracle
砚边数影17 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt17 小时前
Djiango配置Celery
数据库·sqlite
云小逸18 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
肉包_51118 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总19 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
ALex_zry19 小时前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
此刻你19 小时前
常用的 SQL 语句
数据库·sql·oracle
それども20 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·20 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb