返回
为 Ubuntu 系统搭建 PostgreSQL 13 主从架构
后端
2023-10-08 20:17:54
引言
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 主从架构。这将提高您的数据库性能、冗余和可用性。通过遵循本文中的步骤,您可以轻松管理和维护主从复制环境,确保您的数据安全无虞。