Skip to content

PostgreSQL 安装 ​

docker 安装 ​

本文档将指导您如何在单机环境下使用 Docker 安装 PostgreSQL 数据库。我们将涵盖从初始安装到数据持久化的整个过程。

环境准备 ​

确保您的系统已安装 Docker。如果尚未安装,请参考 Docker 官方文档 进行安装。

步骤一:使用 Docker 运行 PostgreSQL 容器 ​

首先,使用以下命令启动一个 PostgreSQL 容器:

bash
docker run -d \
  -p 5432:5432 \
  --name postgresql \
  -e POSTGRES_PASSWORD=123456 \
  litongjava/postgres:16.3

参数说明

  • -d:以后台模式运行容器。
  • -p 5432:5432:将宿主机的 5432 端口映射到容器的 5432 端口。
  • --name postgresql:为容器命名为 postgresql。
  • -e POSTGRES_PASSWORD=123456:设置 PostgreSQL 的超级用户密码。
  • litongjava/postgres:16.3:指定镜像及版本。

步骤二:备份 PostgreSQL 数据 ​

为了确保数据的持久性,我们需要将容器内的数据目录备份到宿主机。

bash
# (可选)先移除旧目录
rm -rf /docker_data/postgres/master

# 创建用于存放备份的目录
mkdir -p /docker_data/postgres/master

# 将容器内的 /var/lib/postgresql 目录复制到主机
docker cp postgresql:/var/lib/postgresql /docker_data/postgres/master

解释

  • rm -rf /docker_data/postgres/master:清空老数据(请谨慎执行)。
  • mkdir -p …:创建备份目录。
  • docker cp postgresql:/var/lib/postgresql /docker_data/postgres/master:将容器内部的目录整体拷贝到宿主机。

步骤三:停止并移除原始容器 ​

在配置数据持久化之前,需要停止并移除现有的 PostgreSQL 容器。

bash
docker stop postgresql
docker rm postgresql

步骤四:重新运行 PostgreSQL 容器并挂载数据卷(单机) ​

使用以下命令重新启动 PostgreSQL 容器,并将宿主机的数据目录挂载到容器内的 /var/lib/postgresql/data,以实现数据持久化。

bash
docker run -d \
  --name pgmaster \
  --net host \
  --restart=always \
  -e POSTGRES_PASSWORD=123456 \
  -e TZ=Asia/Shanghai \
  -v /docker_data/postgres/master/postgresql/data:/var/lib/postgresql/data \
  litongjava/postgres:16.3
  • --restart=always:容器意外退出或宿主机重启后自动重启。
  • -v /docker_data/postgres/master/postgresql/data:/var/lib/postgresql/data:将主机目录挂载到容器的 PGDATA(默认就是 /var/lib/postgresql/data)上,保证数据持久化。

集群安装 ​

bash
docker run -d \
  --name pgmaster \
  -p 15432:5432 \
  --restart=always \
  -e POSTGRES_PASSWORD=123456 \
  -e TZ=Asia/Shanghai \
  -v /docker_data/postgres/master/postgresql/data:/var/lib/postgresql/data \
  litongjava/postgres:16.3

验证安装 ​

bash
docker ps -a

确保能看到名为 pgmaster 的容器在运行,端口映射正常。

连接 PostgreSQL ​

bash
psql -h localhost -p 15432 -U postgres

输入密码 123456 即可。


创建用户、授予权限及安装 pgvector 插件 ​

以下是用于在 PostgreSQL 中创建新用户和数据库,授予必要权限,并安装及测试 pgvector 插件的步骤,

1. 切换到 PostgreSQL 用户 ​

首先,切换到 PostgreSQL 系统用户:

bash
su - postgres

2. 连接到 PostgreSQL ​

使用 psql 连接到 PostgreSQL:

bash
psql

3. 创建数据库和用户 ​

在 psql 提示符下,执行以下命令来创建数据库 max_kb 和用户 max_kb,并设置密码:

sql
-- 创建数据库
CREATE DATABASE max_kb;

-- 创建用户并设置密码
CREATE USER max_kb WITH PASSWORD '00000000';

4. 授予用户权限 ​

授予用户 max_kb 对数据库 max_kb 的所有权限:

sql
GRANT ALL PRIVILEGES ON DATABASE max_kb TO max_kb;

此外,确保用户 max_kb 对 public 模式拥有必要的权限,以便在其中创建表:

sql
-- 连接到 max_kb 数据库
\c max_kb

-- 授予 public 模式的所有权限
GRANT ALL PRIVILEGES ON SCHEMA public TO max_kb;

注意:无需更改 public 模式的所有者,除非有特定需求。

5. 安装并启用 pgvector 插件 ​

确保您已安装 pgvector 插件。如果未安装,可以使用以下命令进行安装(以基于 Debian 的系统为例):

bash
sudo apt-get update
sudo apt-get install postgresql-14-pgvector  # 根据您的 PostgreSQL 版本调整

连接到 max_kb 数据库并启用 pgvector 插件:

sql
-- 连接到 max_kb 数据库
\c max_kb

-- 创建 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;

验证扩展是否成功启用:

sql
SELECT * FROM pg_extension WHERE extname = 'vector';

如果返回一行结果,说明扩展已成功启用。

6. 测试 pgvector 插件 ​

创建一个使用 vector 类型的测试表,以确认 pgvector 正常工作:

sql
CREATE TABLE vector_test (
    id SERIAL PRIMARY KEY,
    v VECTOR(3)
);

如果表创建成功,说明 vector 类型现已可用。

7. 初始数据 ​

psql -h 127.0.0.1 -p 5432 -U max_kb -d max_kb -f ./schema.sql
psql -h 127.0.0.1 -p 5432 -U max_kb -d max_kb -f ./data.sql

结论 ​

通过以上步骤,您已经成功在单机环境下使用 Docker 安装并配置了 PostgreSQL 数据库。数据持久化配置确保了即使容器重新启动或删除,您的数据库数据依然安全存储在宿主机上。根据需要,您可以进一步配置 PostgreSQL 或 Docker 以满足特定的应用需求。

MIT Licensed