Docker容器中的Postgresql備份腳本異常解決
本文基于K8S中Docker容器對(duì)postgres數(shù)據(jù)庫進(jìn)行備份的操作,編寫好腳本后,手動(dòng)執(zhí)行腳本是正常的,但是crontab定時(shí)實(shí)行卻報(bào)錯(cuò),報(bào)錯(cuò)信息為kubectl command not found,提示沒有找到kubectl指令。
本文主要介紹對(duì)該報(bào)錯(cuò)信息的分析及其解決辦法。詳細(xì)內(nèi)容請參考下文。
一、查看數(shù)據(jù)庫環(huán)境
1、獲取數(shù)據(jù)庫所在節(jié)點(diǎn)
2、進(jìn)入數(shù)據(jù)庫對(duì)接節(jié)點(diǎn)容器
二、編寫數(shù)據(jù)庫備份腳本
1、執(zhí)行指令# vim pgbackup.sh
#!/bin/bash #設(shè)置系統(tǒng)變量 source /etc/profile filename="`date +%F`_bak.sql" #備份數(shù)據(jù)腳本 cat > /usr/local/backup/exportPG.sh <<EOF #!/bin/bash export PGUSER=**** export PGPASSWORD='******' export PGHOST=172.**.**.** export PGPORT=324** #備份整個(gè)集群庫中的數(shù)據(jù) #pg_dumpall -a > ${filename} #備份整個(gè)集群庫包含建庫建表操作 pg_dumpall > ${filename} EOF #給執(zhí)行權(quán)限 chmod +x /usr/local/backup/exportPG.sh #將服務(wù)器上的備份腳本復(fù)制到對(duì)應(yīng)容器中去 kubectl cp /usr/local/backup/exportPG.sh sso/********:/exportPG.sh #在容器外執(zhí)行該腳本 kubectl exec -it ******** -n sso -- /exportPG.sh #將備份后的數(shù)據(jù)文件復(fù)制到容器外 kubectl cp sso/********:${filename} /usr/local/backup/${filename}
2、授予備份腳本執(zhí)行權(quán)限
執(zhí)行指令# chmod +x /usr/local/backup/pgbackup.sh
3、測試數(shù)據(jù)庫備份腳本
說明:測試數(shù)據(jù)庫備份腳本,手動(dòng)執(zhí)行# sh pgbackup.sh的時(shí)候,備份正常。但是在使用crontab執(zhí)行任務(wù)定時(shí)執(zhí)行的時(shí)候,報(bào)kubectl command not found的錯(cuò)誤信息。
4、分析定時(shí)執(zhí)行的報(bào)錯(cuò)信息
說明:crontab執(zhí)行計(jì)劃任務(wù)的時(shí)候并不知道所需要的特殊環(huán)境變量。所以要保證在shelll腳本中提供所有必要的路徑和環(huán)境變量,除了一些自動(dòng)設(shè)置的全局變量。
特別需要注意如下三點(diǎn):
(1)腳本中涉及文件路徑時(shí)寫全局路徑;
比如:
上文所提到的數(shù)據(jù)備份腳本問題,就是kubectl指令沒有寫全路徑,正確的做法是,通過執(zhí)行指令# which kubectl查看指令kubectl的所在位置,讓后將腳本的指令路徑補(bǔ)全。
(2)腳本執(zhí)行要用到程序或其他環(huán)境變量時(shí),通過source命令引入環(huán)境變量;
比如:
在root的crontab文件中加入:
SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin
(3)、如上文所述,當(dāng)手動(dòng)執(zhí)行腳本正常,但是crontab定時(shí)執(zhí)行報(bào)錯(cuò)的情況。就是環(huán)境變量問題,可以在crontab中直接引入環(huán)境變量解決。
0 * * * * /etc/profile;/bin/bash /home/scripts/test.sh >/dev/null 2>&1
5、修改后的備份腳本
說明:執(zhí)行指令# vim pgbackup.sh修改數(shù)據(jù)庫備份腳本,修改后的腳本如下
到此這篇關(guān)于Docker容器中的Postgresql備份腳本異常解決的文章就介紹到這了,更多相關(guān)Docker Postgresql備份腳本異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker安裝openwrt immortalwrt全過程
本文主要介紹了如何通過OpenWrt和Docker結(jié)合使用,以提供路由器的功能并接管無法安裝軟件的Switch的流量,首先,通過阿里鏡像加速下載并安裝Docker,然后配置網(wǎng)絡(luò),包括開啟網(wǎng)卡混雜模式和創(chuàng)建虛擬網(wǎng)絡(luò)MACVLAN,接著,在OpenWrt中配置網(wǎng)絡(luò),最后拉取OpenWrt鏡像并啟動(dòng)2024-10-10Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法
很多同學(xué)拉取鏡像使用一段時(shí)間后發(fā)現(xiàn) C 盤快滿了,把之前用過的鏡像和容器刪除,發(fā)現(xiàn) WSL 掛載目錄的虛擬磁盤大小沒有變化,非常的奇怪,所以本文介紹了Windows的docker刪除容器后WSL2磁盤空間不釋放的問題的解決方法,需要的朋友可以參考下2024-12-12Docker-利用dockerfile來搭建tomcat服務(wù)的方法
這篇文章主要介紹了Docker-利用dockerfile來搭建tomcat服務(wù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01如何將gitbub下載的docker-compose項(xiàng)目運(yùn)行在docker
這篇文章主要介紹了如何將gitbub下載的docker-compose項(xiàng)目運(yùn)行在docker問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05idea?連接遠(yuǎn)程?docker?并部署項(xiàng)目到?docker的過程
這篇文章主要介紹了idea連接遠(yuǎn)程docker并部署項(xiàng)目到docker,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10Ubuntu 下通過 Docker 部署 NGINX 服務(wù)器的步驟詳解
今天分享如何在三豐云免費(fèi)服務(wù)器上使用Docker部署NGINX服務(wù)器,Docker容器化平臺(tái)提升應(yīng)用可移植性,NGINX作為高性能HTTP和反向代理服務(wù)器,感興趣的朋友跟隨小編一起看看吧2025-02-02一文教會(huì)你在Docker容器中實(shí)現(xiàn)Mysql主從復(fù)制
MySQL的主從復(fù)制之前也沒做過,剛百度了下發(fā)現(xiàn)并不算難,所以下面這篇文章主要給大家介紹了關(guān)于在Docker容器中實(shí)現(xiàn)Mysql主從復(fù)制的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11docker中運(yùn)行PostgreSQL容器的簡單步驟
這篇文章主要給大家介紹了關(guān)于docker中運(yùn)行PostgreSQL容器的簡單步驟,隨著docker的廣泛應(yīng)用,為了提供便利的管理,PostgreSQL數(shù)據(jù)庫也支持docker的安裝方式,需要的朋友可以參考下2023-08-08