Redis HA篇 +主从搭建

说明:本文为面向Redis主从搭建的指导手册
标签:Redis主从、Redis高可用、Redis读写分离、Redis 4.0.2
注意:文中删去了不需要的多余部分,让初学者一目了然一学就会
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化


★ 前言
※ 该文档架构采用:单机1主2从架构(相当于3个redis)
※ 系统信息:Centos 6.3 x86_64 4GB内存
※ 为了方便初学者学习了解redis本文简化了所有步骤
※ Redis全称“remote dictionary server”中文远程字典服务
※ Redis属于NoSql数据库中的key-value类型
※ Redis的哨兵机制是redis2.8开始支持,而集群模式是redis3.0开始支持。
※ Redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
※ Redis的主为读写模式,从为只读模式;
※ Redis的更多参数介绍参考本人其他相关文档

★ 相关文章
Redis 运维篇+安装单实例
Redis HA篇  +主从搭建
Redis HA篇  +哨兵搭建
Redis HA篇  +集群搭建

★ 配置主从
※ 复制配置文件
cp /soft/redis-4.0.2/redis.conf    /soft/redis-4.0.2/redis_6380.conf
cp /soft/redis-4.0.2/redis.conf    /soft/redis-4.0.2/redis_6381.conf
cp /soft/redis-4.0.2/redis.conf    /soft/redis-4.0.2/redis_6382.conf

※ 修改配置文件(主)
# 相关文件位置:/soft/redis-4.0.2/redis_6380.conf
# 修改主从端口:port
sed -i 's/^port 6379/port 6380/g' /soft/redis-4.0.2/redis_6380.conf
cat /soft/redis-4.0.2/redis_6380.conf |grep "^port 63"
# 修改主从进程:pidfile
sed -i 's/redis_6379.pid/redis_6380.pid/g' /soft/redis-4.0.2/redis_6380.conf
cat /soft/redis-4.0.2/redis_6380.conf |grep "redis_6380.pid"

※ 修改配置文件(从A)
# 相关文件位置:/soft/redis-4.0.2/redis_6381.conf
# 修改主从端口:port
sed -i 's/^port 6379/port 6381/g' /soft/redis-4.0.2/redis_6381.conf
cat /soft/redis-4.0.2/redis_6381.conf |grep "^port 63"
# 修改主从进程:pidfile
sed -i 's/redis_6379.pid/redis_6381.pid/g' /soft/redis-4.0.2/redis_6381.conf
cat /soft/redis-4.0.2/redis_6381.conf |grep "redis_6381.pid"
# 修改从的slaveof指向主
echo "slaveof 127.0.0.1 6380" >> /soft/redis-4.0.2/redis_6381.conf
cat /soft/redis-4.0.2/redis_6381.conf |grep "^slaveof"

※ 修改配置文件(从B)
# 相关文件位置:/soft/redis-4.0.2/redis_6382.conf
# 修改主从端口:port
sed -i 's/^port 6379/port 6382/g' /soft/redis-4.0.2/redis_6382.conf
cat /soft/redis-4.0.2/redis_6382.conf |grep "^port 63"
# 修改主从进程:pidfile
sed -i 's/redis_6379.pid/redis_6382.pid/g' /soft/redis-4.0.2/redis_6382.conf
cat /soft/redis-4.0.2/redis_6382.conf |grep "redis_6382.pid"
# 修改从的slaveof指向主
echo "slaveof 127.0.0.1 6380" >> /soft/redis-4.0.2/redis_6382.conf
cat /soft/redis-4.0.2/redis_6382.conf |grep "^slaveof"


★ 启动主从
# 需要开启3个会话,分别执行挂起
/soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6380.conf
/soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6381.conf
/soft/redis-4.0.2/src/redis-server /soft/redis-4.0.2/redis_6382.conf


★ 查看状态
echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6380
echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6381
echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6382


★ 测试数据传输
echo "set zzt_01 'hello zzt'" | /soft/redis-4.0.2/src/redis-cli -p 6380
echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380
echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6381
echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6382
echo "del zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380
echo "get zzt_01" | /soft/redis-4.0.2/src/redis-cli -p 6380


★ 测试从节点自动重启
该模式下,从节点重启后会自动加入主从,并且会自动同步主库数据


★ 测试主节点自动重启
从节点会一直等待主节点的重启,待主节点启动后自动加入,恢复往常
该模式需要手动切换主从,所以一般推荐使用自动管理的哨兵模式


★ 手动主从切换
# 当前状态
    从:6380
    从:6381
    主:6382
# 目标状态
    主:6380
    从:6381
    宕:6382
# 停止主库,设立新主,从库重定向
echo "shutdown" | /soft/redis-4.0.2/src/redis-cli -p 6382
echo "slaveof no one" | /soft/redis-4.0.2/src/redis-cli -p 6380
echo "slaveof 127.0.0.1 6380" | /soft/redis-4.0.2/src/redis-cli -p 6381


★ 案例

[root@main src]# echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6380
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=28,lag=0
slave1:ip=127.0.0.1,port=6382,state=online,offset=28,lag=1
master_replid:348f1968b30ca05ef20ae66920fd9c92679af2bf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

[root@main src]# echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6381
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:28
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:348f1968b30ca05ef20ae66920fd9c92679af2bf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

[root@main src]# echo "info replication" | /soft/redis-4.0.2/src/redis-cli -p 6382
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:28
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:348f1968b30ca05ef20ae66920fd9c92679af2bf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28
[root@main src]# 


※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

猜你喜欢

转载自blog.csdn.net/zzt_2009/article/details/114395196