从0到1,PostgreSQL复制的不同策略详解

作为一个开发者 , 我们知道一个网站如果数据丢失和停机 , 即使是很少、很短暂 , 也可能是灾难性的 , 并且降低生产力、可访问性和产品信心 。
为保护站点的完整性 , 建立防范停机或数据丢失的措施至关重要 。
数据复制是一种自动备份过程 , 数据会从其主数据库复制到另一个远程位置以进行妥善保管 。对于运行数据库服务器的任何站点或应用程序来说 , 它都是一项不可或缺的技术 。我们还可以利用复制的数据库来处理只读 SQL , 从而允许在系统内运行更多进程 。
在两个数据库之间设置复制是很有必要了 , 它提供了针对意外事故的容错能力 , 这也是在灾难期间实现高可用性的最佳策略 。
在本文中 , 我们将深入探讨 PostgreSQL 复制的不同策略 。
什么是 PostgreSQL 复制?

从0到1,PostgreSQL复制的不同策略详解

文章插图
PostgreSQL 复制是将数据从PostgreSQL 数据库服务器复制到另一台服务器的过程 。源数据库服务器也称为“主”服务器 , 而接收复制数据的数据库服务器称为“副本”服务器 。
PostgreSQL 数据库遵循简单的复制模型 , 其中所有写入都转到主节点 。然后主节点可以应用这些更改并将它们广播到辅助节点 。
什么是自动故障转移?故障转移是一种在主服务器因一些原因失效时恢复数据的方法 。不过只要你配置了 PostreSQL 来进行物理流复制 , 就不会因主服务器故障而停机 。
请注意 , 故障转移过程可能需要一些时间来设置和启动 。PostgreSQL 中没有用于监视和确定服务器故障范围的内置工具 , 因此需要我们自行发挥 。
不过幸运的是 , 我们需要依赖 PostgreSQL 进行故障转移 。有专用工具来进行自动故障转移和自动切换到备用数据库 , 从而减少数据库停机时间 。
通过设置故障转移复制 , 即使主服务器崩溃时 , 也可以通过备用服务器切换来保证高可用性 。
使用 PostgreSQL 复制的好处以下是利用 PostgreSQL 复制的一些主要优势:
  • 数据迁移:可以通过更改数据库服务器硬件或通过系统部署来使用 PostgreSQL 复制进行数据迁移 。
  • 容错性:如果主服务器发生故障 , 备用服务器可以充当服务器 , 因为主服务器和备用服务器包含的数据是相同的 。
  • 联机事务处理 (OLTP) 性能:可以通过移除报告查询负载来改进 OLTP 系统的事务处理时间和查询时间 。事务处理时间是在事务完成之前执行给定查询所花费的持续时间 。
  • 并行系统测试:在升级新系统时 , 需要确保系统能够很好地处理现有数据 , 因此需要在部署前使用生产数据库副本进行测试 。
PostgreSQL 复制的工作原理通常 , 一般的机构中只有一种方法可以设置备份和复制 。然而 , PostgreSQL 可以有三种 , 分别如下:
  1. 流复制:将数据从主节点复制到从节点 , 然后将数据复制到 S3 等文件服务器进行备份存储 。
  2. 卷级复制:在存储层复制数据 , 从主节点开始复制到从节点 , 然后将数据复制到 S3 等进行备份存储 。
  3. 增量备份:从主节点复制数据 , 同时从 S3 等文件服务器存储构建新的辅助节点 , 允许直接从主节点流式传输 。
方法一:流复制PostgreSQL 流复制也称为 WAL 复制 , 可以在服务器上安装 PostgreSQL 后无缝设置 。这种复制方法基于将 WAL 文件从主数据库复制到目标数据库来完成的 。
通过使用主从配置来实现 PostgreSQL 流式复制 。主服务器是处理主数据库及其所有操作的主要实例 。辅助服务器充当补充实例并执行复制对主数据库所做的所有更改 , 并在此过程中生成相同的副本 。主服务器是读/写服务器 , 而辅助服务器只是只读的 。
这种方法需要同时配置主节点和备节点 。以下部分将阐明配置所涉及的步骤 。
配置主节点通过执行以下步骤来配置主节点:
第一步:初始化数据库我们可以利用 initdb 程序命令来初始化数据库 。接下来 , 使用命令创建具有复制权限的新用户:


推荐阅读