首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何实现redis主从复制?

主从复制,主要优势在于实现了数据备份(主机和从机数据同步一致)、读写分离(主机主要负责写入数据,从机读数据,在读大于写的项目中提高了性能)。最后也为后续集成哨兵机制和集群的实现提供了依据。

一、多台服务器上配置主从复制

Redis从5.0以后主从配置属性发生了变化,在5.0之前配置的是slaveof,5.0以后变成了replicaof

服务器用途redis端口号备注centos7 192.168.1.6主机Master(写)6379redis5.0centos7 192.168.1.4从机Slave(读)6379redis5.0centos7 192.168.1.5从机Slave(读)6379redis5.0

第一步:安装redis

三台服务器上分别安装redis,三台服务器redis配置为方便可配置一致

第二步:添加主从配置项

主机(192.168.1.6) 不做任何修改,两台从机配置文件分配添加一下内容

# replicaof

replicaof 192.168.1.6 6379

如果主机添加了密码,需要在从机添加masterauth 参数,否则提示验证失败。

第三步:启动服务,测试配置是否正确

启动三台服务器上redis服务。

向主机(192.168.1.6) 添加数据,连接Redis

#redis没有设置密码.

/redis-cli

#redis 设置密码

./redis-cli -a "123456"

在1两台从机上分别连接redis后。执行

get k1

可以看到结果为主机上写入的name1的值,表示主从复制配置正确。

或者通过info replication 指定来查看主从配置信息

主节点中 cli中执行 info replication

./redis-cli

info replication

获取以下信息内容

connected_slaves:1(说明master node存在一个连接的slave node节点)

slave0 (slave0是关于第一个子节点的配置信息)

子节点中 cli中执行 info replication

获取以下信息内容

role:slave (表明这个是子节点)

master_host:192.168.1.6 (显示master node的IP信息)

master_port:6379 (端口号)

master_link_status:up (表明是否连接上,up表示连接中,down表示连接失败)

第四步:master_link_status:down,即主从复制失败问题解决

如果master_link_status:up 跳过此步骤

down大概有以下几种情况,具体情况查看日志文件

1、protected-mode配置成了yes

2、如果设置在主中设置了密码,从中应该配置密码

3、bind ip地址 表示可以那些服务器可以访问

设置为 0.0.0.0 表示都可以访问

如果是127.0.0.1 表示localhost访问

4、client-output-buffer-limit slave这个参数配置不当

从机日志文件:“I/O error trying to sync with MASTER:connection lost’”

原因:负责发数据给slave的client,如果buffer超过256m或者连续60秒超过64m,就会被立刻强行关闭!!! Traffic大的话一定要设大一点。否则就会出现一个很悲剧的循环,Master传输一个大的RDB给Slave,Slave努力的装载,但还没装载完,Master对client的缓存满了,再来一次。

#主机修改参数项值

client-output-buffer-limit slave 1024mb  256mb 0

5、端口,防火墙问题

#防火墙添加6379端口:firewall-cmd --permanent --zone=public --add-port=6379/tcp

#重启防火墙:firewall-cmd --reload

#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)firewall-cmd --state

二、单台服务器上配置主从复制

单台服务器也可以实现主从复制,本质上是同时启动几个redis实例来实现。

区别在于复制几个redis.conf,每个实例具有一个不同的redis.conf文件。其余配置与多级一致

启动redis服务,redis.conf 改位每个实例对应的配置文件名称,或者每个实例新建一个不同名称的服务

./redis-server redis.conf

三、总结

redis主从复制主要作用读写分离和数据备份的作用。主机负责写入数据,从机负责读取数据。

如果主机节点崩溃了,造成redis服务关闭,需要人为手动启动redis服务。

后续集成哨兵模式来实现解决这个问题,实现redis的高可用作用。

四、本实例中redis.conf 文件内容

下面是从机redis.conf 文件内容

如果是主机的话,删除replicaof 192.168.1.7 6379 即可

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201228A09VA300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券