今天我们介绍redis的主从集群搭建方式。
redis主从搭建方式一般为一主多从的形式,即一台主数据库,多台从数据库。
主从的搭建相对比较简单,本示例中使用三台虚拟机(192.168.204.201,192.168.204.202,192.168.204.203),分别在这三台机器上安装好redis,本示例将201机器作为主数据库,其他两台机器作为从数据库。
1.解压对应的tar包
tar zxvf redis-2.8.3.tar.gz
2.进入解压后的目录
cd /usr/redis-2.8.3
3.编译redis
make
4.在usr目录下创建redis目录,以方便我们的使用
cd /usr
mkdir redis
cd redis
mkdir bin
mkdir etc
5.分别将redis的程序redis-server和redis-cli复制到刚刚创建的bin目录下
cp /usr/redis-2.8.3/src/redis-server /usr/redis/bin/
cp /usr/redis-2.8.3/src/redis-cli /usr/redis/bin/
6.将redis的配置文件reids.conf复制到刚刚创建的etc目录下
cp /usr/redis-2.8.3/redis.conf /usr/redis/etc/
7.修改redis.conf配置文件
vi redis.conf
8.修改对应配置
daemonize yes (三台全部修改)
slaveof 192.168.204.201 6379 (从数据库修改)
9.退出并保存
:wq!
10.在三台机器上分别启动redis服务
./redis-server /usr/redis/etc/redis.conf
./redis-cli
11.使用info命令查看对应服务器的状态


从对应的信息我们可以清楚看出不同服务器的角色(role),以及对应的主,从数据库分别是哪台机器,端口以及对应机器的状态。
至此,redis主从集群以及搭建完成。
此时我们在主数据库中设置值,即可以在从数据库中获取到对应的值


但是,如果我们在从数据库上 设置值呢?

答案是否定的,因为从数据库只是对外提供读操作,并不能完成写操作。
redis主从集群的目的就是实现数据库的读写分离,提高服务器的负载能力,因此,主数据库可以进行读写操作,但是从数据库只能进行读操作。
那你又会想,主从之间是如何进行同步的呢?

主从复制的过程如上如图:
1.当一台从数据库启动之后,会向其主数据库发送一个sync命令
2.主数据库接收到该命令之后,会执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令
3.当BGSAVE操作完成后,主数据库会将快照文件和缓存的命令一并发送给从数据库
4.从数据库接收到快照文件和命令后,会载入该文件并执行对应的命令。
此时就完成了从数据库启动阶段的主从复制。该阶段被称为全量复制
当全量复制完成之后,主数据库每接收到一个写请求,都会向从数据库发送一个写请求,该过程称为增量复制。
此时,我们已经搭建好了主从集群,也完成了主从复制,那么你又会想,如果主数据库宕机了怎么办?
这个时候你要做的就是镇静,不要盲目的重启主数据库,尤其是你的主数据库没有做持久化的时候。
如果的主数据库没有做持久化,那么 主数据库的dump.rdb文件只是在某台从数据库发送sync命令时做快照留下来的,如果此时之间重启主数据库的话,势必会丢失很多数据。
但是从数据库中保留的是所有的数据,因此可以在从数据库中执行SAVE操作,再将从数据库的dump.rdb复制到主数据库,再进行重启,此时主数据库会加载所有数据。
自己练习的过程中,可以将三台服务器的防火墙关掉
centos6 查看防火墙状态
service iptables status
关闭防火墙
service iptables stop
网友评论