使用 Docker 安装 PostgreSQL

  1. 拉取 PostgreSQL 镜像
    在终端中运行以下命令,拉取官方的 PostgreSQL 镜像(这里以最新版本为例,你也可以指定具体版本号):

收起

bash

docker pull postgres

  1. 运行 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 以后台运行的方式启动容器。

常见操作命令

  1. 进入容器的命令行界面

收起

bash

docker exec -it some-postgres psql -U postgres

这会进入到 PostgreSQL 的命令行客户端,-U postgres 指定以 postgres 用户身份登录。

  1. 创建数据库

收起

sql

CREATE DATABASE mydb;

  1. 切换数据库

收起

sql

\c mydb;

  1. 创建表

收起

sql

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

  1. 插入数据

收起

sql

INSERT INTO users (name, age) VALUES ('Alice', 25), ('Bob', 30);

  1. 查询数据

收起

sql

SELECT * FROM users;

  1. 更新数据

收起

sql

UPDATE users SET age = 26 WHERE name = 'Alice';

  1. 删除数据

收起

sql

DELETE FROM users WHERE name = 'Bob';

  1. 删除表

收起

sql

DROP TABLE users;

  1. 退出 PostgreSQL 命令行客户端

收起

sql

\q

  1. 停止和删除容器

收起

bash

docker stop some-postgres
docker rm some-postgres

PostgreSQL 提供了多种数据库备份与恢复的方法,以下是一些常见的方式:

一、使用 pg_dump 和 pg_restore 工具

  1. 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 命令进行逻辑备份与恢复

  1. 逻辑备份(使用 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;

三、使用物理备份(文件系统级备份)

  1. 物理备份

    • 停止 PostgreSQL 服务。

    • 复制整个数据目录(通常是 data 目录,具体路径取决于你的 PostgreSQL 安装配置)到备份位置。

  2. 物理恢复

    • 停止 PostgreSQL 服务。

    • 删除现有的数据目录内容。

    • 将备份的数据目录复制回原来的位置。

    • 启动 PostgreSQL 服务。

以上这些方法各有优缺点,pg_dump 和 pg_restore 逻辑备份方式便于传输和管理,物理备份则在大规模数据恢复时可能更高效。在实际应用中,你可以根据具体需求选择合适的备份与恢复方法