zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis主从复制

Redis 主从复制
2023-09-11 14:18:14 时间

1.是什么?

  主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slave以读为主。

2.能干嘛?

  ①读写分离

  ②容灾恢复

3.复制三个配置文件并修改

daemonize yes
pidfile xxxxx
port xxxx
logfile    xxxx
dbfilename

 

3.如何设置主从关系?

  首先,配从(库)不配主(库),可以通过info replication命令查看当前库的主从信息,默认为主库。

  可以对从库通过slaveof 主库ip 主库端口 命令连接到主库。

  可以通过slaveof no one 将当前Redis停止与其他Redis之间同步,转为主库。(中途变更转向,会清除之前的数据,重新建立最新的)

4.复制原理

  ①从库启动成功后会连接到主库后发送一条同步命令

  ②主库接收到命令后启动后台的存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕之后,主库将传送整个数据文件到从库以完成一次完全同步。

  ③从库服务在接收到主库数据文件后将其存盘并加载到内存中。(全量复制)

  ④主库继续将新的所有收集到的修改命令依次传送给从库进行同步。(增量复制)

  ⑤只要是重新连接主库,全量同步将被自动执行。

5.哨兵模式(Sentinel)

  通过前面简单的主从配置,主节点Master 只有一个,一旦主节点挂掉之后,从节点没法担起主节点的任务,那么整个系统也无法运行。如果主节点挂掉之后,从节点能够自动变成主节点,那么问题就解决了,于是哨兵模式诞生了。

  哨兵模式是反客为主的自动版本,能够在后台监控主机是否故障,如果出现了故障,哨兵将根据投票数自动将从库转化为主库,并让其他从机和新主机建立主从关系。

搭建步骤:

  ①、在配置文件目录下新建 sentinel.conf 文件(文件名不能错),配置相应内容。  

sentinel monitor 被监控机器的名字(自己起名字) ip地址 端口号 得票数

  得票数是指主库挂掉后,从库开始投票,得票数多少后成为主机。

  ②启动哨兵开始监控

redis-sentinel /etc/redis/sentinel.conf

6.主从复制的缺点

  复制延时:

    由于所有的写操作都是在主库上操作然后同步更新到从库上,所以从主库同步到从库机器上有一定的延时,当系统繁忙的时候,延迟问题会更加严重,从库机器数量的增加也会使这个问题更加严重。