redis主从复制

默北 Redisredis主从复制已关闭评论7,8332字数 2781阅读9分16秒阅读模式

redis主从复制

redis安装配置参见:ubuntu下redis安装配置 https://www.ttlsa.com/html/1226.html文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

一.redis主从复制特点:文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

1.master可以拥有多个slave文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

2.多个slave可以连接同一个master外,还可以连接到其他slave文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

4.提高系统的伸缩性文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

5.可以在master禁用数据持久化,注释掉master配置文件中的所有save配置,只需在slave上配置数据持久化文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

二.redis主从复制过程:文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

三.redis主从配置:文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

配置具体参数含义参见: https://www.ttlsa.com/html/1226.html文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

【master】文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

daemonize yes文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

pidfile /var/run/redis.pid文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

port 6379文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

timeout 300文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

loglevel verbose文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

logfile /usr/local/redis-2.2.12/var/log/redis.log文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

databases 16文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

save 900 1文章源自运维生存时间-https://www.ttlsa.com/redis/redis-master-slave/

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /usr/local/redis-2.2.12/var/data

requirepass redis

appendonly no

appendfsync everysec

no-appendfsync-on-rewrite no

slowlog-log-slower-than 10000

slowlog-max-len 1024

vm-enabled no

vm-swap-file /tmp/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

activerehashing yes

【slave】

daemonize yes

pidfile /var/run/redis.pid

port 6379

timeout 300

loglevel verbose

logfile /usr/local/redis-2.2.12/var/log/redis.log

databases 16

save 900 1

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /usr/local/redis-2.2.12/var/data

appendonly no

appendfsync everysec

no-appendfsync-on-rewrite no

slowlog-log-slower-than 10000

slowlog-max-len 1024

vm-enabled no

vm-swap-file /tmp/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

activerehashing yes

slaveof 192.168.1.189 6379

masterauth redis

四.redis复制测试

查看master端日志:

[8930] 31 Jul 19:16:09 - Accepted 192.168.1.136:54774

[8930] 31 Jul 19:16:09 * Slave ask for synchronization

[8930] 31 Jul 19:16:09 * Starting BGSAVE for SYNC

[8930] 31 Jul 19:16:09 * Background saving started by pid 10782

[10782] 31 Jul 19:16:09 * DB saved on disk

[8930] 31 Jul 19:16:09 * Background saving terminated with success

[8930] 31 Jul 19:16:09 * Synchronization with slave succeeded

[8930] 31 Jul 19:16:14 - DB 0: 1 keys (0 volatile) in 4 slots HT.

[8930] 31 Jul 19:16:14 - 1 clients connected (1 slaves), 807320 bytes in use

查看slave端日志:

[24398] 01 Aug 10:16:10 * Connecting to MASTER...

[24398] 01 Aug 10:16:10 * MASTER <-> SLAVE sync started: SYNC sent

[24398] 01 Aug 10:16:10 * MASTER <-> SLAVE sync: receiving 25 bytes from master

[24398] 01 Aug 10:16:10 * MASTER <-> SLAVE sync: Loading DB in memory

[24398] 01 Aug 10:16:10 * MASTER <-> SLAVE sync: Finished with success

[24398] 01 Aug 10:16:15 - DB 0: 1 keys (0 volatile) in 4 slots HT.

[24398] 01 Aug 10:16:15 - 1 clients connected (0 slaves), 798960 bytes in use

master端操作:

redis 127.0.0.1:6379> set k_m master

OK

slave端操作:

redis 127.0.0.1:6379> get k_m

"master"

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 06/04/2012 19:43:09
  • 转载请务必保留本文链接:https://www.ttlsa.com/redis/redis-master-slave/