好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > shell 備份數據庫、代碼上線的腳本

shell 備份數據庫、代碼上線的腳本

熱門標簽:北京電銷機器人對市場的影響 外呼系統的合法性 同花順電話機器人微信 湖北孝感如何辦理 威海電銷外呼系統好用嗎 房產證地圖標注的兩個面積 地圖標注x是啥意思 武漢語音電銷機器人加盟 輝縣市地圖標注

Shell 腳本

Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。 業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。

備份MySQL數據庫

場景:

一臺MySQL服務器,跑著5個數據庫,在沒有做主從的情況下,需要對這5個庫進行備份

需求:

1)每天備份一次,需要備份所有的庫
2)把備份數據存放到/data/backup/下
3)備份文件名稱格式示例:dbname-2019-11-23.sql
4)需要對1天以前的所有sql文件壓縮,格式為gzip
5)本地數據保留1周
6)需要把備份的數據同步到遠程備份中心,假如本機可以直接通過rsync命令同步,同步目標地址為192.168.234.125,數據存放目錄:/data/mysqlbak/
7)遠程備份數據要求保留1個月

腳本:

#!/bin/bash
mysqldump="/usr/local/mysql/bin/mysqldump"
bakdir="/data/backup"
bakuser="backup"
passwd="backup123"
d1=`date +%F`
d2=`date +%d`
#將后面所有的輸出都寫入到日志
exec > tmp/bak.log
echo "mysql bakup begin at `date`"
#循環遍歷數據庫并導出
for db in db1 db2 db3 db4 db5
do
 $mysqldump -u$bakuser -p$passwd $db > $bakdir/$db-$d1.sql
done
#壓縮一天前的備份文件
find $bakdir -type f -name "*.sql" -mtime +1 |xargs gzip
#刪除一周前的被封文件
find $bakdir -type f -mtime +7 |xargs rm
#把當天的備份文件同步到遠程機器
for db in db1 db2 db3 db4 db5
do
 rsync -a $bakdir/$db-$d1.sql rsuser@192.168.234.125::/data/mysqlbak/$db-$d2.sql
done
echo "mysql bakup end at `date`"

補充:

1.遠程機器存放的備份文件以庫名-日期的具體日命名,就實現了自動保留30天(比如15號備份的文件db1-15.sql下個月1號的備份文件將會覆蓋該文件)
2.當數據庫較大時,使用mysqldump備份速度會非常慢,這時該使用xtarbackup工具備份或mysql主從復制

代碼上線發布腳本

生產環境中一個業務通常跑在多臺服務器上,也就是所謂的負載均衡,那么這些機器上運行的代碼必須要保持一致,如何實現一致呢?有兩種方案

1.通過共享的方式

如果機器量不多,可以使用NFS實現,當然如果要求穩定性最好是使用專業的存儲設備(NAS、SAN等),這種方式架構如下:


這種架構的優點是方便維護,比如有代碼更新時,只需要更新一臺機器上的代碼,則其他機器上都會跟著更新。缺點是,機器量大了的話,共享存儲會成為瓶頸,甚至由于對文件的爭搶造成性能問題。還有一點,共享存儲這里是一個很大的單點隱患,不出故障一切都OK,一旦出了故障,則整個業務都掛掉,影響非常大。

2.分布式

既然通過共享的方式有不少缺點,那么就選擇另外一種方式,即把代碼存到每一臺WEB服務器本地磁盤上,如下圖所示:


這樣做的好處是,沒有存儲性能問題,沒有資源爭搶沖突,也沒有單點故障的隱患。缺點是,每次代碼更新需要對所有web機器進行更新,比較繁瑣。雖然步驟繁瑣,但大多數企業都會選擇該方式。

通過shell腳本+expect批量發布代碼到多臺web服務器:

前提:

1)提供一個存放所有web服務器的IP列表文件ip.list
2)假設所有web服務器上有一個普通用戶user,密碼為user123,該用戶為同步代碼用戶
3)每次代碼上線會提供一個文件列表file.list(即要更改的文件的列表)

腳本:

#/bin/bash

#提醒用戶,是否更新了要上線的代碼列表文件
read -p "你是否已經更新了文件列表./file.list?確認請輸入y或者Y,否則按其他任意鍵退出腳本。" c
#如果直接按回車,也會退出腳本
if [ -z "$c" ]
then
 exit 1
fi
if [ $c == "y" -o $c == "Y" ]
then
 echo "腳本將在2秒后,繼續執行。"
 #每秒輸出一個.共輸出兩個.
 for i in 1 2
 do
 echo -n "."
 sleep 1
 done
 echo
else
 exit 1
fi
#判斷有無./rsync.exp文件
[ -f ./rsync.exp ]  rm -f ./rsync.exp
#定義rsync.exp
cat >./rsync.exp EOF
#!/usr/bin/expect
set passwd "user123"
set host [lindex \$argv 0]
set file [lindex \$argv 1]
spawn rsync -avR --files-from=\$file / user@\$host:/
expect {
 "yes/no" {send "yes\r"}
 "password:" {send \$passwd\r}
}
expect eof
EOF
chmod a+x ./rsync.exp
#定義檢測文件是否存在的函數
if_file_exist()
{
 if [ ! -f $1 ]
 then
 echo "文件$1不存在,請檢查。"
 exit 1
}
#ip.list為所有WEB機器的ip列表
#file.list為要同步的文件列表
if_file_exist ./ip.list
if_file_exist ./file.list
for ip in `cat ./ip.list`
do
 ./rsync.exp $ip ./file.list
done
#善后處理
rm -f ./rsync.exp

注意:在每臺web服務器上創建的代碼同步用戶需要有代碼所在目錄的寫入權限

總結

到此這篇關于shell 備份數據庫、代碼上線的腳本的文章就介紹到這了,更多相關shell 備份數據庫代碼上線內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL數據庫的shell腳本自動備份
  • Linux shell實現每天定時備份mysql數據庫
  • CentOS中使用Shell腳本實現每天自動備份網站文件和數據庫并上傳到FTP中
  • 兩個備份數據庫的shell腳本

標簽:安康 蚌埠 西寧 麗江 迪慶 武威 紹興 日喀則

巨人網絡通訊聲明:本文標題《shell 備份數據庫、代碼上線的腳本》,本文關鍵詞  shell,備份,數據庫,代碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《shell 備份數據庫、代碼上線的腳本》相關的同類信息!
  • 本頁收集關于shell 備份數據庫、代碼上線的腳本的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本特级aⅴ一级毛片| 激烈有叫声的床戏视频| 欧美亚洲一区二区三区导航 | 亚洲一区二区三区二区| 韩国高清直播系统| 我的总裁美女老婆| 国产亚洲综合一区二区A片吴施蒙| 中文乱码视亚洲| 啪啪福利视频| 国内精品久久久久久久小说| 娇小被黑人巨大撑爆Sex| 老熟女BBW搡BBBB搡| 啊灬啊灬啊灬快好深在线观看| 精品国产黑色丝袜高跟鞋| 高清国产性色视频在线| 第一次破女视频国产一级| 国产一级特黄A片毛片吕| 欧美18一20男同69GAy| 爱插插视频| 脱裙子打屁股一直到红的动态图片 | 免费看国产男女视频的网站| 牡丹038的最新版本更新内容| 两男一女3p被男人玩到喷水| 成品网站货源1688隐藏入口| 男毛片| 国产精品久久久久久AV福利软件| 色综合精品久久久久久久| 一级**毛片| 八戒八戒在线观看免费完整版| 国产精品久久影院| 17c国产露脸精品国产| 国产精品无码一区二区在线欢捆绑 | 乱理三级在线看| 我是爸爸的女人中字头| 好痛?用力?深一点男女| 99热精品国产三级在线观看| 中文在线1区二区六区| 一级黄色免费观看| 少妇国模一区二区啪啪| 一级做a爰片欧美一区| 中文字幕在线免费看线人|