redis主从搭建

╰+攻爆jí腚メ 2022-12-21 10:51 184阅读 0赞

备注:测试版本 redis 4.0.9

文章目录

  • 一.redis主从概述
  • 二.redis主从搭建
  • 参考

一.redis主从概述

Redis主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布 记录。同步对读取操作的可扩展性和数据冗余很有帮助。

工作原理:

Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

全量同步
  Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
  1)从服务器连接主服务器,发送SYNC命令;
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

增量同步
  增量同步是初始化完成后,后面的变化都通过增量同步。

二.redis主从搭建


















服务器类别 IP
10.31.1.123
10.31.1.124

此时123、124两台已经安装了redis并已启动

修改从库124配置文件,并重启从库

  1. -- masterauth 主库的redis的密码是123456
  2. [root@10-31-1-124 ~]# vi /usr/local/redis/redis.conf
  3. # slaveof <masterip> <masterport>
  4. slaveof 10.31.1.123 6379
  5. masterauth 123456
  6. [root@10-31-1-124 ~]# redis-cli -a "123456" shutdown
  7. [root@10-31-1-124 ~]#
  8. [root@10-31-1-124 ~]# redis-server /usr/local/redis/redis.conf &
  9. [1] 11739
  10. [root@10-31-1-124 ~]# 11739:C 03 Nov 17:05:25.984 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
  11. 11739:C 03 Nov 17:05:25.985 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=11739, just started
  12. 11739:C 03 Nov 17:05:25.985 # Configuration loaded
  13. [1]+ 完成 redis-server /usr/local/redis/redis.conf
  14. [root@10-31-1-124 ~]#

查看主库日志:

  1. 19816:M 03 Nov 17:29:30.250 * Slave 10.31.1.124:6379 asks for synchronization
  2. 19816:M 03 Nov 17:29:30.250 * Full resync requested by slave 10.31.1.124:6379
  3. 19816:M 03 Nov 17:29:30.250 * Starting BGSAVE for SYNC with target: disk
  4. 19816:M 03 Nov 17:29:30.252 * Background saving started by pid 20004
  5. 20004:C 03 Nov 17:29:30.256 * DB saved on disk
  6. 20004:C 03 Nov 17:29:30.257 * RDB: 6 MB of memory used by copy-on-write
  7. 19816:M 03 Nov 17:29:30.280 * Background saving terminated with success
  8. 19816:M 03 Nov 17:29:30.280 * Synchronization with slave 10.31.1.124:6379 succeeded

查看从库日志:

  1. 11800:S 03 Nov 17:29:30.246 * DB loaded from append only file: 0.000 seconds
  2. 11800:S 03 Nov 17:29:30.246 * Ready to accept connections
  3. 11800:S 03 Nov 17:29:30.246 * Connecting to MASTER 10.31.1.123:6379
  4. 11800:S 03 Nov 17:29:30.246 * MASTER <-> SLAVE sync started
  5. 11800:S 03 Nov 17:29:30.246 * Non blocking connect for SYNC fired the event.
  6. 11800:S 03 Nov 17:29:30.247 * Master replied to PING, replication can continue...
  7. 11800:S 03 Nov 17:29:30.247 * Partial resynchronization not possible (no cached master)
  8. 11800:S 03 Nov 17:29:30.252 * Full resync from master: eb10cb1b935a07e1d9c6d3b8e735e8372257fe9c:0
  9. 11800:S 03 Nov 17:29:30.278 * MASTER <-> SLAVE sync: receiving 246 bytes from master
  10. 11800:S 03 Nov 17:29:30.279 * MASTER <-> SLAVE sync: Flushing old data
  11. 11800:S 03 Nov 17:29:30.279 * MASTER <-> SLAVE sync: Loading DB in memory
  12. 11800:S 03 Nov 17:29:30.280 * MASTER <-> SLAVE sync: Finished with success
  13. 11800:S 03 Nov 17:29:30.281 * Background append only file rewriting started by pid 11804
  14. 11800:S 03 Nov 17:29:30.306 * AOF rewrite child asks to stop sending diffs.
  15. 11804:C 03 Nov 17:29:30.306 * Parent agreed to stop sending diffs. Finalizing AOF...
  16. 11804:C 03 Nov 17:29:30.306 * Concatenating 0.00 MB of AOF diff received from parent.
  17. 11804:C 03 Nov 17:29:30.306 * SYNC append only file rewrite performed
  18. 11804:C 03 Nov 17:29:30.307 * AOF rewrite: 6 MB of memory used by copy-on-write
  19. 11800:S 03 Nov 17:29:30.346 * Background AOF rewrite terminated with success
  20. 11800:S 03 Nov 17:29:30.346 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
  21. 11800:S 03 Nov 17:29:30.346 * Background AOF rewrite finished successfully

查看redis复制信息

  1. [root@10-31-1-123 redis]# redis-cli -a 123456
  2. 127.0.0.1:6379> info replication
  3. # Replication
  4. role:master
  5. connected_slaves:1
  6. slave0:ip=10.31.1.124,port=6379,state=online,offset=6451,lag=1
  7. master_replid:0976d29309e95ba0b109945c001a8391d1d67e53
  8. master_replid2:0000000000000000000000000000000000000000
  9. master_repl_offset:6451
  10. second_repl_offset:-1
  11. repl_backlog_active:1
  12. repl_backlog_size:1048576
  13. repl_backlog_first_byte_offset:1
  14. repl_backlog_histlen:6451

自此,redis的主从就已经搭建完成

参考

1.https://blog.csdn.net/weixin\_42711549/article/details/83061052

发表评论

表情:
评论列表 (有 0 条评论,184人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis主从复制

    目录 1、创建三个redis-server服务实例 2、修改相应的配置文件 3、删除掉原来的持久化数据(省略) 4、启动三个实例 5、启动三个客户端 6、使用命令的

    相关 redis主从架构

    一.绪论    Redis的复制功能是基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生。

    相关 redis主从结构

    Redis Replication,非常简单的配置和使用,是非常普遍的master-slave结构,Slave Redis实例准确的复制主实例的副本。 每次连接断开时,slav

    相关 redis主从哨兵

    1. 为什么要有哨兵机制     哨兵机制是对Redis系统的运行情况的监控,解决主从复制的缺点的。  原理:当主节点出现故障时,由Redis Sentinel自动完成故障