深入理解 Docker PostgreSQL 14 集群搭建

在现代软件开发中,数据库集群设计是确保高可用性和可扩展性的关键。本文将引导你通过 Docker 搭建一个 PostgreSQL 14 集群。我们将使用 Docker 容器来创建主从数据库集群,确保数据的冗余和替代。

流程概述

以下是整个过程的步骤概述:

步骤 描述
1 安装 Docker
2 创建 Docker 网络
3 配置主数据库容器
4 配置从数据库容器
5 验证集群是否正常工作

流程图

下面是整个流程的可视化图示:

flowchart TD
    A[安装 Docker] --> B[创建 Docker 网络]
    B --> C[配置主数据库容器]
    C --> D[配置从数据库容器]
    D --> E[验证集群是否正常工作]

步骤详解

步骤1:安装 Docker

在开始之前,你需要首先确保 Docker 已经在你的系统上安装。可以通过以下命令来验证 Docker 是否安装成功:

docker --version

如果没有安装 Docker,请访问 [Docker 官方网站]( 进行安装。

步骤2:创建 Docker 网络

为了方便容器之间的通信,我们需要创建一个 Docker 网络。可以使用以下命令:

docker network create pg_cluster

该命令的作用是创建一个名为pg_cluster的 Docker 网络,从而使我们的 PostgreSQL 容器能够在同一网络中的相互访问。

步骤3:配置主数据库容器

接下来,我们需要创建主数据库容器。使用以下命令:

docker run --name pg_master -d \
  --network pg_cluster \
  -e POSTGRES_USER=pguser \
  -e POSTGRES_PASSWORD=pgpassword \
  -e POSTGRES_DB=pgdb \
  -p 5432:5432 \
  postgres:14

这里的参数说明:

  • --name pg_master:设置容器名称为 pg_master
  • -d:让容器在后台运行。
  • --network pg_cluster:将容器连接到 pg_cluster 网络。
  • -e POSTGRES_USER=pguser:设置 PostgreSQL 用户为 pguser
  • -e POSTGRES_PASSWORD=pgpassword:设置该用户的密码。
  • -e POSTGRES_DB=pgdb:创建一个名为 pgdb 的数据库。
  • -p 5432:5432:将容器的 5432 端口映射到主机的 5432 端口。
  • postgres:14:使用 PostgreSQL 14 的官方镜像。

步骤4:配置从数据库容器

配置从数据库容器的步骤略有不同。首先,你需要确保主数据库容器正在运行。然后,可以用以下命令启动一个从数据库容器:

docker run --name pg_slave -d \
  --network pg_cluster \
  -e POSTGRES_USER=pguser \
  -e POSTGRES_PASSWORD=pgpassword \
  -e POSTGRES_DB=pgdb \
  -e POSTGRES_MASTER_SERVICE_HOST=pg_master \
  -e POSTGRES_MASTER_SERVICE_PORT=5432 \
  -p 5433:5432 \
  postgres:14

这里的额外参数说明:

  • -e POSTGRES_MASTER_SERVICE_HOST=pg_master:告诉从数据库容器要连接的主数据库的名称。
  • -e POSTGRES_MASTER_SERVICE_PORT=5432:指明主数据库的端口。

注意,-p 5433:5432 将从数据库的 5432 端口映射到主机的 5433 端口,以避免端口冲突。

步骤5:验证集群是否正常工作

在这一阶段,我们需要使用以下命令来检查容器的状态:

docker ps

该命令将列出所有正在运行的容器。确保 pg_masterpg_slave 两个容器都在运行状态。

接下来, 我们可以连接到主数据库并创建一个测试表:

docker exec -it pg_master psql -U pguser -d pgdb -c "CREATE TABLE test (id SERIAL PRIMARY KEY, name TEXT);"

通过执行这个命令,你将在主数据库中创建一个名为 test 的表。然后可以通过从容器连接到主数据库来验证:

docker exec -it pg_slave psql -U pguser -d pgdb -c "SELECT * FROM test;"

如果你能够看到test表的结构,则说明集群配置成功。

结论

通过以上步骤,你已经成功创建了一个基于 Docker 的 PostgreSQL 14 集群。这是一个相对复杂的过程,但通过一步一步的引导,我们成功搭建了一个主从数据库集群。未来,你可以在此基础上继续探索更多的高级功能,例如负载均衡和备份策略。了解和掌握这些技能将为你的开发工作奠定坚实基础。