redis配置主从同步

一、概述

概述:为了分担读写压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步

二、测试环境准备

步骤一:查看主节点信息

系统IP主机名redis版本
centos-7.210.0.0.67redis-masterredis-4.0.9.tar.gz
centos-7.210.0.0.68redis-slave01redis-4.0.9.tar.gz
centos-7.210.0.0.69redis-slave02redis-4.0.9.tar.gz

[root@redis ~]# ifconfig eno16777736|grep -w inet
inet 10.0.0.67 netmask 255.255.255.0 broadcast 10.0.0.255

[root@redis ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

[root@redis ~]# uname -r
3.10.0-327.el7.x86_64

步骤二:查看从节点01信息

[root@redis-slave01 ~]# ifconfig eno16777736|grep -w inet
inet 10.0.0.68 netmask 255.255.255.0 broadcast 10.0.0.255

[root@redis-slave01 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

[root@redis-slave01 ~]# uname -r
3.10.0-327.el7.x86_64

步骤三:查看从节点02信息

[root@redis-slave02 ~]# ifconfig eno16777736|grep -w inet
inet 10.0.0.69 netmask 255.255.255.0 broadcast 10.0.0.255

[root@redis-slave02 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

[root@redis-slave02 ~]# uname -r
3.10.0-327.el7.x86_64

三、节点基础配置

1.master节点基础配置

步骤一:下载redis安装包

[root@redis ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
[root@redis ~]# ll redis-4.0.9.tar.gz
-rw-r–r--. 1 root root 1737022 Mar 26 2018 redis-4.0.9.tar.gz

步骤二:解压redis包

[root@redis ~]# tar zxf redis-4.0.9.tar.gz
[root@redis ~]# cd redis-4.0.9
[root@redis redis-4.0.9]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-sentinel src utils
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster sentinel.conf tests

步骤三:编译redis(只需要执行make))

[root@redis redis-4.0.9]# make
编译出错:zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
解决方法:make MALLOC=libc
[root@redis redis-4.0.9]#make MALLOC=libc

步骤四:创建redis目录,并且redis基本文件拷进去

[root@redis redis-4.0.9]# mkdir /usr/local/redis -p
[root@redis redis-4.0.9]# cp src/redis-server /usr/local/redis/
[root@redis redis-4.0.9]# cp src/redis-cli /usr/local/redis/
[root@redis redis-4.0.9]# cp redis.conf /usr/local/redis/
[root@redis redis-4.0.9]# mkdir /application
[root@redis redis-4.0.9]# ln -s /usr/local/redis/ /application/

步骤五:修改redis配置文件

[root@redis redis-4.0.9]# cd /application/redis/
[root@redis redis]# cp redis.conf redis.conf.backup
修改前
[root@redis redis]# egrep “^bind|^protected-mode|^\daemonize|# requirepass” redis.conf
bind 127.0.0.1
protected-mode yes
daemonize no
requirepass 000000
修改后
[root@redis redis]# egrep “^bind|^protected-mode|^daemonize|^requirepass” redis.conf
bind 10.0.0.67
protected-mode no
daemonize yes
requirepass 000000

步骤六:启动redis

[root@redis redis]# ./redis-server redis.conf
13064:C 04 Apr 20:32:15.767 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
13064:C 04 Apr 20:32:15.767 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=13064, just started
13064:C 04 Apr 20:32:15.767 # Configuration loaded

[root@redis redis]# netstat -lntup|grep 6379
tcp 0 0 10.0.0.67:6379 0.0.0.0:* LISTEN 13065/./redis-serve

步骤七:redis客户端连接测试

[root@redis redis]# redis -h 10.0.0.67 -p 6379 -a 000000
10.0.0.67:6379> exit

2.配置从节点(从节点与主节点的基础配置步骤一样)

步骤一:按照主节点的配置步骤配置(配置文件的不同之处如下)

[root@redis-slave01 redis]# grep “^bind” redis.conf
bind 10.0.0.68
[root@redis-slave02 redis]# grep “^bind” redis.conf
bind 10.0.0.69

步骤二:启动salve01

[root@redis-slave01 redis]# ./redis-server ./redis.conf
3106:C 20 Apr 12:12:06.594 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3106:C 20 Apr 12:12:06.595 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=3106, just started
3106:C 20 Apr 12:12:06.595 # Configuration loaded
[root@redis-slave01 redis]# netstat -lntup|grep 6379
tcp 0 0 10.0.0.68:6379 0.0.0.0:* LISTEN 3107/./redis-server

步骤三:启动从节点02

[root@redis-slave02 redis]# ./redis-server ./redis.conf
3166:C 20 Apr 12:12:39.877 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3166:C 20 Apr 12:12:39.877 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=3166, just started
3166:C 20 Apr 12:12:39.877 # Configuration loaded
[root@redis-slave02 redis]# netstat -lntup|grep 6379
tcp 0 0 10.0.0.69:6379 0.0.0.0:* LISTEN 3167/./redis-server

四、主从配置

1.主节点master信息

步骤一:修改配置文件信息,修改前。

vi redis.conf
450 # min-slaves-to-write 3
451 # min-slaves-max-lag 10
修改后
450 min-slaves-to-write 2 ###有几个salve,如果salve的数量小于的话会报错“(error) NOREPLICAS Not enough good slaves to write.

451 min-slaves-max-lag 10 ###slave与master的超时时间

步骤二:重启redis

[root@redis redis]# ./redis-cli -p 6379 -h 10.0.0.67 -a 000000 shutdown

[root@redis redis]# ./redis-server ./redis.conf
2682:C 20 Apr 12:25:05.983 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2682:C 20 Apr 12:25:05.983 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=2682, just started
2682:C 20 Apr 12:25:05.983 # Configuration loaded

2.配置从节点(以salve01为例)

步骤一:修改slave信息配置文件信息

修改前
[root@redis-slave01 redis]# vi redis.conf
281 # slaveof
288 # masterauth
修改后
281 slaveof 10.0.0.67 6379
288 masterauth 000000

步骤二:重启redis

[root@redis-slave01 redis]# ./redis-cli -h 10.0.0.68 -a 000000 shutdown

[root@redis-slave01 redis]# ./redis-server ./redis.conf
3149:C 20 Apr 12:28:11.882 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3149:C 20 Apr 12:28:11.882 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=3149, just started
3149:C 20 Apr 12:28:11.882 # Configuration loaded

五、验证主从复制

1.主节点信息查看

步骤一:查看主节点主从信息

[root@redis redis]# ./redis-cli -h 10.0.0.67 -a 000000
10.0.0.67:6379> info replication
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=10.0.0.68,port=6379,state=online,offset=240,lag=0
slave1:ip=10.0.0.69,port=6379,state=online,offset=240,lag=1
master_replid:6811d95c1e61ece1eaf8fdeb6edae1c1ce76a0f3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:240
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:240

步骤二:查看主节点的key

10.0.0.67:6379> KEYS *
(empty list or set)

2.从节点01信息查看

步骤一:查看从节点主从信息

[root@redis-slave01 redis]# ./redis-cli -h 10.0.0.68 -a 000000
10.0.0.68:6379> info replication
# Replication
role:slave
master_host:10.0.0.67
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:394
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:6811d95c1e61ece1eaf8fdeb6edae1c1ce76a0f3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:394
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:394

步骤二:查看从节点01的key

10.0.0.68:6379> KEYS *
(empty list or set)

3.从节点02信息查看

步骤一:查看从节点主从信息

[root@redis-slave02 redis]# ./redis-cli -h 10.0.0.69 -a 000000
10.0.0.69:6379> info replication
# Replication
role:slave
master_host:10.0.0.67
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:436
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:6811d95c1e61ece1eaf8fdeb6edae1c1ce76a0f3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:436
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:436

步骤二:查看从节点01的key

10.0.0.69:6379> KEYS *
(empty list or set)

4.主节点添加字符串

步骤一:添加redis liang

10.0.0.67:6379> set redis liang
OK

步骤二:从节点01查看

10.0.0.68:6379> KEYS *
1) “redis”
10.0.0.68:6379> get redis
“liang”

步骤三:从节点02查看

10.0.0.69:6379> KEYS *
1) “redis”
10.0.0.69:6379> get redis
“liang”
注:配置了主从,从节点无法直接添加数据。
10.0.0.68:6379> set redis01 test
(error) READONLY You can’t write against a read only slave.

六、redis管理脚本

[root@redis redis]# cat /scritp/redis.sh 
#!/bin/bash
\# chkconfig: 3 3389 3390
. /etc/rc.d/init.d/functions
Redis_Port=6379
Redis_Host=10.0.0.67
Redis_Passwd=000000
Redis_Pid=/var/run/redis_${Redis_Port}.pid
Redis_Config=/application/redis/redis.conf
Redis_Cli=/application/redis/redis-cli
Redis_Server=/application/redis/redis-server
Redis_Num(){
if [ $# -ne 1 ];then
        echo "Usage: /etc/init.d/redis {start|stop|status|restart|}"
        exit 2
fi
}
Redis_start(){
        if [ -f "$Redis_Pid" ];then
                echo "redis .......running"
        else
                ${Redis_Server} ${Redis_Config} >/dev/null 2>&1
                action "redis .......start" /bin/true
        fi
}
Redis_stop(){
        if [ -f "$Redis_Pid" ];then
                ${Redis_Cli} -h ${Redis_Host} -p ${Redis_Port} -a ${Redis_Passwd} shutdown
                action "redis .......stop" /bin/true
        else
                echo "redis .......shutdown"
        fi
}
Redis_status(){
        if [ -f "$Redis_Pid" ];then
                echo "redis .......running"
        else
                echo "redis .......shutdown"       
        fi
}
Redis_restart(){
        Redis_stop
        Redis_start
}
Redis_Case(){
case $1 in
start|START)
        Redis_start
;;
stop|STOP)
        Redis_stop
;;
status|STATUS)
        Redis_status
;;
restart)
        Redis_restart
;;
*)
        echo "Usage: /etc/init.d/redis {start|stop|status|restart|}"
;;
esac
}
Redis_Cmd(){
        Redis_Num $1
        Redis_Case $1
}
Redis_Cmd $1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis主从同步是一种常用的数据复制技术,用于将一个Redis服务器的数据同步到其他从服务器上。主从同步有助于提高系统的可用性和读取性能。 下面是Redis主从同步的基本步骤: 1. 配置主服务器:打开主服务器的配置文件(redis.conf),设置`slaveof`参数为从服务器的IP地址和端口。例如:`slaveof <slave_ip> <slave_port>`。保存配置文件并重启主服务器。 2. 配置从服务器:打开从服务器的配置文件(redis.conf),设置`slaveof`参数为主服务器的IP地址和端口。例如:`slaveof <master_ip> <master_port>`。保存配置文件并重启从服务器。 3. 启动主从同步:启动主服务器和从服务器。 4. 检查主从状态:在主服务器上执行命令`INFO replication`,可以查看主从同步的状态信息。如果显示`connected_slaves`为非零值,表示有从服务器连接到主服务器。 5. 检查同步状态:在从服务器上执行命令`INFO replication`,可以查看从服务器的同步状态信息。其中的`master_link_status`字段应为`up`,表示从服务器与主服务器的连接正常。 通过以上步骤完成配置后,主服务器会将写操作记录到本地日志文件,并将这些操作发送给连接的从服务器。从服务器会接收并执行这些写操作,以保持与主服务器数据的一致性。 需要注意的是,Redis主从同步是异步的,从服务器的数据可能会有一定的延迟。另外,主从同步也可以设置密码认证、增加安全性,并且可以配置多个从服务器来实现数据的多副本备份。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值