返回

基于 Bitnami PostgreSQL Docker 镜像构建流复制集群指南

后端

前言

PostgreSQL 是一款功能强大且流行的关系型数据库管理系统,而 Docker 则是一种广受欢迎的容器编排平台。将这两者结合使用,可以轻松快速地构建和管理 PostgreSQL 数据库集群。本文档将向您展示如何使用 Bitnami PostgreSQL Docker 镜像构建一个流复制集群,并提供详细的初始化过程指南。

先决条件

在开始之前,您需要确保满足以下先决条件:

  • 已安装并运行 Docker。
  • 拥有一个可用的域名或 IP 地址。
  • 已创建用于 PostgreSQL 数据和日志存储的目录。

步骤 1:下载 Bitnami PostgreSQL Docker 镜像

首先,您需要下载 Bitnami PostgreSQL Docker 镜像:

docker pull bitnami/postgresql:latest

步骤 2:创建 Docker Compose 文件

接下来,您需要创建一个 Docker Compose 文件来定义集群的配置。以下是示例 Docker Compose 文件:

version: '3.7'

services:
  master:
    image: bitnami/postgresql:latest
    environment:
      - POSTGRESQL_PASSWORD=password
      - POSTGRESQL_REPLICATION_USER=repl
      - POSTGRESQL_REPLICATION_PASSWORD=password
      - POSTGRESQL_CURRENT_USER=postgres
      - POSTGRESQL_CURRENT_PASSWORD=password
    ports:
      - "5432:5432"
    volumes:
      - ./data:/bitnami/postgresql/data
    networks:
      - postgres-network

  slave1:
    image: bitnami/postgresql:latest
    environment:
      - POSTGRESQL_PASSWORD=password
      - POSTGRESQL_REPLICATION_USER=repl
      - POSTGRESQL_REPLICATION_PASSWORD=password
      - POSTGRESQL_CURRENT_USER=postgres
      - POSTGRESQL_CURRENT_PASSWORD=password
      - POSTGRESQL_MASTER_HOST=master
      - POSTGRESQL_REPLICATION_MODE=slave
    ports:
      - "5433:5432"
    volumes:
      - ./data:/bitnami/postgresql/data
    networks:
      - postgres-network

  slave2:
    image: bitnami/postgresql:latest
    environment:
      - POSTGRESQL_PASSWORD=password
      - POSTGRESQL_REPLICATION_USER=repl
      - POSTGRESQL_REPLICATION_PASSWORD=password
      - POSTGRESQL_CURRENT_USER=postgres
      - POSTGRESQL_CURRENT_PASSWORD=password
      - POSTGRESQL_MASTER_HOST=master
      - POSTGRESQL_REPLICATION_MODE=slave
    ports:
      - "5434:5432"
    volumes:
      - ./data:/bitnami/postgresql/data
    networks:
      - postgres-network

networks:
  postgres-network:
    driver: bridge

步骤 3:运行 Docker Compose 命令

现在,您可以运行 Docker Compose 命令来启动集群:

docker-compose up -d

步骤 4:初始化集群

集群启动后,您需要初始化它。为此,您可以使用以下命令:

docker exec -it master /bin/bash

在容器中,您可以使用以下命令初始化集群:

/opt/bitnami/scripts/postgresql/setup.sh

步骤 5:配置流复制

流复制是 PostgreSQL 中的一种复制机制,它允许将数据从一个数据库服务器复制到另一个数据库服务器。要配置流复制,您需要在主服务器上运行以下命令:

CREATE USER repl WITH REPLICATION PASSWORD 'password';

然后,您需要在从服务器上运行以下命令:

CREATE USER repl WITH REPLICATION PASSWORD 'password';
GRANT REPLICATION TO repl;

最后,您需要在从服务器上运行以下命令来启动流复制:

pg_basebackup -h master -U repl -p 5432 -D /var/lib/postgresql/data

步骤 6:测试集群

集群初始化并配置流复制后,您可以使用以下命令测试它:

docker exec -it slave1 /bin/bash

在容器中,您可以使用以下命令来连接到主服务器:

psql -h master -U repl -p 5432

结论

通过按照本指南的步骤,您已经成功构建了一个使用 Bitnami PostgreSQL Docker 镜像的流复制集群。现在,您可以使用此集群来存储和管理您的数据。