10 Redis 主从复制

本文详细介绍了Redis的主从复制过程,包括如何搭建环境,配置从库,验证复制成功,以及讨论了一主二从和主从复制原理。此外,还深入探讨了哨兵模式,解释了其在主服务器故障时自动故障转移的机制,以及故障恢复的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 是什么

主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主

2 能干嘛

读写分离,性能扩展
容灾快速恢复

3 主从复制搭建

3.1 根目录下创建目录/myredis

将/etc/redis.conf 配置文件拷贝到/myredis中

[root@localhost chengwen]# mkdir /myredis
[root@localhost chengwen]# cd /myredis/
[root@localhost myredis]# cp /etc/redis.conf /myredis/redis.conf
[root@localhost myredis]# ls
redis.conf

3.2 修改/myredis中redis.conf

appendonly 修改为 no

appendonly no

3.3 vim redis6379.conf

3.3.1 在/myredis 目录下增加配置文件redis6379.conf,并添加配置
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

3.3.1 在/myredis 目录下增加配置文件redis6380.conf,并修改配置
[root@localhost myredis]# cp redis6379.conf redis6380.conf
[root@localhost myredis]# vim redis6380.conf
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb

3.3.1 在/myredis 目录下增加配置文件redis6381.conf,并修改配置
[root@localhost myredis]# cp redis6379.conf redis6381.conf
[root@localhost myredis]# vim redis6381.conf
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

3.4 分别启动三个redis服务

[root@localhost myredis]# redis-server redis6379.conf 
[root@localhost myredis]# redis-server redis6380.conf 
[root@localhost myredis]# redis-server redis6381.conf 
[root@localhost myredis]# 

3.4.1 查看进程是否正常启动
[root@localhost myredis]# ps -ef|grep redis
root      152843    2158  0 04:30 ?        00:00:00 redis-server *:6380
root      152856    2158  0 04:31 ?        00:00:00 redis-server *:6381
root      152966    2158  0 04:33 ?        00:00:00 redis-server *:6379
root      152972  123376  0 04:33 pts/0    00:00:00 grep --color=auto redis
[root@localhost myredis]# 

3.5 通过客户端连接加端口号查看redis信息

3.5.1 通过客户端连接加端口号查看redis6379信息 info replication

role:master 说明是角色是主机Master

[root@localhost myredis]# redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:1ecba680652395416fe8bd719da26c6564a957d5
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
127.0.0.1:6379> 
3.5.2 通过客户端连接加端口号查看redis6380信息 info replication

role:master 说明是角色是主机Master

[chengwen@localhost redis]$ redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:ad3b7ea9b5309fe5b1974333a68cd95a2c60e2df
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
127.0.0.1:6380> 

3.5.3 通过客户端连接加端口号查看redis6381信息 info replication

role:master 说明是角色是主机Master

[chengwen@localhost ~]$ redis-cli -p 6381
127.0.0.1:6381> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:08aebaa422e9096f8efb3ec263e8334f208ae017
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
127.0.0.1:6381> 

3.6 配置从库不配置主库

slaveof
ip为主库的ip
port为主库的port

3.6.1 在6380客户端执行slaveof 127.0.0.1 6379
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK

6380 角色变为role:slave

127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
127.0.0.1:6380> 

6379主库信息显示了从库信息 slave0:ip=127.0.0.1,port=6380

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=154,lag=1
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154
127.0.0.1:6379> 

3.6.1 在6381客户端执行slaveof 127.0.0.1 6379

在6381客户端执行

127.0.0.1:6381> slaveof 127.0.0.1 6379
OK

6381 角色变为role:slave

127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:1120
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1120
second_repl_offset:-1
repl_backlog_active

6379主库信息显示了从库信息slave1:ip=127.0.0.1,port=6381

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=1232,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=1232,lag=1
master_failover_state:no-failover
master_replid:8a4e81ca75627b83cf7fc1d68f1b07f26680c845
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1232
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1232
127.0.0.1:6379> 

3.7 验证主从复制

3.7.1 在主库写入键值对,在从机查看可以复制成功
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k1 v1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值