centos7安装redis6.0.5步骤

1.检查c安装环境

查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5

gcc -v
# 升级gcc到5.3及以上,如下:
yum -y install gcc
升级到gcc 9.3:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
这样退出shell重新打开就是新版的gcc了

2.下载redis6  redis下载

$ wget http://download.redis.io/releases/redis-6.0.5.tar.gz
$ tar xzf redis-6.0.5.tar.gz
$ cd redis-6.0.5
$ make install PREFIX=/home/vagrant/redis6379

 注:make install PREFIX=/home/vagrant/redis6379是把redis编译安装到这个目录,方便维护

执行make install后生成

3.复制redis-6.0.5下的redis.conf到当前/home/vagrant/redis6379/bin目录下


cp redis.conf ../redis6379/bin/

4.启动redis服务端和客户端

在/home/vagrant/redis6379/bin执行

#控制台启动redis服务端
[vagrant@vagrant1 bin]$ ./redis-server redis.conf 
启动redis客户端
[vagrant@vagrant1 bin]$ ./redis-cli 

5.redis.conf一些配置修改

bind 127.0.0.1修改为#bind 127.0.0.1,开启远程访问

daemonize no修改为daemonize yes,在后台运行

关闭密码访问保护,不关闭使用redis manage工具连接可能出现报错情况

protected-mode yes 修改为protected-mode no

-----------------------------------------------------------------------------------------------------------------------------

简单的主从复制

什么是主从复制

我们可以通过slaveof <host> <port>命令,或者通过配置slaveof选项,来使当前的服务器(slave)复制指定服务器(master)的内容,被复制的服务器称为主服务器(master),对主服务器进行复制操作的为从服务器(slave)

主服务器master可以进行读写操作,当主服务器的数据发生变化,master会发出命令流来保持对salve的更新,而从服务器slave通常是只读的(可以通过slave-read-only指定),在主从复制模式下,即便master宕机了,slave是不能变为主服务器进行写操作的

一个master可以有多个slave,即一主多从;而slave也可以接受其他slave的连接,形成“主从链”层叠状结构(cascading-like structure),自 Redis 4.0 起,所有的sub-slave也会从master收到完全一样的复制流。如下图

主从复制的好处:

  • 数据冗余,实现数据的热备份
  • 故障恢复,避免单点故障带来的服务不可用
  • 读写分离,负载均衡。主节点负载读写,从节点负责读,提高服务器并发量
  • 高可用基础,是哨兵机制和集群实现的基础

主从复制的配置

使用和配置主从复制是比较简单的,在从服务器slave的配置文件中设置slaveof选项,或者直接使用slaveof <masterip> <masterport>命令

这里我使用3台虚拟机来搭建一下,主服务器的ip为192.168.249.20,两个从服务器的ip分别为192.168.249.21192.168.249.21,端口号都为6379,具体的配置如下

主服务器并不需要额外多配置什么,这里我们先把三台服务器的都需要改的地方列一下

 

# 设置为后台运行
daemonize yes
# 保存pid的文件,如果是在一台机器搭建主从,需要区分一下
pidfile /var/run/redis_6379.pid
# 绑定的主机地址,这里注释掉,开放ip连接
#bind 127.0.0.1
# 指定日志文件
logfile "6379.log"

在从服务器中添加配置slaveof <masterport> <masterport>选项,在5.0版本中使用了replicaof代替了slaveofhttps://github.com/antirez/redis/issues/5335),slaveof还可以继续使用,不过建议使用replicaof。如果是使用命令行来复制的话,重启之后会无效

 

# replicaof <masterip> <masterport>
replicaof 192.168.249.20 6379

配置好redis.conf之后,我们分别启动3台服务器,可以用户命令info replication查看复制信息

 

192.168.249.20:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.249.22,port=6379,state=online,offset=700,lag=0
slave1:ip=192.168.249.21,port=6379,state=online,offset=700,lag=0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:700
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:700

192.168.249.21:6379> info replication
# Replication
role:slave
master_host:192.168.249.20
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57
repl_backlog_histlen:798

192.168.249.22:6379> info replication
# Replication
role:slave
master_host:192.168.249.20
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:854

接下来我们可以在主服务器中写入数据,然后可以在其他的从服务器中读取数据

 

192.168.249.20:6379> set test 'Hello World'
OK

192.168.249.21:6379> get test
"Hello World"

192.168.249.22:6379> get test
"Hello World"

然后我们试着在从服务器中写入数据,会提示不能在只读的从服务器中写入数据

 

192.168.249.21:6379> set test2 hello
(error) READONLY You can't write against a read only replica.

如果我们需要slave对master的复制进行验证,可以在master中配置requirepass <password>选项设置密码

那么需要在从服务器中使用该密码,可以使用命令config set masterauth <password>,或者在配置文件中设置masterauth <password>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值