linux上一键安装redis以及主从配置(脚本自动安装)

一、环境配置
    1:任何位置创建文件夹
       mkdir redis;cd  redis;mkdir conf;cd conf
       #下载安装安装包
       wget http://www.redis.cn/download.html/redis-5.0.3.tar.gz
    2:书写自动安装redis的脚本和自动安装主从
       cd ..
       vim install.sh
    3:在conf目录中再编写启动脚本redis
      cd conf;vim redis
       

#!/bin/bash

cd  /usr/local/redis/bin

case $1 in 
start)
    ./redis-server redis.conf | grep "is starting" > /dev/null && echo "redis Successful opening" || echo "redis Open failure"
    ;;
stop)
    ./redis-cli shutdown;ps -ef | grep -v grep | grep  redis-server  && echo "redis Shutdown failure"  || echo "redis Shut down successfully"
    ;;
restart)
    ./redis-cli shutdown;ps -ef | grep -v grep | grep  redis-server  && echo "redis Shutdown failure"  || echo "redis Shut down successfully"
    ./redis-server redis.conf | grep "is starting" > /dev/null && echo "redis Successful opening" || echo "redis Open failure"
    ;;
*)
    exit
    exit
    ;;
esac



       
#!/bin/bash



redis-install(){
yum install gcc-c++  wget vim -y

cd conf

#启动和关闭脚本
chmod +x redis
cp redis  /usr/bin/

tar -zxf redis-5.0.3.tar.gz
cd redis-5.0.3
make MALLOC=libc
make
cd src
make install PREFIX=/usr/local/redis
cd ..
cp redis.conf /usr/local/redis/bin/
cd ..
rm -rf redis-5.0.3/
cd /usr/local/redis/bin

##让redis可以后台启动
AA=`cat -n redis.conf  | grep daemonize | grep -v "#" | awk '{print $1}'`
sed -i ''"$AA"'c  daemonize yes'   redis.conf

#开机自启:
echo  "/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis-conf"  >> /etc/rc.local

#创建登录数据库的命令
cp /usr/local/redis/bin/redis-cli /usr/bin/

clear
echo "启动 redis start "
echo "关闭 redis stop "
echo "重启 redis restart"
}


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~主从搭建~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#注意事项:
#    1:主从模式时matser节点开启持久化(不开的话,matser节点重启,从会出现丢失数据)
#	2:先开启主机上的服务,后开机从机上的服务
#	3:默认是开启保护模式protected-mode yes(cat -n /usr/local/redis/bin/redis.conf | grep protected-mode)
#	   生效条件:bind被注释掉和没有配置访问密码的时候才生效
#	4:dir:指定rdb文件路径(在一台服务器上启动多个Redis服务时,注意修改为不同文件路径)
#	5:从服务默认为只读模式 replica-read-only yes


master(){
#主库操作:

read -p "请输入本机内网ip:"  IP
clear
read -p  "请设置redis密码:"  Pass1
clear
read -p "请设置redis主从连接密码:"   PAss1

#redis只接收来自该IP的请求(这里没有设置,就接收所有请求)
AA=`cat -n /usr/local/redis/bin/redis.conf | grep 127.0.0.1 | grep -v "#" | awk '{print $1}'`
sed -i ''"$AA"'c  bind '"$IP"''  /usr/local/redis/bin/redis.conf

#配置监听端口(默认6379)
BB=`cat -n /usr/local/redis/bin/redis.conf | grep port | grep -v "#" | awk '{print $1}'`
sed -i ''"$BB"'c  port 6379'  /usr/local/redis/bin/redis.conf

#配置log文件地址logfile:
CC=`cat -n /usr/local/redis/bin/redis.conf | grep logfile | grep -v "#" | awk '{print $1}'`
sed -i ''"$CC"'c  logfile "6379.log"'  /usr/local/redis/bin/redis.conf

#配置镜像备份的名称(dbfilename:镜像备份文件的文件名)
DD=`cat -n /usr/local/redis/bin/redis.conf | grep dbfilename | grep -v "#" | awk '{print $1}'`
sed -i ''"$DD"'c  dbfilename "dump-6379.rdb"'  /usr/local/redis/bin/redis.conf

#启动压缩(rdbcompression:在进行镜像备份时,是否进行压缩)
EE=`cat -n /usr/local/redis/bin/redis.conf | grep rdbcompression | grep -v "#" | awk '{print $1}'`
sed -i ''"$EE"'c  rdbcompression yes'  /usr/local/redis/bin/redis.conf

##设置主从连接的密码
FF=`cat -n /usr/local/redis/bin/redis.conf | grep masterauth | awk '{print $1}'`
sed -i ''"$FF"'c  masterauth '"$PAss1"''  /usr/local/redis/bin/redis.conf

#设置redis的密码
GG=`cat -n /usr/local/redis/bin/redis.conf | grep requirepass | grep -v I | awk '{print $1}'`
sed -i ''"$GG"'c requirepass '"$Pass1"''  /usr/local/redis/bin/redis.conf

#设置最大连接数(最大支持10000个)
HH=`cat -n /usr/local/redis/bin/redis.conf | grep maxclients | awk '{print $1}'`
sed -i ''"$HH"'c  maxclients 10000'  /usr/local/redis/bin/redis.conf

clear
echo "本机redis密码: ${Pass1}"
echo  "已设置redis主从连接密码:  ${PAss1}"
echo "请先启动主,再启动从!!"
echo "再验证主从:  redis-cli -h $IP -p 6379 -a redis密码"
echo  "进入数据库再使用:info replication"
}



slave(){
#从库操作:

read -p "请输入本机内网ip:"  IPP
clear
read -p "请设置redis密码:"  Pass
clear
read -p "请输入redis主的ip地址:"  IIPP
clear
read -p "请输入redis主的port :"  Port
clear
read -p "请输入redis主从连接密码:"   PAss

#redis只接收来自该IP的请求(这里没有设置,就接收所有请求)
AAA=`cat -n /usr/local/redis/bin/redis.conf | grep 127.0.0.1 | grep -v "#" | awk '{print $1}'`
sed -i ''"$AAA"'c  bind '"$IPP"''  /usr/local/redis/bin/redis.conf

#配置监听端口(默认6379)
BBB=`cat -n /usr/local/redis/bin/redis.conf | grep port | grep -v "#" | awk '{print $1}'`
sed -i ''"$BBB"'c  port 6380'  /usr/local/redis/bin/redis.conf

#配置log文件地址logfile:
CCC=`cat -n /usr/local/redis/bin/redis.conf | grep logfile | grep -v "#" | awk '{print $1}'`
sed -i ''"$CCC"'c  logfile "6380.log"'  /usr/local/redis/bin/redis.conf

#配置镜像备份的名称(dbfilename:镜像备份文件的文件名)
DDD=`cat -n /usr/local/redis/bin/redis.conf | grep dbfilename | grep -v "#" | awk '{print $1}'`
sed -i ''"$DDD"'c  dbfilename "dump-6380.rdb"'  /usr/local/redis/bin/redis.conf

#启动压缩(rdbcompression:在进行镜像备份时,是否进行压缩)
EEE=`cat -n /usr/local/redis/bin/redis.conf | grep rdbcompression | grep -v "#" | awk '{print $1}'`
sed -i ''"$EEE"'c  rdbcompression yes'  /usr/local/redis/bin/redis.conf

#配置主的ip和端口以及主从连接密码
FFF=`cat -n /usr/local/redis/bin/redis.conf | grep replicaof | grep -v M | awk '{print $1}'`
sed -i  ''"$FFF"'c  replicaof '"$IIPP"' '"$Port"''  /usr/local/redis/bin/redis.conf
FFF2=`cat -n /usr/local/redis/bin/redis.conf | grep masterauth | awk '{print $1}'`
sed -i ''"$FFF2"'c  masterauth '"$PAss"''  /usr/local/redis/bin/redis.conf

#设置redis密码
GGG=`cat -n /usr/local/redis/bin/redis.conf | grep requirepass | grep -v I | awk '{print $1}'`
sed -i ''"$GGG"'c requirepass '"$Pass"''  /usr/local/redis/bin/redis.conf

#设置最大连接数(最大支持10000个)
HHH=`cat -n /usr/local/redis/bin/redis.conf | grep maxclients | awk '{print $1}'`
sed -i ''"$HHH"'c  maxclients 10000'  /usr/local/redis/bin/redis.conf


clear
echo "本机redis密码: ${Pass}"
echo "请先启动主,再启动从!!"
echo "再验证主从:  redis-cli -h $IPP -p 6380 -a redis密码"
echo  "进入数据库再使用:info replication"

}

muan(){
echo "1:安装redis "
echo "2:安装redis主 "
echo "3:安装redis从 "
}

muan
read -p "请输入选择:"  XZ
case $XZ in
1)
  exit;;
2)
  master;;
3)
  slave;;
*)
  exit
  exit;;
esac
 

猜你喜欢

转载自blog.csdn.net/zzhlinux911218/article/details/85616857