【Redis】复制(Replica)


以下是本篇文章正文内容

一、复制是什么?

主从复制

  • master(main redis)以写为主,slave(secondary redis)以读为主,不能写数据
  • 当master数据变化时,自动将新的数据异步同步到其他slave数据库

功能

  • 读写分离:主机只写,从机只读
  • down机恢复:主机down,从机数据可用,但仍是slave,等待主机恢复
  • 数据备份
  • 水平扩容支撑高并发

配slave不配master
权限细节

  • master如果配置了 requirepass 参数,需要密码登录
  • slave 需要配置 masterauth来设置检验密码,否则的话master会拒绝slave的访问请求

二、 基本命令

info replication  // 查看复制节点的主从关系和配置信息
    
replicaof/slaveof  主库IP 主库端口   
// replicaof/slaveof这两个一样,一般写入进redis.conf配置文件内,但是政治原因redis 5版本后一般用replicaof
// 在运行期间修改slave节点的信息,如果该数据库已经是某个数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步

replicaof/slaveof  no one     /
### 如何在 Docker 中配置 Redis 主从复制 #### 创建必要的目录和文件 为了实现主从复制,需先创建用于挂载的目录以及相应的配置文件。对于主节点(端口6379),应建立如下路径并添加配置文件: ```bash mkdir -p /home/docker/redis6379/conf mkdir -p /home/docker/redis6379/data vi /home/docker/redis6379/conf/redis.conf ``` 同样地,针对从节点也需要执行相似的操作来准备环境[^2]。 #### 修改 `redis.conf` 文件 编辑 `/home/docker/redis6379/conf/redis.conf` 和对应的从节点配置文件,在其中指定 masterauth 密码、requirepass 密码以及其他必要参数以确保安全性和正常工作。例如: ```conf masterauth 123456 requirepass 123456 replicaof 172.17.0.2 6379 ``` 这里假设主服务器 IP 地址为 `172.17.0.2` 并监听默认端口 `6379`;而从机则会连接到这台主机来进行数据同步[^4]。 #### 使用 Docker Compose 设置服务 编写一个简单的 `docker-compose.yml` 来定义两个 Redis 实例之间的关系: ```yaml version: '3' services: redis-master: image: "redis:6.0.20" container_name: redis- "6379:6379" volumes: - "/home/docker/redis6379/conf:/usr/local/etc/redis" - "/home/docker/redis6379/data:/data" redis-replica: image: "redis:6.0.20" container_name: redis-replica environment: REDIS_REPLICAOF_HOST: "redis-master" REDIS_REPLICAOF_PORT: "6379" command: ["sh", "-c", "echo 'replicaof $$REDIS_REPLICAOF_HOST $$REDIS_REPLICAOF_PORT' | tee -a /usr/local/etc/redis/redis.conf && exec redis-server"] depends_on: - redis-master links: - redis-master ``` 此 YAML 定义了一个名为 `redis-master` 的主实例和服务名叫做 `redis-replica` 的副本实例,并通过链接使它们能够相互通信[^1]。 #### 测试主从状态 启动上述的服务之后可以进入任意一台机器内部查看其角色信息: 对于主节点而言, ```bash docker exec -a 123456 -c info replication ``` 而对于从节点来说,则可以通过命令验证是否成功成为跟随者: ```bash docker exec -it redis-replica redis-cli -p 6380 ``` 如果一切顺利的话,应该可以看到关于 slave 或 replica 的相关信息显示出来,表明已经建立了有效的主从关系[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值