redis单机部署主从复制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis单机部署主从复制相关的知识,希望对你有一定的参考价值。
一、单机版radis部署
1、安装gcc
yum install gcc
2、安装redis
tar -zxvf redis-3.2.9.tar.gz -C /usr/src/
cd /usr/src/redis-3.2.9/
make
cd src && make install
3、创建redis目录存放命令和配置文件
mkdir -p /usr/local/redis/{etc,bin}
4、移动文件
cd /usr/src/redis-3.2.9/
mv redis.conf /usr/local/redis/etc
cd src
mv?mkreleasehdr.sh?redis-benchmark?redis-check-aof?redis-check-rdb?redis-cli?redis-server?redis-sentinel?redis-trib.rb?/usr/local/redis/bin
5、配置环境变量
echo ‘PATH=${PATH}:/usr/local/redis/bin/‘ >> /etc/profile
source /etc/profile
6、启动服务
启动redis服务需要指定配置文件的,后台启动的话需要修改redis.conf文件,daemonize no ---- >daemonize yes。redis服务端默认链接端口是6379,最好也将IP绑定为本机IP。
redis-server /usr/local/redis/etc/redis.conf
7、客户端连接
redis-cli -h 192.168.118.137 -p 6379
8、停止redis服务
192.168.118.137:6379> shutdown
或者:
[[email protected] bin]# ps -ef|grep redis
root 49245 2816 0 10:39 pts/1 00:00:00 redis-server 127.0.0.1:6379
root 49559 2816 0 10:59 pts/1 00:00:00 grep --color=auto redis
[[email protected] bin]# kill -9 49245
二、主从复制
1、复制简述
redis的复制可以实现当一台数据库中的数据更新后,自动将新数据复制到其他数据库上;复制过程本身是异步的,也就是说,在有客户端对master执行写命令时,master在执行完命令后立即将结果返回客户端,并异步的将命令同步给slave,而不会等slave接收到命令在返回给客户端结果;这是一种乐观复制的策略,即容忍在一定时间内主从的数据不一致,但两者最终会数据同步,redis正是采用了乐观复制(optimistic replication)。
2、主从
redis分为两类,一类是主数据库(master),另一类是从数据库(slave)。master可以对数据进行读和写的操作,同时在有新的数据写入时,根据配置文件的设置将数据复制给slave,slave是只读的,所以一般对于数据库的写操作在master上,占据大量IO的读操作在slave上。
3、主从复制的原理
下面我们用一个图来讲解redis主从复制的过程。
?
?
Redis主从复制过程示意图
?
?
从上面的示意图可以看出,主服务器与从服务器建立连接之后,Redis主从复制过程主要有下面几步:
(1)从服务器都将向主服务器发送一个 SYNC 命令。
(2)主服务器接到 SYNC 命令后开启一个后台子进程并开始执行 BGSAVE,并在保存操作执行期间, 将所有新执行的写入命令都保存到一个缓冲区里面。
(3)当 BGSAVE 执行完毕后, 主服务器将执行保存操作所得的 .rdb 文件发送给从服务器, 从服务器接收这个 .rdb 文件, 并将文件中的数据载入到内存中。
(4)主服务器会以 Redis 命令协议的格式, 将写命令缓冲区中积累的所有内容都发送给从服务器。
从上面的主从复制过程中,有两个问题:一是当主从断开时BGSAVE操作是一次完整复制;二是每一次BGSAVE操作master都会将RDB文件保存在硬盘上,基于这两点,2.8以后的版本引入了无硬盘复制和增量复制
无硬盘复制:
redis的复制是基于RDB方式的持久化实现的,即master接到SYNC后保存RDB快照文件,并将rdb文件复制给slave。这种方式在复制初始化时需要在硬盘上创建RDB文件,当硬盘性能变低时,就会导致复制性能降低,所以无硬盘复制就是master不再保存RDB文件在硬盘上,而是直接将RDB文件网络传输给slave。
增量复制:
当主从数据库断开连接时,slave发送SYNC时,master会进行一次完整复制操作,这时可能总从数据库的数据基本一致,即使这样,也要将完整的rdb文件传给slave;这种情况下,增量复制可以让每次主从中断时不对数据进行全量复制,减少了资源消耗,提高了效率;设置为增量复制时,slave发送给master的是PSYNC命令。
4、主从复制的结构
最基础的redis主从是有一台主数据库,N台从数据库
不仅主服务器可以有从服务器, 从服务器也可以有自己的从服务器
图中的master会将数据同步至slave-master1和slave1,slave-master1会将数据同步至slave2和slave3,向slave-master1写入数据只会同步到slave2和slave3中,不会同步到master和slave1中。
三、主从部署
1、从数据库部署
重复第一步,并复制redis.conf为redis-repl.conf
redis配置一个从服务器非常简单, 只要在从服务器的配置文件redis-repl.conf中增加主服务器的IP地址和端口号就可以,如果主服务器设置了客户端密码,还需要在从服务器中配置主服务器的密码,如下
slaveof 192.168.118.137 6379
#masterauth 123456
2、启动从服务器
redis-server /usr/local/redis/etc/redis-repl.conf
3、主从验证
主可写,从可查
从不可写
slave上查看状态
以上是关于redis单机部署主从复制的主要内容,如果未能解决你的问题,请参考以下文章