使用 Docker 安装 PostgreSQL
拉取 PostgreSQL 镜像:
在终端中运行以下命令,拉取官方的 PostgreSQL 镜像(这里以最新版本为例,你也可以指定具体版本号):
收起
bash
docker pull postgres
运行 PostgreSQL 容器:
使用以下命令创建并运行一个 PostgreSQL 容器,将容器内的 5432 端口映射到主机的 5432 端口,设置数据库用户名和密码:
收起
bash
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
上述命令中,--name some-postgres
为容器命名;-e POSTGRES_PASSWORD=mysecretpassword
设置数据库的超级用户 postgres
的密码;-p 5432:5432
进行端口映射;-d postgres
以后台运行的方式启动容器。
常见操作命令
进入容器的命令行界面:
收起
bash
docker exec -it some-postgres psql -U postgres
这会进入到 PostgreSQL 的命令行客户端,-U postgres
指定以 postgres
用户身份登录。
创建数据库:
收起
sql
CREATE DATABASE mydb;
切换数据库:
收起
sql
\c mydb;
创建表:
收起
sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
age INT
);
插入数据:
收起
sql
INSERT INTO users (name, age) VALUES ('Alice', 25), ('Bob', 30);
查询数据:
收起
sql
SELECT * FROM users;
更新数据:
收起
sql
UPDATE users SET age = 26 WHERE name = 'Alice';
删除数据:
收起
sql
DELETE FROM users WHERE name = 'Bob';
删除表:
收起
sql
DROP TABLE users;
退出 PostgreSQL 命令行客户端:
收起
sql
\q
停止和删除容器:
收起
bash
docker stop some-postgres
docker rm some-postgres
PostgreSQL 提供了多种数据库备份与恢复的方法,以下是一些常见的方式:
一、使用 pg_dump 和 pg_restore 工具
pg_dump 备份数据库:
pg_dump
是 PostgreSQL 自带的用于备份数据库的命令行工具,可以备份整个数据库、单个模式或特定的表。备份整个数据库:
在命令行中运行以下命令(假设数据库用户名为postgres
,数据库名为mydb
,将备份保存为mydb_backup.sql
文件):
收起
bash
pg_dump -U postgres -d mydb > mydb_backup.sql
备份指定模式:
收起
bash
pg_dump -U postgres -d mydb -n myschema > schema_backup.sql
这里 -n myschema
表示备份名为 myschema
的模式。
备份指定表:
收起
bash
pg_dump -U postgres -d mydb -t mytable > table_backup.sql
-t mytable
表示只备份名为 mytable
的表。
2. pg_restore 恢复数据库:pg_restore
用于将 pg_dump
创建的备份文件恢复到数据库中。
先确保目标数据库已存在(可以为空数据库),然后运行以下命令恢复整个数据库备份:
收起
bash
pg_restore -U postgres -d mydb mydb_backup.sql
如果备份的是模式或表,也可以使用相应参数进行恢复,如恢复指定模式备份:
收起
bash
pg_restore -U postgres -d mydb -n myschema schema_backup.sql
二、使用 SQL 命令进行逻辑备份与恢复
逻辑备份(使用 COPY 命令):
备份表数据到文件(以 CSV 格式为例):
收起
sql
COPY mytable TO '/path/to/backup/mytable.csv' WITH CSV HEADER;
这会将 mytable
表的数据以带表头的 CSV 格式导出到指定路径的文件中。
2. 逻辑恢复(使用 COPY 命令):
先创建目标表(结构需与原表一致),然后使用以下命令将数据从文件导入表中:
收起
sql
COPY mytable FROM '/path/to/backup/mytable.csv' WITH CSV HEADER;
三、使用物理备份(文件系统级备份)
物理备份:
停止 PostgreSQL 服务。
复制整个数据目录(通常是
data
目录,具体路径取决于你的 PostgreSQL 安装配置)到备份位置。
物理恢复:
停止 PostgreSQL 服务。
删除现有的数据目录内容。
将备份的数据目录复制回原来的位置。
启动 PostgreSQL 服务。
以上这些方法各有优缺点,pg_dump
和 pg_restore
逻辑备份方式便于传输和管理,物理备份则在大规模数据恢复时可能更高效。在实际应用中,你可以根据具体需求选择合适的备份与恢复方法