redis部署和主从配置

Redis是一个key-value存储系统
和Memcached缓存相比,Redis支持存储的value类型更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。
redis可以持久化,支持主从同步

环境
192.168.2.118 redis主
192.168.2.119 redis从

  • redis部署
yum -y install gcc
wget  http://download.redis.io/releases/redis-2.8.13.tar.gz
tar -zxvf redis-2.8.13.tar.gz
cd redis-2.8.13
make  PREFIX=/usr/local/redis  install
cp redis.conf /usr/local/redis/

设置redis的环境变量,在/etc/profile末尾添加

export PATH=/usr/local/redis/bin:$PATH

让环境变量生效

source /etc/profile

后台启动redis及停止redis服务,默认端口是6379

nohup  /usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf  &
#/usr/local/redis/bin/redis-cli  -p  6379 shutdown

查看启动情况

ps -ef | grep redis
或
netstat -tunl | grep 6379
  • redis主从配置

118服和119服分别部署好redis
在119服的redis配置文件里添加

slaveof 192.168.2.118 6379

快照触发条件为(默认如下)

save 900 1
save 300 10
save 60 10000

save 900 1表示900秒内有1个key被改变,则将数据同步到数据文件rdb里

  • 测试主从

启动118和119的redis服务
进入118的redis,查看并添加数据

[root@mysqlm bin]# ./redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set lee1 helloone
OK
127.0.0.1:6379> set lee2 helltwo
OK
127.0.0.1:6379>

进入119查看数据

[root@leeclient redis]# ./bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "lee2"
2) "lee1"
127.0.0.1:6379> get lee2
"helltwo"
127.0.0.1:6379>

也就是说redis同步成功。

当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作以确保数据的一致,另外也可以开启二级slave、三级slave。

save之间是或关系,只要满足其中一个条件就会触发快照,如果要取消快照,直接注销save行即可。配置文件里,文件默认的保存位置为当前目录下(dir ./)
也可以手动快照,进入redis后执行save

  • redis持久化

持久化一般是指把内存的数据保存到磁盘上以避免因断电等原因丢失数据
半持久化是指存在内存中的数据通过异步方式定期的保存到硬盘中去(rdb)
全持久化是指存在内存中的数据只要有变化就会存储到硬盘里去(aof)

Redis可以同时开启AOF和RDB,保证数据安全且易于进行备份等操作。如果重启Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少。Rdb是默认的redis备份方式,通过快照完成,若符合在配置参数里设置的条件redis就会自动把内存中的所有数据快照并把数据存到硬盘里,通过fork函数来实现。

redis默认没有开启aof,可以通过如下参数设置开启

appendonly  yes                         开启aof
appendfilename appendonly.aof           aof文件名
auto-aof-rewrite-percentage 100         aof文件大小超过上一次重写时aof的大小百分比则重写
auto-aof-rewrite-min-size 64mb           
appendfsync always                      每次执行写入都会同步,其他选项包括everysec和no                      

设置完成后重启redis,就可以看到reids目录下有appendonly.aof文件,redis主有写入数据,redis从的该文件就会同步数据

当从数据库由于某些意外导致崩溃或停止运行,再重启后主数据库会自动将数据同步过来,无需做其他操作,所以无需担心数据丢失。比如在119服停止redis服务,然后再118上的redis写入数据,此时再启动119的redis服务时,会自动把118上写入的数据同步过来。

当主数据库崩溃时,可以通过在从数据库中执行SLAVEOF NO ONE命令把从数据库提升成主数据库继续服务,同时当原来的主数据库启动并正常运行后在配置参数添加SLAVEOF命令将其设置成新的主数据库的从数据库,即可将数据同步回来。比如在118服停止redis服务,然后进入119的redis执行SLAVEOF NO ONE命令,在118redis的redis.conf里配置slaveof,重启118redis,此时就可以把119上的数据同步到118上。(注意,需要注释119的slaveof参数)

若redis启动不起来,可以查看nohup.out文件内容来获取相关信息(比如可能是配置文件里某些参数配置错误)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值