设为首页 收藏本站
查看: 527|回复: 0

[经验分享] redis单实例安装

[复制链接]

尚未签到

发表于 2018-11-3 06:01:15 | 显示全部楼层 |阅读模式
  redis-3.2.0编译安装(单个实例)
  #参考链接:http://www.cnblogs.com/langtianya/p/5189234.html
  提示:2.x版本的redis不支持集群模式
  wget http://download.redis.io/releases/redis-3.2.6.tar.gz
  yum -y install wget lrzsz tree openssl openssl-devel zlib zlib-devel pcre pcre-devel make gcc gcc-c++ libevent libevent-devel ncurses ncurses-devel
  redis安装后,不需要安装tcl8.5也是可以使用的,但是要使用Redis的测试用例也就是tests目录下面用的是tcl脚本,就需要安装tcl8.5 或更高版本
  cd /usr/local/src
  wget -P cd /usr/local/src  https://nchc.dl.sourceforge.net/project/tcl/Tcl/8.6.6/tcl8.6.6-src.tar.gz
  tar xf tcl8.6.6-src.tar.gz
  cd /usr/local/src/tcl8.6.6/unix
  ./configure --prefix=/usr/local/tcl8.6.6 --enable-64bit
  make -j 2 && make install
  添加环境变量
  echo "export PATH=/usr/local//tcl8.6.6/bin:$PATH" >>/etc/profil
  source /etc/profile
  运行tclsh检测安装结果:
  [root@Allen2 unix]# tclsh
  %
  表示成功   如果出现command not found 可以重新编译或者yum -y install tcl
  如果已经下载redis那上传到/usr/local/src
  如果没有下载 那么如下:
  cd /usr/local/src
  wget -P /usr/local/src  http://download.redis.io/releases/redis-3.2.0.tar.gz
  tar xf redis-3.2.0.tar.gz
  cd redis-3.2.0
  make PREFIX=/usr/local/redis install  #指定安装路径
  这样安装完以后,在/usr/local/redis下面有一个/bin目录,里面有5个redis命令脚本
  报错:
  make时如果遇到zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory错误,用
  make MALLOC=libc && make install              #重新安装
  #更改配置文件保证安全性
  mkdir -p /usr/local/redis/{etc,logs}
  #拷贝配置文件
  cp /usr/local/src/redis-3.2.0/redis.conf /usr/local/redis/etc/redis.conf
  cp /usr/local/src/redis-3.2.0/sentinel.conf /usr/local/redis/etc/sentinel.conf
  #备份配置文件
  cp /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.bak
  cp /usr/local/redis/etc/sentinel.conf /usr/local/redis/etc/sentinel.conf.bak
  #拷贝一些命令启动文件
  cp /usr/local/redis/bin/* /usr/bin/     或者是到/usr/sbin下
  #更改配置文件
  vim /usr/local/redis/etc/redis.conf
  bind 192.168.1.106          #这个bind意思是绑定ip   一般生产线我们写成内网的ip 防止外网ip暴露  或者0.0.0.0允许所有,然后阿里云后台做端口限制
  注意:如果这里没有允许0.0.0.0  执行redis-cli -h 127.0.0.1 -p 6379 这样可能本地都登陆不上的
  port 6379               #默认端口6379   (线上可以参考别的服务器上的端口)
  #设置密码,提供远程登录(可以不设置,看具体需求):
  打开redis.conf文件(一般是我们启动redis时候指定的那个文件了)
  vim /usr/local/redis/etc/redis.conf
  requirepass 123456                  #找到requirepass 取消注释  密码改成123456
  更改配置文件:
  timeout 30
  daemonize yes
  pidfile /usr/local/redis/logs/redis.pid     #这个根据自己需求和个人习惯
  logfile /usr/local/redis/logs/redis.log   #需要mkdir一下这个目录
  dir /usr/local/redis
  #指定配置文件方式启动redis(一般公司生产线采用这样的方法启动):
  /usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf
  然后启动:
  nohup  /usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf > /dev/null 2>&1 &
  写到/etc/rc.local里面,让他开机自启:
  echo "/usr/bin/nohup /usr/local/redis/bin/redis-server  /usr/local/redis/etc/redis.conf > /dev/null 2>&1 &" >>/etc/rc.local
  在bin下的可执行程序:
  redis-server:  redis服务器
  redis-cli:  命令行客户端
  redis-benchmark:  redis的性能测试工具
  redis-check-aof:  AOF文件修复工具
  redis-check-dump:  RDB文件检测工具
  redis.conf   :  redis的配置文件
  sentinel.conf:redis哨兵的配置文件
  这两个文件在redis包解压目录下
  采用默认配置文件方式启动redis(一般不这样启动):
  /usr/local/redis/bin/redis-server
  我们可以把/usr/local/redis/bin下面的命令拷贝到/usr/bin下面 这样就可以直接使用命令不需要进去redis安装目录了
  如果需要安装多个实例的redis在一个服务器上,可以拷贝redis.conf 更改里面的配置文件 监听端口 日志文件 数据文件等路径改成不一样的 然后用redis-server指定配置文件启动即可
  主从redis设置:
  # slaveof  
  slaveof 192.168.20.126 6379          #指定主的ip和端口
  如果master设置了验证密码,还需配置masterauth
  # masterauth
  主redis设置密码是:
  requirepass    123456   #设置连接密码为123456
  然后在master执行set age 24
  在slave执行get age,看是否能得到24,如果能够得到值则说明配置成功
  可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化
  master配置文件中的save就是:
  #save 900 1
  #save 300 10
  #save 60 10000
  注释掉上面三个save就行了
  拥有主从服务器的好处(从服务器是只读的,可以一主多从)
  1.    主服务器进行读写时,会转移到从读,减轻服务器压力
  2.    热备份 主从都可以设置密码,也可以密码不一致
  关闭redis客户端:
  /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
  如果做了redis主从,并且redis-master设置了连接密码:
  在redis-master上 连接:
  [root@Allen redis]# redis-cli  -p 6379
  127.0.0.1:6379> info replication
  NOAUTH Authentication required.
  127.0.0.1:6379> exit
  我们会看到你报错,就是提示你 需要认证
  [root@Allen redis]# redis-cli  -p 6379 -a 123456          #用-a参数指定 设置的密码登录
  127.0.0.1:6379> info replication
  # Replication
  role:master
  connected_slaves:1
  slave0:ip=192.168.20.126,port=7379,state=online,offset=351,lag=0
  master_repl_offset:351
  repl_backlog_active:1
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:2
  repl_backlog_histlen:350
  127.0.0.1:6379>
  红色的代表redis-slave  有一个从redis已经连上,ip是: 192.168.20.126 端口是: 7379  状态:online 在线
  在redis-slave上,远程连接redis-master:
  [root@Allen2 logs]# redis-cli -h 192.168.20.125 -p 6379  #redis-master的ip  端口
  192.168.20.125:6379> info replication
  NOAUTH Authentication required.            #没有用-a指定连接密码,同样提示需要认证
  192.168.20.125:6379>
  [root@Allen2 logs]# redis-cli -h 192.168.20.125 -p 6379 -a 123456    #-a指定远程的密码
  192.168.20.125:6379> info replication
  # Replication
  role:master
  connected_slaves:1
  slave0:ip=192.168.20.126,port=7379,state=online,offset=729,lag=1
  master_repl_offset:729
  repl_backlog_active:1
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:2
  repl_backlog_histlen:728
  192.168.20.125:6379>
  登录redis-slave:
  [root@Allen2 logs]# redis-cli  -p 7379
  127.0.0.1:7379> info replication
  # Replication
  role:slave                                     #redis-slave
  master_host:192.168.20.125      #redis-master的ip
  master_port:6379                        #redis-master的端口
  master_link_status:up                #redis-master的状态
  master_last_io_seconds_ago:6
  master_sync_in_progress:0
  slave_repl_offset:1023
  slave_priority:100                         #redis-slave的优先级
  slave_read_only:1
  connected_slaves:0
  master_repl_offset:0
  repl_backlog_active:0
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:0
  repl_backlog_histlen:0
  127.0.0.1:7379>
  验证主从同步:
  redis-master:192.168.20.125
  redis-slave:192.168.20.126
  登录redis-master:
  [root@Allen redis]# redis-cli  -h 127.0.0.1 -p 6379 -a 123456
  127.0.0.1:6379>
  127.0.0.1:6379> set name allen
  OK
  127.0.0.1:6379> get name
  "allen"
  登录redis-slave:
  [root@Allen2 redis]# redis-cli -h 127.0.0.1 -p 7379
  127.0.0.1:7379> get name
  "allen"
  看到主从已经同步
  默认 redis主从是分离的:
  登录redis-slave:
  [root@Allen2 redis]# redis-cli -h 127.0.0.1 -p 7379
  127.0.0.1:7379> set name abc
  (error) READONLY You can't write against a read only slave.
  127.0.0.1:7379>
  可以看到 redis-slave 不能使用set  提示只能读,不能写
  主从切换:
  停止主redis:
  [root@Allen redis]#redis-cli -h 127.0.0.1 -p 6379  shutdown    #如果这个命令没用,那就kill -9 杀死redis进程
  [root@Allen redis]# redis-cli -h 127.0.0.1 -p 6379 -a 123456 shutdown   #由于我们设置了验证密码,所以我们登陆或者杀死进程需要使用-a指定验证密码,并且在shutdown的时候-a指定密码一定要在shutdown前面,否则不会生效
  Could not connect to Redis at 127.0.0.1:6379: Connection refused
  not connected>
  将从redis设置成主redis:
  [root@Allen2 redis]# redis-cli -p 7379 slaveof NO ONE
  OK
  测试主从redis是否切换:
  [root@Allen2 redis]# redis-cli -p 7379
  127.0.0.1:7379> set name kkk
  OK
  127.0.0.1:7379> get name
  "kkk"
  127.0.0.1:7379>
  当原来的主redis恢复了以后,要将他切换回去:
  1)将现在的主redis的数据进行保存
  [root@Allen2 redis]# redis-cli -p 7379
  127.0.0.1:7379> set name kkk
  OK
  127.0.0.1:7379> get name
  "kkk"
  127.0.0.1:7379> set name 123
  OK
  127.0.0.1:7379> get name
  "123"
  127.0.0.1:7379> save
  OK
  127.0.0.1:7379> get name
  "123"
  127.0.0.1:7379> exit
  2)将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录
  如果数据量大的话就用tar打包然后传过去到原先的主redis的根目录。这里的根目录是/usr/local/redis 目录。以为这是我的安装目录,我配置文件里面dump.rdb也在这个目录下,因为我启动redis就在这个目录下启动的。如果我们的redis-master上dump.rdb不是这个名字,那么我们拷贝过来后,要mv改成原来redis-master的rdb文件的名字,我这里直接scp了
  [root@Allen2 redis]# scp dump.rdb  192.168.20.125:/usr/local/redis
  The authenticity of host '192.168.20.125 (192.168.20.125)' can't be established.
  RSA key fingerprint is 2c:cd:a9:58:f0:32:79:66:a2:48:ab:de:a8:59:7a:d9.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '192.168.20.125' (RSA) to the list of known hosts.
  root@192.168.20.125's password:
  dump.rdb
  3)启动原来的主redis
  [root@Allen redis]# redis-server ./redis6379.conf
  [root@Allen redis]# ps -ef | grep redis
  root       8176      1  0 22:52 ?        00:00:00 redis-server 0.0.0.0:6379
  root       8180   7760  0 22:52 pts/0    00:00:00 grep redis
  4)在现在的主redis中切换
  [root@Allen redis]# redis-cli -h 192.168.20.126 -p 7379  slaveof 192.168.20.125 6379
  OK
  注意:redis-cli -h 192.168.20.126 -p 7379 指定从redis,slaveof 后面 是原先主redis的ip和端口192.168.20.125 6379
  [root@Allen redis]# redis-cli -p 6379
  127.0.0.1:6379> info
  NOAUTH Authentication required.
  127.0.0.1:6379> exit
  [root@Allen redis]# redis-cli -p 6379 -a 123456
  127.0.0.1:6379> info replication
  # Replication
  role:master
  connected_slaves:1
  slave0:ip=192.168.20.126,port=7379,state=online,offset=29,lag=1
  master_repl_offset:29
  repl_backlog_active:1
  repl_backlog_size:1048576
  repl_backlog_first_byte_offset:2
  repl_backlog_histlen:28
  127.0.0.1:6379>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629947-1-1.html 上篇帖子: Redis Cluster高可用(HA)集群环境搭建详细步骤 下篇帖子: redis的info-Allen
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表