docker pgSQL 数据库备份
时间: 2023-11-09 16:09:29 浏览: 117
要备份 Docker 中的 PostgreSQL 数据库,可以使用以下步骤:
1. 进入正在运行 PostgreSQL 容器的 shell 环境:`docker exec -it <container_name> bash`
2. 在 shell 环境中执行备份命令:`pg_dump -U <username> <database_name> > <backup_file_name>`
其中,`<username>` 是数据库用户名,`<database_name>` 是要备份的数据库名称,`<backup_file_name>` 是备份文件的名称和路径。
3. 退出 shell 环境:`exit`
4. 将备份文件从容器复制到本地:`docker cp <container_name>:<backup_file_name> <local_path>`
其中,`<local_path>` 是本地路径。
相关问题
如何在pgsql的docker容器内使用pg_rman恢复数据库
要在pgsql的docker容器内使用pg_rman恢复数据库,需要按照以下步骤进行操作:
1. 在容器内安装pg_rman,可以使用以下命令:
```
sudo apt-get update
sudo apt-get install postgresql-server-dev-12
wget https://github.com/ossc-db/pg_rman/archive/REL_2_4_7.tar.gz
tar -xzvf REL_2_4_7.tar.gz
cd pg_rman-REL_2_4_7
make USE_PGXS=1
sudo make USE_PGXS=1 install
```
2. 在pg_rman配置文件中设置恢复参数,例如:
```
restore_command = 'cp /mnt/backup/%f %p'
```
其中,/mnt/backup是备份文件所在的目录。
3. 执行pg_rman的恢复命令,例如:
```
pg_rman restore --recovery-target-time '2022-01-01 00:00:00' --restore-command 'cp /mnt/backup/%f %p' --progress
```
其中,--recovery-target-time指定要恢复到的时间点,--restore-command指定恢复命令,--progress显示恢复进度。
注意:在执行恢复操作前,需要先停止正在运行的PostgreSQL服务,恢复完成后再启动。
如何在使用 PostgreSQL (pgsql) 容器时将数据从宿主机挂载到容器中?
在使用 PostgreSQL (pgsql) 容器时,如果你想要将宿主机的数据目录挂载到容器内供数据库使用,可以按照以下步骤操作:
1. **创建数据卷**:
- 使用 `docker volume create` 创建一个新的数据卷,例如:`docker volume create pgdata`
2. **启动 PostgreSQL 容器**:
在启动命令中添加 `-v` 参数,指定数据卷以及挂载点。例如:
```
docker run -d --name my_postgres -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:latest
```
这里,`pgdata:/var/lib/postgresql/data` 表示宿主机的 `/path/to/pgdata` 目录会被挂载到容器的 `/var/lib/postgresql/data`。
3. **确保权限**:
数据卷默认只有读写权限给用户 `postgres`。如果需要其他用户也能访问,可以在启动时设置运行用户(如 `USER` 或者通过环境变量 `POSTGRES_USER` 和 `POSTGRES_PASSWORD`),或者调整卷的权限。
4. **迁移已有数据**:
如果已经有一个 PostgreSQL 数据库在宿主机上,并希望在容器中继续使用,可以先备份数据到宿主机的指定目录,然后在启动容器时挂载这个目录。
5. **监控和管理**:
使用 `docker exec` 来管理和查询容器内的数据库,或者配置 Docker Compose 等工具自动化容器管理。
阅读全文