目录
文章目录
-
- 以从备份恢复forest_resources库为例
-
- 一、备份数据库
- 二、需要还原的数据库准备
-
- [1 删除掉远程的库。](#1 删除掉远程的库。)
- [2 重新创建一个空的库。可以使用sql](#2 重新创建一个空的库。可以使用sql)
- [3 找到数据库存放的路径,并将备份文件上传到对应的路径下](#3 找到数据库存放的路径,并将备份文件上传到对应的路径下)
- [三、 进入docker容器内部,执行数据库恢复](#三、 进入docker容器内部,执行数据库恢复)
- 附录:一些常用的pgsql操作指令
以从备份恢复forest_resources库为例
一、备份数据库
-
在本地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
-
输入密码。没有报错就可以等待完成了
-
查看文件已生成
二、需要还原的数据库准备
第一步和第二步在数据库管理软件上操作也是一样的
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