redis主从复制

来源:互联网 发布:淘宝服装文案 编辑:程序博客网 时间:2024/06/06 20:52

主从复制:

概述

1、Redis 使用异步复制。从 Redis 2.8 开始,从服务器会以每秒一次的频率向主服务器报告复制流(replication stream)的处理进度。

2、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。

3、不仅主服务器可以有从服务器,从服务器也可以有自己的从服务器,多个从服务器之间可以构成一个图状结构。

4、复制功能不会阻塞主服务器:即使有一个或多个从服务器正在进行初次同步,主服务器也可以继续处理命令请求。

5、可以通过复制功能来让主服务器免于执行持久化操作:只要关闭主服务器的持久化功能,然后由从服务器去执行持久化操作即可。

过程:

(1)Slave服务器连接到Master服务器。

(2)Slave服务器发送SYCN命令。

(3)Master服务器备份数据库到.rdb文件。

(4)Master服务器把.rdb文件传输给Slave服务器。

(5)Slave服务器把.rdb文件数据导入到数据库中。

主从配置:

1.环境描述:

    master:192.168.1.93    6379    slave:192.168.1.111    6380

2.准备工作:

修改主从配置文件redis.conf,

daemonize no 改为 daemonize yes

bind 127.0.0.1 改为 bind 0.0.0.0

daemonize yes
bind 0.0.0.0

修改slave redis的端口号为6780

port 6380

提醒:

如果主数据库设置了密码,需要在从数据的配置文件(redis.conf)中通过masterauth参数设置主数据库的密码,这样从数据库在连接主数据库时就会自动使用auth命令认证了。相当于做了一个免密码登录。

3.启动主从服务

[root@localhost src]# ./redis-server ../redis.conf [root@localhost src]# ./redis-cli -p 6379127.0.0.1:6379> 
[root@localhost src]# ./redis-server ../redis.conf [root@localhost src]# ./redis-cli -p 6380127.0.0.1:6380> 

(1)在slave(从redis)执行slaveof 192.168.1.93 6379

127.0.0.1:6380> slaveof 192.168.1.93 6379OK

(2)也可以手动修改redis.conf文件中的slaveof属性

这里写图片描述

4.OK,主从配置完成,在master和slave分别执行info命令,查看结果如下:

master:

这里写图片描述

slave:

这里写图片描述

若按照上述步骤操作,未成功连接主从,请关闭防火墙重试;若在生产环境,请开放端口。

centos6.5关闭防火墙:

关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
查看防火墙关闭状态:service iptables status

centos7关闭防火墙:

停止firewall:systemctl stop firewalld.service
禁止firewall开机启动:systemctl disable firewalld.service
查看默认防火墙状态: firewall-cmd –state

5.测试数据同步

master:

127.0.0.1:6379> set result successOK127.0.0.1:6379> get result"success"127.0.0.1:6379> 

slave:

127.0.0.1:6380> get result"success"127.0.0.1:6380> 

6.默认读写分离

127.0.0.1:6380> set result abc(error) READONLY You can't write against a read only slave.127.0.0.1:6380> 

注意事项:

如果你使用主从复制,那么要确保你的master激活了持久化,或者确保它不会在宕掉后自动重启。

原因:slave是master的完整备份,因此如果master通过一个空数据集重启,slave也会被清掉。

原创粉丝点击