主从复制,主要优势在于实现了数据备份(主机和从机数据同步一致)、读写分离(主机主要负责写入数据,从机读数据,在读大于写的项目中提高了性能)。最后也为后续集成哨兵机制和集群的实现提供了依据。
一、多台服务器上配置主从复制
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?即可
领取专属 10元无门槛券
私享最新 技术干货