redis主从复制搭建

环境背景
centos 6.5
redis 4.0.14

注意:redis不同版本,配置文件里面命令不一样

节点信息
master
node01 192.168.71.101 6379
slave1
node02 192.168.71.102 6379
slave2
node03 192.168.71.103 6379
安装redis

我是把redis安装在opt目录,安装过程很简单,分下载解压和编译具体命令如下

cd /opt
//下载安装
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
tar zxvf redis-4.0.14.tar.gz
//重命名
mv redis-4.0.14 redis
//编译
cd redis/src
make

如果编译报错,根据报错日志需要安装gcc,用一下命令

yum install gcc -y

安装完再执行编译make,如果还报 Newer version of jemalloc required,再执行下面命令

make MALLOC=libc

如果海报 You need tcl 8.5 or newer in order to run the Redis test,就再安装tcl

yum install tcl -y

至此redis已经就绪准备客户端的连接,当然此时的redis是没有设置密码的,如果你想设置密码,可以修改

redis.conf文件requirepass 后面就是你的密码值。比如我设置为123456,现在开启redis,并用redis-cli连接

[root@node01 ~]# cd /opt/redis/src
[root@node01 src]# ./redis-server ../redis.conf 
[root@node01 src]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379>

用同样的步骤在node02和node03节点都装上redis。

搭建主从
master

打开master节点也就是node01的redis.conf配置文件,需要修改以下几处

开启守护进程

daemonize yes

关闭保护模式

protected-mode no

允许其他服务器访问

bind 0.0.0.0

打开端口,我这里简单粗暴直接关闭防火墙

service iptables stop
slave

打开node02和node03的redis.conf配置文件,需要修改以下几处

开启守护进程

daemonize yes

关闭保护模式

protected-mode no

指定master

slaveof 192.168.101 6379

这里说明以下我的redis是4X版本,命令是slaveof ,redis 5X版本后是replicaof所以redis版本一定要指定

指定master密码(如果master节点没有设置密码,可省略)

masterauth 123456
验证阶段

开启master然后开启slave节点的redis服务,成功后用redis-cli连接master用info replication查看

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.71.103,port=6379,state=online,offset=19699,lag=1
slave1:ip=192.168.71.102,port=6379,state=online,offset=19699,lag=0
master_replid:86456c0c31afb5ae304dc58fe336c2cc7166ee0b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:19699
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:19699
127.0.0.1:6379> 

去slave节点查看

[root@node02 src]# ./redis-server ../redis.conf 
[root@node02 src]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.71.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:19895
slave_priority:100
slave_read_only:0
connected_slaves:0
master_replid:86456c0c31afb5ae304dc58fe336c2cc7166ee0b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:19895
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:19895
127.0.0.1:6379> 

如果master_link_status状态是down,自己检查一下redis日志,很可能是你master节点没有很好执行我上面的bind 0.0.0.0 和开启6379端口。不信你可以用telnet 192.168.71.101 6379试试看。

如果你的master_link_status状态跟我一样是up,那么恭喜你,redis主从复制搭建你已经成功完成了,是不是很简单哈哈。

回到正题,我们知道redis从节点会通过增量或者快照的方式同步master节点的数据。我们测试一下,去master节点设置一些key值,看从节点有没有同步过来。

[root@node01 src]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set hello redis
OK
127.0.0.1:6379> 

我们在master节点设置hello 值为redis,再去从节点看看有没有hello这个值

[root@node02 src]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> keys *
1) "hello"
127.0.0.1:6379> get hello
"redis"
127.0.0.1:6379> 

另外一台也是一样

[root@node03 redis]# cd src
[root@node03 src]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> keys *
1) "hello"
127.0.0.1:6379> get hello
"redis"
127.0.0.1:6379>

完结撒花!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值