目录
- 一、前言
- 二、操作步骤
-
- [1. 查看并确定目标容器](#1. 查看并确定目标容器)
- [2. 进入容器](#2. 进入容器)
- [3. 执行备份命令](#3. 执行备份命令)
- [4. 退出容器并复制备份文件](#4. 退出容器并复制备份文件)
一、前言
现在docker容器很方便,可以一键部署项目,但是方便部署的同时,也给运维带来了麻烦,docker中的pgsql数据,如何进行备份呢
二、操作步骤
1. 查看并确定目标容器
使用docker ps命令查看当前运行的容器列表,找到运行PostgreSQL的容器ID或名称。通常,PostgreSQL容器可以通过其监听的端口(默认为5432)来识别
bash
docker ps
如图,我的pgsql的镜像id是 28fe3d7203e5
2. 进入容器
使用docker exec命令进入PostgreSQL容器。这里需要以root用户身份或使用具有足够权限的用户进入,以便执行备份命令
bash
docker exec -u root -it 容器名或容器ID /bin/bash
举例
bash
docker exec -u root -it 28fe3d7203e5 /bin/bash
3. 执行备份命令
在容器内部,使用pg_dump命令来备份数据库
bash
pg_dump -h localhost -p 5432 -U 用户名 -d 数据库名 > 备份文件名.sql
-h 指定数据库服务器的主机名,这里因为是Docker容器内部,所以通常是localhost。
-p 指定数据库服务器的端口,PostgreSQL默认端口是5432。
-U 指定连接数据库的用户名。
-d 指定要备份的数据库名。将备份结果重定向到文件。
举例
bash
pg_dump -h localhost -p 5432 -U docmost -d docmost > /var/lib/postgresql/data/backup.sql
bash
小小鱼儿小小林
原文链接:https://yujianlin.blog.csdn.net/article/details/141793124
4. 退出容器并复制备份文件
完成备份后,使用exit命令退出容器。然后,使用docker cp命令将备份文件从容器内复制到宿主机上
bash
exit
bash
docker cp 容器名或容器ID:/路径/backup.sql /宿主机/目标/路径/
举例
bash
docker cp 28fe3d7203e5:/var/lib/postgresql/data/backup.sql /home/vdc/tools/docmost/docker/docmost/
注意,这里的冒号: 两边不要留空,如果留空的话就会报异常
"docker cp" requires exactly 2 arguments.
See 'docker cp --help'.
Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
Copy files/folders between a container and the local filesystem
正确的格式就会输出 Successfully,如图
然后,你们可以xshell登录看一下当前目录或者打开 XFTP工具看一下是否已经备份成sql文件了