单机模拟主从复制(一主三从)

简介: 单机模拟主从复制(一主三从)

引言

操作系统环境:Ubuntu 20.04

Redis版本:6.2.8

准备工作

官网下载 当前最新版本是7.0,我这里用的是6.0,下载 redis-6.2.8.tar.gz,拷贝到自己的虚拟机或者云服务器。

tar -zxvf redis-6.2.8.tar.gz 解压

cd redis-6.2.8

make && make install (注意是root权限)

目标

同一机器我们需要用端口来区分不同的服务器,模拟一主三从,其中:

127.0.0.0:6379 为主服务器,6380、6381、6382为从服务器。

掌握了单机模拟的情况,不同的机器只是修改不同的ip或者端口即可,举一反三 。

一、创建redis_master_slave文件夹

mkdir redis_master_slave

1.1 准备配置文件

cp redis.conf ./redis_master_slave/redis_6379.conf

cp redis.conf ./redis_master_slave/redis_6380.conf

cp redis.conf ./redis_master_slave/redis_6381.conf

cp redis.conf ./redis_master_slave/redis_6382.conf

1.2 修改配置文件
1.2.1 主服务器配置文件

vi redis_master_slave/redis_6379.conf

daemonize yes       #开启保护进程
pidfile /var/run/redis-server_6379.pid
logfile /var/run/redis-server_6379.log
dbfilename dump_6379.rdb
protected-mode  no 
# bind 192.168.60.69 #绑定的IP (一台模拟主机就是127.0.0.1)
requirepass 123456  #设置密码,主从密码设置一样
1.2.2 从服务器配置文件(以6380为例)
port 6380
#开启保护进程
daemonize yes       
pidfile /var/run/redis-server_6380.pid
logfile /var/run/redis-server_6380.log
dbfilename dump6380.rdb
# 进行主从复制。
protected-mode  no  
# bind 192.168.60.69 #绑定的IP (一台模拟主机就是127.0.0.1)
#设置密码,主从密码设置一样
requirepass  123456 
#主redis的密码
masterauth     123456   
#设置复制的主服务的IP 主端口
slaveof            127.0.0.1  6379    

1.3 启动redis服务

进入到src目录,注意,目录不能错。

cd src
sudo ./redis-server ../redis_master_slave/redis_6379.conf
sudo ./redis-server ../redis_master_slave/redis_6380.conf
sudo ./redis-server ../redis_master_slave/redis_6381.conf
sudo ./redis-server ../redis_master_slave/redis_6382.conf

1.4 开启四个客户端终端

redis-cli -h 127.0.0.1 -p 6379

redis-cli -h 127.0.0.1 -p 6380

redis-cli -h 127.0.0.1 -p 6381

redis-cli -h 127.0.0.1 -p 6382

1.5 效果展示

在主服务器输入:info replication,就能查看该主服务器,当前的从服务器的信息。

127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379>set teacher mark
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6380,state=online,offset=388,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=388,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=388,lag=0
master_failover_state:no-failover
master_replid:f6b5d34c40acba4f077ef518d468fb24bdaa56b6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:388
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:388
127.0.0.1:6379> set teacher lwang
OK
127.0.0.1:6379>

注意:

设置了密码,进入到客户端终端,需要先auth + 密码,进行登录,否则会提示 NOAUTH Authentication required,没有权限。

登录后,我们在主服务器添加数据,在任意一个从服务器就能读取到对应的数据。从服务对数据没有修改权限,只能读。也就是读写分离,写操作只能在主服务器上,当然,主服务器也能读取数据。


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:

相关文章
|
API
国外地区经纬度查询免费API接口教程
此接口用于查询国外地区的经纬度信息,支持POST和GET请求方式。需提供用户ID、用户KEY、省级名称及具体地点。返回数据包括地区名称(中英文)、国家代码及经纬度等详细信息。示例请求与响应数据详见文档。
643 29
|
SQL 关系型数据库 MySQL
一次性导入千万级数据到Mysql(附源码)
MySql数据迁移、导入,在我们日常开发中,可以说是经常碰到。如果数据量比较小,一般都没什么问题,但是如果是涉及到千万级、亿级的数据量大数据量迁移,这里面就涉及到一个问题:如何快速导入千万数据到MySQL。 下面我们通过对比3种方法,来谈谈MySQL怎么高性能插入千万级的数据。
2672 0
|
开发工具 C++ git
vs 2022与GitHub同步
vs 2022与GitHub同步
408 0
|
6月前
|
数据采集 搜索推荐 API
速来!小红书电商 API 接口,解锁种草数据新玩法
在数字化电商时代,小红书电商 API 成为品牌与开发者挖掘“种草”数据价值的关键工具。本文详解 API 的使用方法、核心优势及实战案例,助你实现精准营销与创新应用,抢占市场先机。
528 1
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###
|
NoSQL Ubuntu Redis
Ubuntu安装redis
本文介绍了在Ubuntu系统上安装Redis的两种方法:一种是通过编译安装本地Redis包,包括下载、解压、编译安装、配置启动和测试连接的步骤;另一种是通过apt安装在线的Redis包,并提供了更新系统软件包列表、安装Redis服务器、检查Redis服务器状态和测试连接的命令。
1444 0
Ubuntu安装redis
|
算法 安全 网络安全
信息安全: MAC(消息认证码)算法,保护数据完整性和真实性的利器
MAC 算法在保证数据完整性和真实性方面扮演着重要角色。HMAC 和 CMAC 作为两种主要的 MAC 算法,因其高安全性和广泛应用,已经成为现代通信和数据保护中不可或缺的一部分。通过本文的介绍,希望读者能够更好地理解和使用 MAC 算法,保障信息的安全性。
|
NoSQL 算法 Redis
详解Redis哨兵模式下,主节点掉线而重新选取主节点的流程
所谓选举的过程不是直接选出新的主节点,而是先在哨兵节点中选出 leader ,再由 leader 负责后续主节点的指定。
699 1
|
Linux API
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
|
Go
Golang语言高级数据类型之指针篇
这篇文章详细讲解了Golang语言中的指针概念、指针地址和类型、定义指针变量、指针的细节操作、指针传值,以及内置函数new和make的用法和它们之间的区别。
251 0