pg单机自动化日志备份系列二

 本系列主要是介绍基于pg10版本的日志备份技术,如何实现自动日志备份(主要是笔者业务上有这种功能,尝试了几天几夜,特此记录下),本篇文章是docker篇,主要介绍如何配置pg官方提供的镜像,为后面的自动备份做准备。

 如果你还不了解pg的备份,请看pg单机自动化日志备份系列一

 自动备份最终效果:

自动备份

  就是要支持手动/自动进行全量备份和差异备份。

 一、基础准备

 1、由于pg数据库和server端程序将使用docker进行部署,pg使用镜像:docker pull postgres:10

 2、根据1的描述,相当于数据库pg和server程序在不同的机器上,所以server端需要在数据库pg端进行某些shell命令,这里我们使用ssh进行。

 二、待解决的难点问题

 1、在pg镜像和server端镜像里都要内置ssh(后续我们只讨论pg镜像里的环境准备)。

 2、配置ssh免登录。

 3、从pg单机自动化日志备份系列一文章里,可以知道执行备份时,会需要postgres的权限,以及pg数据库的一些配置文件的权限也需要正确配置。

 以上大概算是本篇文章将要讨论的一些东西。在进行解决具体问题前,需要先和大伙稍微了解一下docker里的ENTRYPOINTCMD两条指令。

通常一个docker镜像只会有一个后台守护进程,通俗来说,就是一个镜像对应一个程序。所以通常我们在制作镜像时,都会在Dockerfile里最后一行加一条CMD指令,CMD的内容便是我们通常启动某个服务的shell命令。

pg镜像的Dockerfile

如上图所示,就是在使用镜像时,通过红框的命令启动pg数据库。

但是可以看到这个Dockerfile同时还有ENTRYPOINT指令,这个指令也是启动程序,与CMD不同点在于,当我们启动一个镜像时,其实最终是ENTRYPOINT指定的shell命令去决定这个镜像会启动什么样的服务,而CMDshell命令会做为参数传给ENTRYPOINT指定的shell

而从图中可以看到pg镜像最终由docker-entrypoint.sh这个shell脚本来确定pg数据库启动数据库时,对数据库的一些初始化流程,而上面的问题也会围绕这个脚本来进行解决。(当然这个不一定是最好的解决办法,所以都只是抛砖引玉)

 一、pg镜像里内置ssh,以及配置ssh在数据库启动时进行ssh启动。

未完待续。。。

你可能感兴趣的:(pg单机自动化日志备份系列二)