?本系列主要是介紹基于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里的ENTRYPOINT
和CMD
兩條指令苫耸。
通常一個docker鏡像只會有一個后臺守護進程州邢,通俗來說,就是一個鏡像對應(yīng)一個程序褪子。所以通常我們在制作鏡像時量淌,都會在Dockerfile
里最后一行加一條CMD
指令,CMD
的內(nèi)容便是我們通常啟動某個服務(wù)的shell
命令嫌褪。
如上圖所示呀枢,就是在使用鏡像時,通過紅框的命令啟動pg數(shù)據(jù)庫笼痛。
但是可以看到這個Dockerfile同時還有ENTRYPOINT
指令裙秋,這個指令也是啟動程序,與CMD
不同點在于缨伊,當(dāng)我們啟動一個鏡像時残吩,其實最終是ENTRYPOINT
指定的shell
命令去決定這個鏡像會啟動什么樣的服務(wù),而CMD
的shell
命令會做為參數(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ù)。绰疤。铜犬。