MySQL→PostgreSQL 主从架构迁移方案(读写分离版)

Posted on Thu 09 October 2025 in 数据库 • Tagged with PostgreSQL, MySQL, 迁移, 读写分离, 高可用

目标:用 PostgreSQL 的 WAL + Streaming Replication 实现“写走主、读走从”,并提供生产可用的高可用与连接层方案,附配置模板与运维脚本示例。适配 PostgreSQL 16/17/18。


1. 架构总览

1.1 基础拓扑(最小可用)

App(写) ─────────►  Primary(主)
                ╲
                 ╲ WAL Stream
                  ╲
App(读) ───────────► Standby1(从)
                   ► Standby2(从)
  • 写请求:直连主库。
  • 读请求:直连从库(或通过中间层,见 §4)。
  • 主从:物理复制(Streaming Replication),异步或半同步可选。

1.2 生产级拓扑(推荐)

               +-------------------+
               |    pgbouncer      |  连接池(减少连接抖动)
               +-------------------+
                        │
                 +--------------+
                 |   Pgpool-II  |  SQL解析级读写分离/健康检查/故障转移脚本
                 +--------------+
                     │     │
                (Write)   (Read)
                     │     │
                   Primary  ──┬── Standby1
                              └── Standby2

        +-------------------+
        | Patroni + etcd    |  主从编排/自动 …

Continue reading

PostgreSQL Docker 部署常见问题与解决方案

Posted on Thu 09 October 2025 in 数据库 • Tagged with PostgreSQL, Docker, 故障排查, FAQ

汇总在使用 Docker 部署 PostgreSQL(含 PostGIS、pgvector、TimescaleDB)过程中常见的问题及可操作的解决方案,涵盖构建、扩展、连接、权限、性能与数据等方面。


目录

  • 构建问题
  • 扩展问题
  • 连接问题
  • 权限问题
  • 性能问题
  • 数据问题
  • 调试技巧
  • 预防措施
  • 获取帮助

构建问题

Q1: Docker 构建时出现 "lsb_release: command not found"

问题描述:

/bin/sh: 1: lsb_release: command not found
/bin/sh: 1: apt-key: command not found

原因分析: 在 Debian/Ubuntu 基础镜像中,lsb_releaseapt-key 命令可能不存在或已被弃用。

解决方案:改用从源码编译的方式 …


Continue reading

PostgreSQL Docker 部署指南

Posted on Thu 09 October 2025 in 数据库 • Tagged with PostgreSQL, Docker, PostGIS, pgvector, TimescaleDB

本指南详细介绍如何使用 Docker 部署一个包含 PostGIS、pgvector 和 TimescaleDB 扩展的 PostgreSQL 15 数据库。该方案解决了扩展兼容性问题,特别是 pgvector 的段错误问题。

项目结构

PgSQL/
├── .env                          # 环境变量配置
├── Dockerfile                    # PostgreSQL 镜像构建文件
├── docker-compose.yml            # Docker Compose 配置
├── README.md                     # 项目说明
├── config/                       # 配置文件目录
│   ├── pg_hba.conf              # 客户端认证配置
│   └── postgresql.conf          # PostgreSQL 主配置
├── data/                        # 数据持久化目录
│   └── pgdata/                  # PostgreSQL 数据目录
├── init-scripts/                # 初始化脚本
│   └── 01-install-extensions.sql # 扩展安装脚本
├── logs/                        # 日志目录
└── test-examples.sql            # 测试示例

快速开始

1. 环境准备

确保系统已 …


Continue reading

MySQL与PostgreSQL全面对比与压测方案

Posted on Sun 15 December 2024 in 数据库 • Tagged with MySQL, PostgreSQL, 数据库对比, 压测, Python, 性能优化

MySQL与PostgreSQL全面对比分析,包括核心技术差异、性能测试、Python操作示例及压测方案。帮助开发者选择适合业务场景的数据库系统。


Continue reading

PostgreSQL Docker开发环境配置指南

Posted on Tue 19 March 2024 in 开发工具 • Tagged with PostgreSQL, Docker, 数据库, 开发环境

PostgreSQL Docker开发环境配置指南

本文档详细介绍如何使用Docker搭建PostgreSQL开发环境,包括环境配置、启动方式、维护方法等内容。

目录结构

PgSQL_Docker/
├── .env                  # 环境变量配置文件
├── README.md            # 项目说明文档
├── config/              # 配置文件目录
│   ├── pg_hba.conf     # 访问控制配置
│   └── postgresql.conf  # PostgreSQL主配置文件
├── data/               # 数据存储目录
└── logs/               # 日志文件目录

配置文件说明

1. docker-compose.yml

version: '3.8'

services:
  postgres:
    container_name: postgres-server
    image: postgres:15
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    ports:
      - "${POSTGRES_PORT}:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
      - ./logs:/var/log/postgresql
      - ./config/postgresql.conf:/etc/postgresql/postgresql.conf
      - ./config/pg_hba.conf:/etc/postgresql/pg_hba.conf
    command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
    networks:
      - postgres-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s …

Continue reading