時間:2020-02-24來源:電腦系統城作者:電腦系統城
Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。 業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。
場景:
一臺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個月
腳本:
補充:
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(即要更改的文件的列表)
腳本:
注意:在每臺web服務器上創建的代碼同步用戶需要有代碼所在目錄的寫入權限
總結
到此這篇關于shell 備份數據庫、代碼上線的腳本的文章就介紹到這了,更多相關shell 備份數據庫代碼上線內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!
2020-10-11
shell腳本實現磁盤監控系統2020-10-11
詳解shell 函數定義與調用2020-10-11
一鍵配置本地yum源的shell腳本Kubernetes/K8s CFSSL 證書相關,各節點訪問之間使用證書驗證可靠性 work node ——> load banlancer ——>api server ——>etcd<——etcd worknode 訪問load banlancer 需要驗證證書的有限性 所以需要同一個ca根證書,...
2020-02-24