Redis主从复制搭建(单机实现)

主从复制概述

Redis主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

主从复制的作用

1、数据冗余:主从复制实现了数据的热备份,是持久化的一种数据冗余方式
2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余
3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量
4、高可用基石:除了上述作用外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

一般来说,要将Redis运用于工程项目中,只是用一台Redis是万万不能的,原因如下:
1、从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
2、从容量上,单个Redis服务器内存容量优先,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。


搭建一个Redis集群

默认情况下,每台Redis服务器都是主节点,所以我们只需要搭建从节点就可以了:

[root@zdata bin]# ls
dump.rdb  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server
[root@zdata bin]# ./redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:c1198a5e708d19c26d9192fde2d78da895be2b1d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379> 

搭建伪一主二从(机器不够,将redis安装在同一个机器上):一主(6379)二从(6380、6381) 

1. 在6379上将redis.conf复制3份,分别重命名为redis6379.conf,redis6380.conf,redis6381.conf:

[root@zdata bin]# cp redis.conf redis6379.conf
[root@zdata bin]# cp redis.conf redis6380.conf
[root@zdata bin]# cp redis.conf redis6381.conf
[root@zdata bin]# ls
dump.rdb  redis6379.conf  redis6380.conf  redis6381.conf  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server
[root@zdata bin]# 

2. 分别编辑redis6379.conf,redis6380.conf,redis6381.conff配置文件,以6379为例, 修改以下配置:

port:6379进程占用的端口号
pid(port id):/var/run/redis_6379.pid	记录了进程的id,文件带有锁,可以防止程序的多次启动
logfile:log6379.log 明确日志文件位置
dbfilename:dump6379.rdb 持久化文件位置
appendfilename:appendonly6379.aof 持久化文件位置
如果设置了密码,需要在从机上添加masterauth 主机密码,否则从机连接不上主机

3. 分别启动3个redis服务

[root@zdata bin]# ./redis-server redis6379.conf
[root@zdata bin]# ./redis-server redis6380.conf
[root@zdata bin]# ./redis-server redis6381.conf
[root@zdata bin]# 

 查看启动的redis进程:

4. 配置主从复制

我们开始配置主从复制,只需要配置从节点:

修改配置文件方式(永久有效):

在这里插入图片描述

5. 开启防火墙端口:

[root@zdata ~]# firewall-cmd --list-ports
3306/tcp
[root@zdata ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-10-23 16:38:10 CST; 1 day 23h ago
     Docs: man:firewalld(1)
 Main PID: 17389 (firewalld)
    Tasks: 2 (limit: 23712)
   Memory: 25.8M
   CGroup: /system.slice/firewalld.service
           └─17389 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

Oct 23 16:38:10 zdata systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 23 16:38:10 zdata systemd[1]: Started firewalld - dynamic firewall daemon.
Oct 23 16:38:10 zdata firewalld[17389]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider>

[root@zdata ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
[root@zdata ~]# firewall-cmd --zone=public --add-port=6380/tcp --permanent
success
[root@zdata ~]# firewall-cmd --zone=public --add-port=6381/tcp --permanent
success
[root@zdata ~]# systemctl restart firewalld.service
[root@zdata ~]# firewall-cmd --list-ports
3306/tcp 6379/tcp 6380/tcp 6381/tcp
[root@zdata ~]# 

 注意:如果是云服务器需要手动设置安全组策略,开放对外端口。

6. 修改如下配置

7. 重启服务 

 注意:主节点服务建议务必设置密码,否则可能遭受攻击。设置方式如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Redis主从复制是将一台主Redis服务器的数据复制到其他从Redis服务器的过程。主服务器负责写操作,从服务器负责读操作。主从复制可以减轻主服务器的读写压力和服务器负载,提高系统的性能和可靠性。搭建Redis主从复制的步骤如下: 1. 配置主服务器:在主服务器的配置文件中,设置`slaveof`指令,指定从服务器的IP地址和端口号。重启主服务器使配置生效。 2. 配置从服务器:在从服务器的配置文件中,设置`slaveof`指令,指定主服务器的IP地址和端口号。重启从服务器使配置生效。 3. 启动主从服务器:先启动主服务器,再启动从服务器。从服务器会自动连接到主服务器并开始同步数据。 4. 验证主从复制:可以使用`info replication`命令查看主从服务器的复制状态。如果状态显示为`connected`,则表示主从复制已成功搭建。 需要注意的是,主从复制是单向的,只能由主服务器向从服务器复制数据。从服务器只能提供读操作,不能进行写操作。如果主服务器发生故障,可以将一个从服务器提升为新的主服务器,以保证系统的可用性。 引用\[1\]中提到了主从复制的概念和基本原理,引用\[2\]和\[3\]提供了关于Redis主从复制的详细说明和搭建步骤。 #### 引用[.reference_title] - *1* *2* [Redis主从复制搭建](https://blog.csdn.net/qq_56370103/article/details/126247390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Redis主从复制架构搭建](https://blog.csdn.net/Trunks2009/article/details/107562575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Angus sonder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值