欢迎购买学习《PostgreSQL主从复制、高可用性HA和可扩展性实战训练视频教程》课程,你将学习基于主从复制、PgBouncer、PgPool II、HAProxy、分区、分片扩展的PostgreSQL高可用性HA和可扩展性解决方案。
在本课程中,我们讨论了利用多台服务器的资源构建基于 PostgreSQL 的可扩展解决方案的问题。这样的系统有一个自然的限制——基本上,性能、可靠性和一致性之间总是存在折衷。一方面可以改善,但其他方面会受到影响。在本课程中,我们将了解如何为我们的用例找到最佳匹配,以便我们准确了解哪些方面需要扩展,并避免分布式系统的常见权衡。
发表于 05/2022
MP4 | 视频:h264, 1280×720 | 音频:AAC,44.1 KHz,2 Ch
类型:eLearning | 语言:英语 + 英语字幕srt | 时长:80 节课(3h 8m)| 大小:1 GB
你会学到什么
- 评估您的扩展需求
- 如何使用复制和负载平衡来扩展读取
- 哪个是特定用例的最佳复制解决方案
- 如何使用 PgBouncer 连接池管理数据库连接
- 如何在云端使用多个 PostgreSQL 实例 (Google Cloud)
- 如何实现高可用
- 如何使用 PgPool II 执行自动故障转移
- 如何使用分区和分片扩展写入
要求
- 您需要使用具有 10GB 可用磁盘空间的 Windows/Mac/Linux PC
- 期望对数据库对象(例如表和索引)有基本的了解
- 熟悉 Linux 会有所帮助
描述
PostgreSQL 是最强大和易于使用的数据库管理系统之一。它得到了社区的大力支持,并且每年都在积极开发新版本。
PostgreSQL 支持 SQL 标准中包含的最高级功能。它还提供 NoSQL 功能和非常丰富的数据类型和扩展。所有这些使 PostgreSQL 在软件系统中成为一个非常有吸引力的解决方案。
在本课程中,我们讨论了利用多台服务器的资源构建基于 PostgreSQL 的可扩展解决方案的问题。这样的系统有一个自然的限制——基本上,性能、可靠性和一致性之间总是存在折衷。一方面可以改善,但其他方面会受到影响。在本课程中,我们将了解如何为我们的用例找到最佳匹配,以便我们准确了解哪些方面需要扩展,并避免分布式系统的常见权衡。
扩展 PostgreSQL 是一段旅程。您应该从本课程中获得更多准备,以评估您的扩展需求并了解如何扩展读取以及如何扩展写入。
本课程中介绍的每个解决方案都将改进可扩展性主题的某些方面,但它们中的每一个都会增加一些复杂性,并且可能会增加一些限制或约束。
我们必须提出正确的问题才能获得系统要求,这就是为什么我们专门讲了一堂课,以便我们在开始扩展之旅之前检查自己必须提出哪些问题。
在本课程之后,我们应该做好更多准备并了解如何扩展读取。
我们有多种复制选项,具体取决于我们偏爱性能还是灵活性。
复制可用作备份或备用解决方案,以在主服务器崩溃时接管。
复制还可用于通过将负载分布在多个数据库服务器上来提高软件系统的性能。
然后,如果我们有一种复制,我们可以问自己是否要允许多台计算机提供相同的数据。
为了实现这一点,我们应该有一个分发请求的机制。我们将在这里看到两个最受欢迎的选项。
接下来,如果数据库连接的数量很大,那么我们可能想要使用连接池。同样,我们将在这里介绍两个选项。
我们还将了解如何扩展写入,以及如何通过在架构中添加队列来使您的流量增长更可预测。
然后,当我们必须处理大表时,我们将检查分区情况。
此外,我们将检查分片以扩展写入,以及随之而来的所有复杂决策。
最后,我们很快就会看到多主机解决方案,这是一个相对较新的概念,似乎很有前途。
如果我们的目标是只实现高可用性,或者即使在集群的一部分发生故障的情况下也能继续工作,我们可以只检查那些解决方案。
HA 的先决条件是制定复制策略。
然后,如果主服务器出现故障,我们可以使用工具让第二台服务器快速接管。
伸缩 PostgreSQL 简介
为什么要扩展 PostgreSQL?
什么是垂直缩放?
什么是水平缩放?
读取与写入绑定的工作负载
为什么统计是必不可少的?
如何启用和使用统计数据?(动手)
如何为读取扩展 Postgres?
复制如何帮助扩展?
什么是负载均衡器?
如何为写入扩展 Postgres?
如何使用队列?
分区和分片如何帮助横向扩展?
多主解决方案是关于什么的?
了解横向扩展 PostgreSQL 的局限性
CAP 定理解释
PostgreSQL 与 Cassandra
用例:CA 系统
用例:AP 系统
如何使用流复制?
什么是流复制?
异步与同步复制
如何初始化主数据库?(动手)
如何为复制配置主节点?(动手)
如何配置副本实例?(动手)
测试复制设置(动手)
如何使用逻辑复制?
Postgres 中的逻辑复制是什么?
逐步逻辑复制设置
如何为逻辑复制设置服务器?(动手)
如何制作数据的选择性副本?(动手)
如何创建出版物?(动手)
如何创建订阅?(动手)
Postgres 逻辑复制的限制
如何监控逻辑复制?(动手)
使用逻辑复制的最佳用例
如何使用 PgBouncer?
什么是 PgBouncer?
连接池的基本概念
如何构建 PgBouncer 设置?(动手)
如何安装和配置 PgBouncer?(动手)
如何为 PgBouncer 创建基本配置文件?(动手)
如何连接到 PgBouncer?(动手)
解释性能的高级设置
有哪些可用的池模式?
使用 PgBouncer 执行基准测试(动手)
如何在 Google Cloud 中扩展 PostgreSQL?
介绍
Google Cloud 上的关键组件
架构的关键特征
如何在 Google Cloud 上创建 PostgreSQL 实例?(动手)
如何为 HAProxy 创建 Google Cloud Engine (GCE)?(动手)
如何为负载平衡配置 HAProxy?(动手)
测试负载平衡
如何使用 PostgreSQL 分区?
什么是分区?
哪些表需要分区?
表应该如何分区?
声明式与继承式分区
如何创建分区表?(动手)
分区方法
如何对 PostgreSQL 进行分片?
什么是分片?
分片的痛点?
什么是二级分片?
什么是好的分片?
如何跨多个 Shard 查询?
如何在 PostgreSQL 上设置高可用性 (HA)?
为什么选择高可用性?
实现高可用性的步骤
设置高可用性之前要问的基本问题
日志传送复制
流复制和逻辑复制
级联复制
同步与异步复制
自动故障转移和永远在线策略
简单的 HA 解决方案示例
更好的 HA 解决方案示例
如何使用 PgPool II?
什么是 PgPool II?
Pgpool-II 功能
如何使用流复制配置 Pgpool-II?(动手)
如何设置流复制?(动手)
如何配置 Pgpool-II 进行负载均衡?(动手)
测试负载平衡和读/写分离(动手)
如何为 PostgreSQL 高可用性配置 Pgpool?(动手)
如何配置 PostgreSQL 主服务器?(动手)
如何配置 Pgpool-II 服务器?(动手)
如何配置 PostgreSQL 副本服务器?(动手)
测试故障转移(动手)
如何恢复故障节点?(动手)
本课程适用于谁
- 有兴趣在 PostgreSQL 之上设计可扩展和高可用性解决方案的软件工程师
- 数据库管理员
- 每个对构建更好的 PostgreSQL 应用程序感兴趣的人