pg單機自動化日志備份系列二

?本系列主要是介紹基于pg10版本的日志備份技術(shù),如何實現(xiàn)自動日志備份(主要是筆者業(yè)務(wù)上有這種功能,嘗試了幾天幾夜,特此記錄下),本篇文章是docker篇,主要介紹如何配置pg官方提供的鏡像,為后面的自動備份做準(zhǔn)備。

?如果你還不了解pg的備份,請看pg單機自動化日志備份系列一

?自動備份最終效果:

自動備份

? 就是要支持手動/自動進行全量備份和差異備份。

?一、基礎(chǔ)準(zhǔn)備

?1、由于pg數(shù)據(jù)庫和server端程序?qū)⑹褂胐ocker進行部署,pg使用鏡像:docker pull postgres:10。

?2、根據(jù)1的描述,相當(dāng)于數(shù)據(jù)庫pg和server程序在不同的機器上,所以server端需要在數(shù)據(jù)庫pg端進行某些shell命令,這里我們使用ssh進行。

?二、待解決的難點問題

?1、在pg鏡像和server端鏡像里都要內(nèi)置ssh(后續(xù)我們只討論pg鏡像里的環(huán)境準(zhǔn)備)。

?2、配置ssh免登錄。

?3、從pg單機自動化日志備份系列一文章里,可以知道執(zhí)行備份時,會需要postgres的權(quán)限,以及pg數(shù)據(jù)庫的一些配置文件的權(quán)限也需要正確配置。

?以上大概算是本篇文章將要討論的一些東西。在進行解決具體問題前,需要先和大伙稍微了解一下docker里的ENTRYPOINTCMD兩條指令。

通常一個docker鏡像只會有一個后臺守護進程,通俗來說,就是一個鏡像對應(yīng)一個程序。所以通常我們在制作鏡像時,都會在Dockerfile里最后一行加一條CMD指令,CMD的內(nèi)容便是我們通常啟動某個服務(wù)的shell命令。

pg鏡像的Dockerfile

如上圖所示,就是在使用鏡像時,通過紅框的命令啟動pg數(shù)據(jù)庫。

但是可以看到這個Dockerfile同時還有ENTRYPOINT指令,這個指令也是啟動程序,與CMD不同點在于,當(dāng)我們啟動一個鏡像時,其實最終是ENTRYPOINT指定的shell命令去決定這個鏡像會啟動什么樣的服務(wù),而CMDshell命令會做為參數(shù)傳給ENTRYPOINT指定的shell。

而從圖中可以看到pg鏡像最終由docker-entrypoint.sh這個shell腳本來確定pg數(shù)據(jù)庫啟動數(shù)據(jù)庫時,對數(shù)據(jù)庫的一些初始化流程,而上面的問題也會圍繞這個腳本來進行解決。(當(dāng)然這個不一定是最好的解決辦法,所以都只是拋磚引玉)

?一、pg鏡像里內(nèi)置ssh,以及配置ssh在數(shù)據(jù)庫啟動時進行ssh啟動。

未完待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容