Redis如何设置主从复制

Redis主从复制

  • 持久化保证了即使redis服务重启也不会丢失数据,但是当redis服务器的硬盘损坏了可能会导致数据丢失,通 过redis的主从复制机制就可以避免这种单点故障(单台服务器的故障)。
  • 主redis中的数据和从上的数据保持实时同步,当主redis写入数据时通过主从复制机制复制到两个从服务上。
  • 主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求.
  • 主机master配置:无需配置

推荐主从模式同步数据:
在这里插入图片描述

工作中一般选用:一主两从或一主一从

数据会同步到从服务器。在这个集群中的几台服务器上都有同样的数据。

主从搭建步骤:

主机:不用配置。仅仅只需要配置从机,从机slave配置:(这里是伪集群)

第一步:复制出一个从机,注意使用root用户

[root@localhost myapps]# cp redis/ redis1 -r
[root@localhost myapps]# ll
总用量 40
drwxr-xr-x. 3 root root 4096 2月 1 09:26 redis
drwxr-xr-x. 3 root root 4096 2月 1 09:27 redis1

第二步:修改从机的redis.conf

语法:replicaof // replicaof 主机ip 主机端口号

提示:检索文件: 输入:/replicaof 当前页没有时,输入n,查找下一页

在这里插入图片描述

第三步:修改从机的port地址为6380

在从机redis.conf中修改
在这里插入图片描述

第四步:清除从机中的持久化文件

[root@localhost bin]# rm -rf appendonly.aof dump.rdb
[root@localhost bin]# ll
总用量 15440
-rwxr-xr-x. 1 root root 4588902 7月 1 09:27 redis-benchmark
-rwxr-xr-x. 1 root root 22225 7月 1 09:27 redis-check-aof
-rwxr-xr-x. 1 root root 45443 7月 1 09:27 redis-check-dump
-rwxr-xr-x. 1 root root 4691809 7月 1 09:27 redis-cli
lrwxrwxrwx. 1 root root 12 7月 1 09:27 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 6450337 7月 1 09:27 redis-server

第五步:启动从机

[root@localhost redis1]# ./bin/redis-server ./redis.conf

第六步:启动6380的客户端

[root@localhost redis1]# ./bin/redis-cli -p 6380
127.0.0.1:6380> keys *
1) "mylist"
2) "num"
3) "bookCate1"
4) "newbook"
127.0.0.1:6380>

停止客户端: ./bin/redis-cli -p 6380 shutdown

注意:

Ø 主机一旦发生增删改操作,那么从机会自动将数据同步到从机中

Ø 从机不能执行写操作,只能读

127.0.0.1:6380> get username
"hehe"
127.0.0.1:6380> set username haha
(error) READONLY You can't write against a read only slave.

复制的过程原理

  • 当从库和主库建立MS(master slaver)关系后,会向主数据库发送SYNC命令;
  • 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;
  • 快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;
  • 从Redis接收到后,会载入快照文件并且执行收到的缓存命令;
  • 主Redis每当接收到写命令时就会将命令发送从Redis,保证数据的一致;【内部完成,所以不支持客户端在从 机人为写数据。】

复制架构中出现宕机情况?

从Redis宕机:重启就好

主Redis宕机:从数据库(从机)中执行SLAVEOF NO ONE命令,断开主从关系并且提升为主库继续服务[把一个从做为 主机,这个时候新主机[之前的从机]就具备写入的能力];主服务器修好后,重新启动后,执行SLAVEOF命令,将其 设置为从库[老主机设置为从机]。[手动执行,过程复杂,容易出错。]是否有更好的方案?

猜你喜欢

转载自blog.csdn.net/weixin_43515837/article/details/113095987