天下風雲出我輩
一入江湖歲月催

Redis主从复制

在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器能精确得复制主 Redis 服务器的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。

这个系统的运行依靠三个主要的机制:

  • 当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave , 包括客户端的写入、key 的过期或被逐出等等。
  • 当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master 并会尝试进行部分重同步:这意味着它会尝试只获取在断开连接期间内丢失的命令流。
  • 当无法进行部分重同步时, slave 会请求进行全量重同步。这会涉及到一个更复杂的过程,例如 master 需要创建所有数据的快照,将之发送给 slave ,之后在数据集更改时持续发送命令流到 slave 。

Redis使用默认的异步复制,其特点是低延迟和高性能,是绝大多数 Redis 用例的自然复制模式。但是,从 Redis 服务器会异步地确认其从主 Redis 服务器周期接收到的数据量。

Redis支持一主多从以及多级串联

一、机器规划

192.168.0.80      Master

192.168.0.81       Slave

二、更改配置文件

Master:

bind 192.168.0.80 
daemonize yes #后台运行
appendonly yes #开启AOF持久化
requirepass [email protected]#456   #密码

Slave:

bind 192.168.0.81
slaveof 192.168.0.80 6379   #连接Master
masterauth [email protected]#456     #Master密码
daemonize yes #后台运行
appendonly yes #开启AOF持久化

三、重启服务后登录验证

Master:

# redis-cli -h 192.168.0.80 -p 6379 -a '[email protected]#456'

192.168.0.80:6379> SET name1 adc
OK

Slave:

# redis-cli -h 192.168.0.81 -a '[email protected]#456'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.60:6379> keys *
1) "name1"

四、查看节点状态:

Master:

192.168.0.80:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.0.81,port=6379,state=online,offset=56882,lag=1
master_replid:099bf0e04307f09cf1c4b662dba0ad8e9f024aa0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56882
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56882

Slave:

192.168.0.81:6379> info replication
# Replication
role:slave
master_host:192.168.0.80
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:714
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:099bf0e04307f09cf1c4b662dba0ad8e9f024aa0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:714
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:714
赞(2) 打赏
未经允许不得转载:Anonym0x1 » Redis主从复制

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏