📜  备份 postgres 数据库 docker (1)

📅  最后修改于: 2023-12-03 15:23:42.239000             🧑  作者: Mango

备份 PostgreSQL 数据库 Docker

在使用 Docker 运行 PostgreSQL 数据库时,备份数据是非常重要的一项工作,以确保数据不会丢失。在本文中,我们将介绍如何备份 PostgreSQL Docker 数据库。

准备工作

在备份数据之前,我们需要准备以下工具:

  • docker-compose 工具
  • pg_dump 工具

如果您的系统尚未安装这些工具,则需要先进行安装。

备份 PostgreSQL 数据库

首先,在 docker-compose 文件夹中创建一个新的 backup 文件夹用于存储备份文件。

mkdir backup

接下来,在 docker-compose.yml 文件中添加以下内容:

services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - db-data:/var/lib/postgresql/data

  backup:
    image: postgres
    volumes:
      - ./backup:/backup
      - db-data:/var/lib/postgresql/data
    depends_on:
      - db
    command: >
      bash -c "pg_dumpall -h db -U postgres | gzip > /backup/db.gz"

说明:

  • db 服务是我们要备份的 PostgreSQL 数据库服务。
  • backup 服务是备份服务,用于备份 db 服务中的数据。
  • db 服务使用了一个名为 db-data 的数据卷用于存储数据库文件。
  • backup 服务也使用了一个名为 db-data 的数据卷,因为数据卷是可以共享的。
  • backup 服务的命令是执行 pg_dumpall 命令并将结果压缩到 /backup/db.gz 文件中。

然后在命令行中运行以下命令:

docker-compose up backup

这将启动 backup 服务并备份数据库。备份文件将存储在 ./backup/db.gz 中。

恢复 PostgreSQL 数据库

要恢复 PostgreSQL 数据库,我们需要使用以下命令:

cat backup/db.gz | docker exec -i {container_name} sh -c 'gzip -d | psql -U postgres'

其中 {container_name} 是您要还原数据的容器名称。

结论

在本文中,我们介绍了如何备份 PostgreSQL 数据库 Docker。备份数据是非常重要的一项工作,以确保数据不会丢失。希望这篇文章对您有所帮助。