基于Docker备份PostgreSQL 应用示例

云计算 PostgreSQL
这篇文章有三个目的:给你一个例子使用Docker执行使用;提醒你,在docker到来之前所获得的知识仍然是有用的;帮助你构建将应用容器的思维。

免责声明:当我第一次写这篇文章的时候,我曾因为内容中没有任何新的东西而丢弃它。的确,在这个博客上没有新的或复杂的,你将学习通过阅读它的唯一的事就是,您可以将使用pg_dump备份PostgreSQL服务器的过程运行在一个容器中。

有一件事触动了我。当我解释和回答Docker初学者提出的问题时,我发现其中一个很普遍,那就是当老的解决方案仍然可以解决现有问题时,大家又在寻找新的解决方案。

工程师有一个癖好,就是忘记他们所知道的,然后他们可以不用做太多改变,而在一个新的范例中很大程度上运用这些已经掌握的知识。所以最终,这篇博客有三个目的:

  • 给你一个例子使用Docker执行使用
  • 提醒你,你在docker到来之前所获得的知识仍然是有用的
  • 帮助你构建将这个知识放到容器中的思维

真的,这篇文章可以被称为备份RDBMS和Docker,但我需要一些具体的例子。因为这篇文章是关于PostgreSQL触发的问题,我决定就这样做。

这里的情况。有一个PostgreSQL服务器运行在一个Docker容器,和你非常满意的这两个很棒的软件的结合。但是你是一个聪明的人,你知道,迟早,您将需要备份的数据库。也许硬件将会失败,或者新的实习生将会失败,你永远不会知道的。所以你决定定期备份数据库。

但是如何做到这一点。PostgreSQL运行在Docker中,并没有明显的方式访问数据。

问题可以归结为对您的PostgreSQL实例运行pg_dump,和你有三种方式实现这一目标。

根据您的版本的Docker,使用nsenter或Docker执行以获得shell在容器内,并将您的数据(使用pg_dump)转储到一个共享卷(postgres容器运行PostgreSQL的名称):

  1. docker exec postgres pg_dump -h db -f /shared/backup.sql 

但我们可以做的更好,对吗?理想的流程将涉及能够连接到PostgreSQL无需一个shell的容器。有两种方法可以做到这一点。

首先,用容器的一切方法。你建立一个pg_dump容器(这是一个容器,pg_dump作为它的入口点),并将其链接到PostgreSQL容器在运行时。这里有一个 pg_dump容器的Dockerfile

  1. FROM debian:wheezy 
  2.  
  3. RUN apt-get update -y && \ 
  4. apt-get install -y postgresql-client && \ 
  5. apt-get clean -y 
  6.  
  7. ENTRYPOINT ["/usr/bin/pg_dump"

用 docker build 构建

  1. $ docker build -t pg_dump - < Dockerfile 

注意:建立一个特定的容器pg_dump不是强制性的。Damien如上所述的评论,你重新使用 包含 pg_dump在内的PostgreSQL镜像一点儿问题都没有。我们在这里建立一个容器是因为要练习。

运行:

  1. $ docker run -it --link postgres:db pg_dump -h db 

在你的PostgreSQL postgres的容器中运行。

本文出自:http://dockerone.com/article/118

责任编辑:Ophira 来源: dockerone
相关推荐

2014-07-29 10:35:21

DockerNodeJS

2023-08-28 10:54:09

容器Docker

2012-09-28 13:39:40

Windows备份

2022-07-12 17:24:48

NginxDocker

2015-01-20 13:46:31

Java EEDockerDocker部署

2022-03-14 19:40:40

PostgreSQL多租户应用程序Citus

2012-02-08 09:36:57

虚拟化备份

2018-09-19 15:28:21

VMware备份恢复

2024-04-18 09:20:43

PostgreSQL关系型数据库数据库管理系统

2021-08-10 15:44:37

PostgreSQL表分区分区表

2009-07-09 16:22:12

WebWork配置

2010-11-29 10:53:14

Sybase日期函数

2020-03-19 11:12:21

云计算KubernetesDocker

2022-03-17 18:52:41

PostgreSQ序列数据集群

2017-05-01 17:03:01

Java缓存分布式

2021-07-20 10:59:22

云计算架构示例云应用

2022-02-28 15:44:05

鸿蒙系统鸿蒙API加载网络图片

2022-03-16 19:15:32

PostgreSQL日志Kafka

2010-08-12 09:33:30

DB2数据库备份

2010-04-12 14:19:00

Oracle数据库备份
点赞
收藏

51CTO技术栈公众号