Redis主从复制的配置过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis主从复制的配置过程相关的知识,希望对你有一定的参考价值。

参考技术A 有两个已经启动的redis节点:

现在需要将上述redis节点配置为主从复制。

在redis的配置文件中加上 slaveof <host> <port> 即可实现。
配置前,查看m161p114中的内容如下:

如下,在服务器192.168.161.115节点的redis的配置文件中增加如下配置:

之后重启redis服务:

此时查看m161p115中的key:

这与m161p114中的内容一致。这说明配置生效,启动从库数据会直接同步。
此后,从库m161p115将变为只读状态,无法再set内容:

将配置文件中新增的slaveof 注释掉,再重启redis,则主从复制就会关闭,不过从库中的数据不会清除。
当然,主从复制也可以不在配置文件中配置,而直接在命令行中执行命令:

这样数据就会同步过来。
通过info可以看到主从建立成功:

从节点的断开
在从节点执行,slaveof no one 即可。

之后从节点就会变成master状态,但是数据不会清除。如果要清除数据,需要执行flashall
从建立主从复制到断开过程的日制:

redis配置和主从复制

Redis主从复制过程原理

1.当从库和主库建立MS关系后,会向主数据库发送SYNC命令
2.主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来
3.当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis
4.从Redis接收到后,会载入快照文件并且执行收到的缓存的命令
5.之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致

基本配置

daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
bind 0.0.0.0
unixsocket /usr/local/redis/var/redis.sock
unixsocketperm 755
timeout 300
loglevel verbose
logfile /data/redis/redis.log
# syslog-enabled no
# syslog-ident redis
# syslog-facility local0
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data/redis/dbcache
# slaveof <masterip> <masterport>
# masterauth <master-password>
# repl-ping-slave-period 10
# repl-timeout 60
requirepass $password
# rename-command CONFIG ""
# maxclients 0
# maxmemory <bytes>
# maxmemory-policy volatile-lru
# maxmemory-samples 3
appendonly no
appendfilename appendonly.aof
appendfsync always
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 128
# vm-enabled no
# vm-swap-file /data/dbcache/redis.swap
# vm-max-memory 0
# vm-page-size 32
# vm-pages 134217728
# vm-max-threads 4
# glueoutputbuf yes
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes 

 slave配置

#slave添加选项:

slaveof $master $port

#如果master设置密码:

masterauth $password

#slave启动非只读(默认为yes):

slave-read-only no

#错误日志会显示I/O error trying to sync withMASTER: connection lost

>config set client-output-buffer-limit slave1024mb 256mb 0

以上是关于Redis主从复制的配置过程的主要内容,如果未能解决你的问题,请参考以下文章

redis主从复制

redis配置和主从复制

redis之 集群配置(主从复制)

Redis 的主从同步(复制)

Redis 主从复制哨兵和集群区别

redis主从复制和集群实现原理