两个关于redis的shell脚本

 第一个是自动化配置redis主从模式、哨兵模式、集群模式的shell脚本:

#!/bin/bash
	1)配置redis主从模式
	2)配置redis哨兵模式
	3)配置redis集群模式
	read -p "输入你的选择(1-3):" op
zcfz(){
	cd /etc/redis/conf
	#生成redis配置文件。
	for i in {6379..6381};do cp ./redis.conf ${i}.conf;done
	#修改监听ip
        for i in {6379..6381};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
	#关闭保护设置
	for i in {6379..6381};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
	#修改监听端口
	for i in {6380..6381};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
	#开启守护进程
	for i in {6379..6381};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
	#指定pid存放目录
	for i in {6379..6381};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
	#指定运行日志文件
       for i in {6379..6381};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
	#指定存储数据的位置
	for i in {6379..6381};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
	#配置slave角色文件
	for i in {6380..6381};do sed -i "s/# slaveof <masterip> <masterport>/slaveof 192.168.201.5 6379/" ${i}.conf;done
	#配置master角色文件
	sed -i "s/# min-slaves-to-write 3/min-slaves-to-write 2/" 6379.conf
	sed -i "s/# min-slaves-max-lag 10/min-slaves-max-lag 10/" 6379.conf
}
sb(){
	cd /etc/redis/conf
	#生成redis配置文件。
	for i in {6382..6384};do cp ./redis.conf ${i}.conf;done
	#修改监听ip
        for i in {6382..6384};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
	#关闭保护设置
	for i in {6382..6384};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
	#修改监听端口
	for i in {6382..6384};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
	#开启守护进程
	for i in {6382..6384};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
	#指定pid存放目录
	for i in {6382..6384};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
	#指定运行日志文件
       for i in {6382..6384};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
	#指定存储数据的位置
	for i in {6382..6384};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
	#配置slave角色文件
	for i in {6383..6384};do sed -i "s/# slaveof <masterip> <masterport>/slaveof 192.168.201.5 6379/" ${i}.conf;done
	#配置master角色文件
	sed -i "s/# min-slaves-to-write 3/min-slaves-to-write 2/" 6382.conf
	sed -i "s/# min-slaves-max-lag 10/min-slaves-max-lag 10/" 6382.conf
#
	#生成哨兵配置文件
	for i in {26379..26381};do cp ./redis-sentinel.conf ${i}.sentinel.conf;done
	#修改监听ip
	for i in {26379..26381};do sed -i "s/port 26379/bind 192.168.201.5 \nport ${i}/" ${i}.sentinel.conf;done
	#修改监听主机ip地址、端口及从机数量
	for i in {26379..26381};do sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor mymaster 192.168.201.5 6382 2/" ${i}.sentinel.conf;done
	#修改日志存储位置
	for i in {26379..26381};do sed -i "s#logfile /var/log/redis/sentinel.log#logfile /etc/redis/log/${i}.sentinel.log \ndaemonize yes#" ${i}.sentinel.conf;done
}
jq(){
	cd /etc/redis/conf
	#生成redis配置文件。
	for i in {6385..6390};do cp ./redis.conf ${i}.conf;done
	#修改监听ip
        for i in {6385..6390};do sed -i "s/bind 127.0.0.1/bind 192.168.201.5/" ${i}.conf;done
	#关闭保护设置
	for i in {6385..6390};do sed -i "s/protected-mode yes/protected-mode no/" ${i}.conf;done
	#修改监听端口
	for i in {6385..6390};do sed -i "s/port 6379/port ${i}/" ${i}.conf;done
	#开启守护进程
	for i in {6385..6390};do sed -i "s/daemonize no/daemonize yes/" ${i}.conf;done
	#指定pid存放目录
	for i in {6385..6390};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /etc/redis/run/redis_${i}.pid#" ${i}.conf;done
	#指定运行日志文件
       for i in {6385..6390};do sed -i "s#logfile /var/log/redis/redis.log#logfile /etc/redis/log/${i}.log#" ${i}.conf;done
	#指定存储数据的位置
	for i in {6385..6390};do sed -i "s#dir /var/lib/redis#dir /etc/redis/data/#" ${i}.conf;done
	#生成集群配置
	for i in {6385..6390};do echo -e "cluster-enabled yes \ncluster-config-file nodes-${i}.conf \ncluster-node-timeout 15000" >> ${i}.conf;done
	#启动服务
	for i in {6385..6390};do redis-server ${i}.conf;done
	#节点加入集群
	for i in {6386..6390};do redis-cli -h 192.168.201.5 -p 6385 cluster meet 192.168.201.5 $i;done
	#分槽,同时也规划master节点
	redis-cli -h 192.168.201.5 -p 6385 cluster flushslots
	redis-cli -h 192.168.201.5 -p 6386 cluster flushslots
	redis-cli -h 192.168.201.5 -p 6387 cluster flushslots
	redis-cli -h 192.168.201.5 -p 6385 cluster addslots {0..5461}
	redis-cli -h 192.168.201.5 -p 6386 cluster addslots {5462..10922}
	redis-cli -h 192.168.201.5 -p 6387 cluster addslots {10923..16383}
	#建立主从关系
	node1=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6385/'{print $1}')
	redis-cli -h 192.168.201.5 -p 6388 cluster replicate $node1
	node2=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6386/'{print $1}')
	redis-cli -h 192.168.201.5 -p 6389 cluster replicate $node2
	node3=$(redis-cli -h 192.168.201.5 -p 6385 cluster nodes |awk -F ' ' /6387/'{print $1}')
	redis-cli -h 192.168.201.5 -p 6390 cluster replicate $node3
}
case $op in
	1)
	zcfz
	;;
	2)
	sb
	;;
	3)
	jq
	;;
	*)
	echo "输入失败"
esac
#杀死所有reidis进程
#for i in {`netstat -anptu |awk /redis/'{print $NF}'|awk -F '/' '{print $1}'`};do kill $i;done

第二个是redis服务的启停脚本

#!/bin/bash
        read -p '请输入redis服务端口:' port
        ml="/etc/redis/"
        if
                [ -f $ml'conf'/$port'.conf' ]; then
        if
                [ "$1" = "start" ]; then
                redis-server $ml'conf'/$port'.conf'
        elif
                [ "$1" = "stop" ]; then
                cat $ml'/run/redis_'$port'.pid' &> /dev/null
        if [ $? != 0 ]; then
                echo 未启动此服务,不用关闭......
        else
                tar zcvf  $ml'data/'$port.rdb-$(date +%s).tar.gz $ml'data/'$port'.rdb' &> /dev/null 
                redis_pid=$(cat $ml'run/redis_'$port'.pid')
                kill $redis_pid
        fi
        elif
                [ "$1" = "restart" ]; then
                cat $ml'run/redis_'$port'.pid' &> /dev/null
        if [ $? = 0 ]; then
                tar zcvf  $ml'data/'$port.rdb-$(date +%s).tar.gz $ml'data/'$port'.rdb' &> /dev/null 
                redis_pid=$(cat $ml'run/redis_'$port'.pid')
                kill $redis_pid &&
                redis-server $ml'conf/'$port'.conf'
        else
                redis-server $ml'conf/'$port'.conf'
        fi
        else
                echo "USEAGE: $0 start | stop | restart"
        fi
        else
                echo 配置文件不存在
        fi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值