返回

为 Ubuntu 系统搭建 PostgreSQL 13 主从架构

后端

引言

PostgreSQL 是一款功能强大且流行的开源关系数据库管理系统 (RDBMS)。通过配置主从架构,您可以实现数据冗余、提高性能并确保高可用性。本文将引导您逐步完成在 Ubuntu 系统上搭建 PostgreSQL 13 主从架构的过程。

先决条件

  • 在两台 Ubuntu 系统上安装 Ubuntu 20.04 或更高版本
  • 具备 root 用户或具有 sudo 权限的非 root 用户
  • 稳定的互联网连接

步骤

1. 安装 PostgreSQL

在主库和从库系统上安装 PostgreSQL 13:

# 使用官方仓库添加 PostgreSQL 仓库
sudo apt-get install software-properties-common
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main"

# 更新包列表并安装 PostgreSQL
sudo apt-get update
sudo apt-get install postgresql-13

# 创建 PostgreSQL 用户
sudo useradd -d /home/postgres postgres

# 初始化 PostgreSQL 数据库集群
sudo -u postgres /usr/lib/postgresql/13/bin/postgresql-13-setup initdb

2. 设置环境变量

设置 PostgreSQL 环境变量以方便访问:

# 编辑环境变量文件
sudo nano /etc/environment

在文件末尾添加以下行:

PATH=$PATH:/usr/lib/postgresql/13/bin

保存文件并重新加载环境变量:

source /etc/environment

3. 主库创建流复制用户

在主库上创建流复制用户:

# 创建流复制用户
sudo -u postgres psql -c "CREATE USER replication WITH REPLICATION PASSWORD 'your_password'"

# 授予复制用户必要的权限
sudo -u postgres psql -c "GRANT REPLICATION TO replication"

4. 从库配置

在从库系统上进行以下配置:

# 创建 postgres 用户
sudo useradd -d /home/postgres postgres

# 编辑从库的 postgresql.conf 配置文件
sudo nano /etc/postgresql/13/main/postgresql.conf

在文件中添加以下行:

wal_level = replica
max_wal_senders = 10
wal_keep_segments = 100
hot_standby = on

保存文件并重启 PostgreSQL 服务:

sudo systemctl restart postgresql

5. 建立复制连接

在主库上建立与从库的复制连接:

# 连接到主库
sudo -u postgres psql -d postgres

# 获取主库的 WAL 位置信息
SELECT pg_current_wal_lsn();

# 使用 WAL 位置信息建立复制连接
ALTER SYSTEM SET wal_sender_timeout = '120s';
ALTER SYSTEM SET max_connections = '300';
ALTER SYSTEM SET max_worker_processes = '20';
ALTER SYSTEM SET shared_buffers = '512MB';
CREATE PUBLICATION my_publication FOR TABLES ALL;

6. 从库连接主库

在从库上连接到主库并配置复制:

# 连接到从库
sudo -u postgres psql -d postgres

# 添加主库信息
ALTER SYSTEM SET hot_standby = off;
ALTER SYSTEM SET wal_receiver_status = 'streaming';
ALTER SYSTEM SET wal_receiver_timeout = '120s';
ALTER SYSTEM SET restore_command = 'scp -o StrictHostKeyChecking=no %p %h:%p';
ALTER SYSTEM SET archive_mode = on;
ALTER SYSTEM SET archive_command = 'rsync -avz %p %h:%p';
SET wal_level = 'replica';
ALTER SYSTEM SET max_wal_senders = '10';
ALTER SYSTEM SET wal_keep_segments = '100';
ALTER SYSTEM SET hot_standby = 'on';

# 启动流复制
  pg_recvlogical --dbname postgresql://replication:your_password@host:port/postgres --create-slot my_slot --slot my_slot --host my_host

7. 验证复制

在主库上验证复制状态:

sudo -u postgres psql -d postgres
SELECT * FROM pg_stat_activity WHERE state = 'active' AND application_name = 'logical replication worker';

结论

您已经成功地在 Ubuntu 系统上搭建了 PostgreSQL 13 主从架构。这将提高您的数据库性能、冗余和可用性。通过遵循本文中的步骤,您可以轻松管理和维护主从复制环境,确保您的数据安全无虞。