Postgres基于流复制搭建主从高可用集群

编程探索课程 2024-04-17 08:50:49
1、前言

PostgreSQL 基于流复制搭建主从高可用集群是一种常见的数据库架构方案。它的主要目的是提高数据库系统的可用性和可靠性。

Pg 流复制 原理图

以下是该架构的一些简介:

1. **主服务器**:负责处理客户端的读写请求。

2. **从服务器**:通过流复制从主服务器获取数据变更,并用于备份和只读查询。

3. **流复制**:主服务器将事务日志流式传输到从服务器,以便从服务器同步数据。

分布式集群 高可用方案

这种架构的优点包括:

1. **高可用性**:如果主服务器故障,从服务器可以快速接管,确保服务的连续性。

2. **读写分离**:可以将读操作分担到从服务器,减轻主服务器的负载。

3. **数据备份**:从服务器提供了数据的冗余副本。

要实现主从高可用集群,需要进行以下步骤: 1. 配置主服务器和从服务器。 2. 启用流复制。 3. 监控和管理集群,包括主从服务器的状态、数据同步等。 在实际应用中,还需要考虑诸如网络延迟、数据一致性等问题,并根据具体需求进行优化和调整。

2、底层原理

PostgreSQL 是一种常用的开源关系型数据库管理系统,它支持多种高可用架构和复制技术,以确保数据库的可靠性和容错能力。其中,基于流复制的主从复制是一种常见的高可用方案,其原理如下:

流复制 VS 逻辑复制

- 主从复制:主节点可以有多个从节点,从节点上还可以挂载从节点,从节点个数没有明确限制,层级无限制。主从间可以同步复制、可以一步复制,也可以同步一步混合复制。

- 工作原理:当有订阅者订阅主节点时,fork 一个子进程,通过发送 WAL 的方式也就是发送 redo 的方式同步,效率较高。postgresql 从9.0 开始支持流复制(Streaming Replication)。通过流复制技术,可以从实例级复制出一个与主库一模一样的从库(也称之为备库)。在主机 pghost1 上创建了一个 PostgreSQL 实例,并在实例上创建多个数据库,通过流复制技术可以在另外一台主机如 pghost2 上创建一个热备只读 PostgreSQL 实例。

pghost1 上的数据库称为主库(Primary Database 或 Master),pghost2 上的数据库称为备库(Standby Database 或 Slave)。

流复制同步方式有同步、异步两种,如果主节点和备节点不是很忙,通常异步模式下备库和主库的延迟时间能控制在毫秒级。 PostgreSQL 主从复制可以提高系统的可用性和可扩展性,当主服务器出现故障时,可以快速地将从服务器提升为主服务器,从而避免系统停机时间。

3、操作步骤

基于replication 流复制 搭建主从数据存储架构

primary: create role repl login replication encrypted password 'repl'; postgresql.conf: wal_level = replica ph_hba.conf: host replication repl 192.168.5.144/32 md5 select client_addr,sync_state from pg_stat_replication; slave: cd /home rm -rf pgdata pg_basebackup -h 192.168.5.119 -p 5432 -U repl -R -F p -P -D pgdata; chown postgres:postgres -R /home/pgdata

搭建完成后:主库新建一个test数据库,从库立马同步生成test数据,同时在备库只能进行查询操作,不能执行任何事务性的数据操作及DDL操作。

在主库查看正在进行流复制的备库状态

pg_basebackup 进行数据库二进制流备份 参数说明

0 阅读:0

编程探索课程

简介:感谢大家的关注