如何在 docker 内恢复 postgres?
How to restore postgres within a docker?
我这样创建备份:docker exec DOCKER pg_dump -U USER -F t DB | gzip > ./FILE.tar.gz
鉴于数据库在容器中运行,恢复数据库的最佳方法是什么?
针对您的情况:
docker exec -it <CONTAINER> gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB>
如果您的容器面向 public 并且在 pg_hba.conf
for postresql 中允许远程连接,则远程恢复也可用:
gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB> -h <HOST_IP> -p 5432
根据经验,最好记录项目特定的备份和恢复命令。
如何备份存在于 运行ning PostgreSQL 容器中的数据
在您的根目录中创建一些文件夹
mkdir -p '/myfolder/bdbackup'
下载您正在使用的postgres镜像并执行以下命令
docker run --name demo1 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres
docker exec -it demo1 psql -U postgres
备份将存储在以下文件夹中/myfolder/bdbackup
- 您可以随时终止容器并停止容器,但数据将存储在主机中。
再次使用相同的命令重新运行 postgres 容器
docker run --name demo2 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres
docker exec -it demo1 psql -U postgres
并执行以下查询 select * from emp;
可以看到数据已经恢复了...
我这样创建备份:docker exec DOCKER pg_dump -U USER -F t DB | gzip > ./FILE.tar.gz
鉴于数据库在容器中运行,恢复数据库的最佳方法是什么?
针对您的情况:
docker exec -it <CONTAINER> gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB>
如果您的容器面向 public 并且在 pg_hba.conf
for postresql 中允许远程连接,则远程恢复也可用:
gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB> -h <HOST_IP> -p 5432
根据经验,最好记录项目特定的备份和恢复命令。
如何备份存在于 运行ning PostgreSQL 容器中的数据
在您的根目录中创建一些文件夹
mkdir -p '/myfolder/bdbackup'
下载您正在使用的postgres镜像并执行以下命令
docker run --name demo1 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres docker exec -it demo1 psql -U postgres
备份将存储在以下文件夹中
/myfolder/bdbackup
- 您可以随时终止容器并停止容器,但数据将存储在主机中。
再次使用相同的命令重新运行 postgres 容器
docker run --name demo2 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres docker exec -it demo1 psql -U postgres
并执行以下查询
select * from emp;
可以看到数据已经恢复了...