linux上一鍵安裝redis以及主從配置(指令碼自動安裝)
阿新 • • 發佈:2019-01-04
一、環境配置 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