【问题总结】Docker环境下备份和恢复postgresql数据库

目录

文章目录

以从备份恢复forest_resources库为例

一、备份数据库

  1. 在本地windows环境下使用以下指令备份数据库

    复制代码
    {pgsql的安装路径}\bin\pg_dump -h {host} -p {端口} -U postgres -W   {数据库名}  > {备份文件的路径}

    比如 D:\javaapp\PGSQL14\bin\pg_dump -h 192.168.3.11 -p 15432 -U postgres -W forest_resources > D:\forestry_res_0718.bak

  2. 输入密码。没有报错就可以等待完成了

  3. 查看文件已生成

二、需要还原的数据库准备

第一步和第二步在数据库管理软件上操作也是一样的

1 删除掉远程的库。

复制代码
DROP DATABASE  forest_resources;

成功如下:

注意删除之前要先备份数据库。

报错数据库被占用使用以下sql解决:

sql 复制代码
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='forest_resources' AND pid<>pg_backend_pid();

2 重新创建一个空的库。可以使用sql

sql 复制代码
createdb  -e -U postgres forest_resources

检查一下是否已创建成功

3 找到数据库存放的路径,并将备份文件上传到对应的路径下

比如演示环境下的路径是这里

复制代码
/data/docker/pgsql/data/backup

ps:这里的路径是docker映射出来的路径,可以通过查看docker-compose文件来确定位置,或者使用docker inspect命令来查看映射详情

或

三、 进入docker容器内部,执行数据库恢复

shell 复制代码
# 查看docker进程
docker ps
#复制 CONTAINER ID  #60d815d5767a   
# 进入docker内部
docker exec -it 60d815d5767a /bin/bash
#进入到以下地址 找到上传的备份文件
cd /var/lib/postgresql/data/backup

找到刚才上传的文件

shell 复制代码
#postgres@60d815d5767a:~/data/backup$ 
psql -U postgres -d forest_resources < forestry_res.bak

看到开始执行指令,就是开始复制数据库了。

最后记得检查是否成功

附录:一些常用的pgsql操作指令

一些常用的pgsql操作指令:

以下是一些常用的 PostgreSQL CLI 命令:

  • psql:连接到 PostgreSQL 数据库并打开交互式命令行界面。
  • createdb:创建一个新的 PostgreSQL 数据库。
  • dropdb:删除一个 PostgreSQL 数据库。
  • pg_dump:导出一个 PostgreSQL 数据库的数据和结构到一个文件。
  • pg_restore:从一个 pg_dump 文件中恢复一个 PostgreSQL 数据库。
  • psql -c:执行一条 SQL 命令并退出。
  • \l:列出所有可用的数据库。
  • \c:连接到另一个 PostgreSQL 数据库。
  • \dt:列出当前数据库中的所有表格。
  • \d table_name:显示指定表格的结构。
  • \q:退出 psql 命令行界面。
  • SELECT:从一个表格中选择数据。
  • INSERT INTO:向一个表格中插入新数据。
  • UPDATE:更新一个表格中的数据。
  • DELETE FROM:从一个表格中删除数据。
  • \timing:在 psql 命令行界面中启用或禁用计时器,以便衡量查询的执行时间。
  • \e:打开默认编辑器以编辑当前命令行中的 SQL 查询。
  • \i filename:从指定的文件中读取 SQL 命令并在 psql 命令行界面中执行它们。
  • \o filename:将查询结果输出到指定的文件中,而不是在 psql 命令行界面中显示它们。
  • \?:列出所有可用的 psql 命令。
  • \h:显示 SQL 命令的帮助信息。
sql 复制代码
#列出出数据库 
\l 

#列出表 
\d

#切换数据库 
\c test

# 退出数据操作
\q
相关推荐
ClickHouseDB10 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_6399069410 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
todoitbo11 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺11 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw11 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社12 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙13 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37614 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你021414 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川14 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化