• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
基于Docker的PostgreSQL数据库的备份
发布日期:2016-4-14 21:4:2

  基于Docker的PostgreSQL数据库的备份

  我发现,很多初学者都很关心Docker能否解决一些现有的问题,当然之前的解决方案仍然可以用。所以这篇文章的主题是使用Docker备份你的关系型数据库。通过具体的例子来介绍如何使用Docker来备份PostgreSQL。

  若你有一个运行在Docker中的PostgreSQL服务,我想说能把这两个非常酷的软件结合起来真的很棒。但你是一个聪明的人,你知道你需要备份自己的数据库。但怎么做了?PostgreSQL运行在Docker中,外界无法访问容器内的数据。

  简单的来说,你可以在PostgreSQL实例上运行pg_dump。具体到现在的问题,你可以用三种方式来运行:

  1.在容器内。根据你的Docker版本,使用nsenter或者docker exec在容器内运行Shell命令,并将dump的数据共享至volume:

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

  但是我们可以做的更好,理想的流程是无需在容器内启动Shell即可直接连接到PostgreSQL。我们有两种方式可以实现:

  第一种可以使用容器化的方式。创建一个pg_dump容器,并在运行时将其连接到PostgreSQL容器。下面的代码是pg_dump容器的Dockerfile:

  FROM debian:wheezy

  RUN apt-get update -y && \

  apt-get install -y postgresql-client && \

  apt-get clean -y

  ENTRYPOINT ["/usr/bin/pg_dump"]

  使用docker build命令来构建:

  $ docker build -t pg_dump - < Dockerfile

  注意:并不是一定要构建一个运行pg_dump的容器,可以直接在PostgreSQL的容器中包含pg_dump容器的功能。在这里只是为了练习。

  构建完毕并运行:

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

  第二个解决方案是Docker暴露容器的5342端口,直接运行pg_dump命令。

  原文链接:Backuping PostgreSQL with Docker

注:后面的一些文章里会介绍一些关于mysql的问题,关注mysql的朋友稍作等待。