前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis主从复制过程和实现主从复制

Redis主从复制过程和实现主从复制

作者头像
星哥玩云
发布2022-08-18 15:23:10
2860
发布2022-08-18 15:23:10
举报
文章被收录于专栏:开源部署开源部署

一.Redis主从复制同步实现的过程

1.从服务发送一个sync同步命令给主服务要求全量同步 2.主服务接收到从服务的sync同步命令时,会fork一个子进程后台执行bgsave命令(非阻塞)快照保存,生成RDB文件,并将 RDB文件发送给从服务 3.从服务再将接收到的RDB文件载入自己的redis内存 4.待从服务将RDB载入完成后,主服务再将缓冲区所有写命令发送给从服务 5.从服务在将主服务所有的写命令载入内存从而实现数据的完整同步 6.从服务下次在需要同步数据时只需要发送自己的offset位置(相当于MySQL binlog的位置)即可,只同步新增加的数据,再不需要全量同步

二.通过命令行实现redis主从同步

master 192.168.1.9 slave 192.168.1.9 注意:建议保持主从redis的版本一致,避免导致因版本差异无法建立主从连接

1.设置master的配置文件

[root@localhost ~]# vim /app/redis/etc/redis.conf … bind 127.0.0.0.1 192.168.1.9 #绑定监听地址 … port 6379 #默认开启的端口号 …. daemonize yes  #以守护进程开启

supervised systemd  #由systemd管理服务的启动、停止.

pidfile /app/redis/run/redis_6379.pid  #进程的pid保存路径

logfile "/app/redis/log/redis_6379.log"  #日志文件保存路径 save 2 1              #每隔2秒进行一次快照保存 stop-writes-on-bgsave-error yes    #当快照保存失败会禁止写入redis,默认为yes,一般改为no不开启 dbfilename dump.rdb    #保存快照的文件名 dir /app/redis/data/            #保存快照的路径    requirepass 123456    #设置redis登录的连接密码 …

2.开启redis主服务并查看内存中的数据

[root@localhost ~]# redis-server /app/redis/etc/redis.conf [root@localhost ~]# redis-cli 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> keys * 1) "wang" 2) "dfd" 3) "lady" 4) "ddsds" 5) "name" 6) "zhang" 127.0.0.1:6379>

3.先查看slave从服务状态,在未设置时,从服务默认也为master主服务

127.0.0.1:6379> info replication #Replication role:master connected_slaves:0 master_replid:177a7792d02eb8e89c07b5441825a0f50d8ae8b8 master_replid2:37938cb9db73839bfc72e3fc805d42c56dc6352d master_repl_offset:2240 second_repl_offset:2241 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:57 repl_backlog_histlen:2184

4.设置slave从服务的配置文件

[root@localhost ~]# vim /app/redis/etc/redis.conf … bind 127.0.0.0.1 192.168.1.106 #绑定监听地址 … port 6379 #默认开启的端口号 …. daemonize yes  #以守护进程开启

dir /app/redis/data/            #保存快照的路径    requirepass 123456    #设置redis登录的连接密码 …

5.slave从服务命令行操作实现主从连接

[root@localhost ~]# redis-server /app/redis/etc/redis.conf [root@localhost ~]# redis-cli 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> slaveof 192.168.1.9 6379  #设置为另一台服务的从服务 127.0.0.1:6379>config set masterauth 123456 #配置与主服务匹配的连接密码 127.0.0.1:6379> info replication  #查看主从连接是够成功 #Replication role:slave                      #已经切换为从服务 master_host:192.168.1.9  #主服服主机的ip master_port:6379 master_link_status:up  #主从连接建立成功 ….. ….. 27.0.0.1:6379> keys *  #查看从主服器同步到的数据 1) "wang" 2) "name" 3) "dfd" 4) "zhang" 5) "ddsds" 6) "lady"

6.也可在命令行取消主从同步

127.0.0.1:6379> slaveof no one  #取消主从同步的命令 OK 127.0.0.1:6379> info replication  #查看是否取消成功 #Replication role:master              #已切换到master connected_slaves:0 master_replid:77eab93a7015b0d338d1c44040d632e698d0159b master_replid2:37938cb9db73839bfc72e3fc805d42c56dc6352d master_repl_offset:4004 second_repl_offset:4005 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2241 repl_backlog_histlen:1764 

三.通过配置文件实现主从同步

1.只需配置从服务配置文件

[root@localhost ~]# vim /app/redis/etc/redis.conf ….. slaveof 192.168.1.9 6379  #添加属于某台主机的从 服务 ….. masterauth 123456  #从服务连接主服的密码 …… slave-read-only yes  #从服务只读,不可在命令行写入数据 ……

2.重新启动从服务即实现主从连接

[root@localhost ~]# redis-server /app/redis/etc/redis.conf [root@localhost ~]# redis-cli 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> info replication #Replication role:slave master_host:192.168.1.9 master_port:6379 master_link_status:up …… ……

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档