PostgreSQL Replication, High Availability HA and Scalability

所在平台: Udemy

课程主页: https://www.udemy.com/course/postgresql-replication-high-availability-ha-and-scalability/

课程评论:没有评论

第一个写评论        关注课程

课程简介

课程名称:PostgreSQL 复制、高可用性(HA)和可扩展性 课程概述: PostgreSQL 是一种强大且易于使用的数据库管理系统,受到社区的广泛支持并不断开发。它支持 SQL 标准中的高级特性,还具有 NoSQL 能力以及丰富的数据类型和扩展功能,使其成为软件系统中极具吸引力的解决方案。本课程探讨了基于 PostgreSQL 构建可扩展解决方案的问题,如何利用多个服务器的资源。课程中提到,系统存在性能、可靠性和一致性之间的自然权衡,改善一个方面往往会对其他方面产生影响。我们将学习如何根据具体使用案例找到最佳的解决方案,以避免分布式系统常见的权衡问题。 本课程帮助学员更好地评估扩展需求,理解如何扩展读操作和写操作。每个解决方案虽然能在某些可扩展性方面有所改善,但也会增加复杂性和限制。因此,我们强调在开始扩展旅程之前,首先要提出正确的问题以明确系统需求。 课程内容涵盖以下几个方面: 1. 理解 PostgreSQL 的扩展需求及扩展方法(垂直扩展与水平扩展)。 2. 复制在扩展中的重要性,包括不同的复制方案及其优缺点。 3. 使用连接池器来管理大数量的数据库连接。 4. 如何通过排队机制和分区来优化写操作,并探讨分片的应用。 5. 了解多主解决方案的潜力。 6. 实现高可用性(HA)的步骤及相关工具配置。 此外,课程还包括实际操作教学,帮助学员掌握 Streaming 复制、逻辑复制、PgBouncer、PgPool II 等工具的配置与使用,以及如何在 Google Cloud 上扩展 PostgreSQL。 总之,完成本课程后,学员应能更好地理解并实施 PostgreSQL的扩展和高可用性解决方案。

课程评论(0条)

课程详情

PostgreSQL is one of the most powerful and easy-to-use database management systems. It has strong support from the community and is being actively developed with a new release every year. PostgreSQL supports the most advanced features included in SQL standards. It also provides NoSQL capabilities and very rich data types and extensions. All of this makes PostgreSQL a very attractive solution in software systems. In this course, we discussed the problem of building scalable solutions based on PostgreSQL utilizing the resources of several servers. There is a natural limitation for such systems-basically, there is always a compromise between performance, reliability, and consistency. It's possible to improve one aspect, but others will suffer. In this course, we'll see how to find the best match for our use-cases so that we know eactly which aspects need scaling, and avoid the common trade-offs of distributed systems.Scaling PostgreSQL is a journey. You should come out of this course more prepared to assess your scaling needs and understand how to scale reads and how to scale writes.Each of this solution presented in this course will improve some aspect of the scalability topic, but each of them will add some complexity, and maybe some limitation or constraint.We have to ask the right questions to get the system requirements, and this why we dedicated an entire lecture, so that we examine what questions we have to put ourself, before starting the Scaling Journey.After this course, we should come out more prepared and understand how to scale reads.We have several options for replication, depending on wether we favor performance or flexibility.Replication can be used as a backup or a standby solution that would take over in case the main server crashes. Replication can also be used to improve the performance of a software system by making it possible to distribute the load on several database servers.Then, if we have one sort of replication in place, we could ask ourself if we want to allow several computers to serve the same data.To achieve this, we should have a mechanism to distribute the requests. We'll see here two of the most popular options available.Next, if the number of database connections is great, then we'll probably want to use a connection pooler. Again, we'll cover two options here.We'll also see, how to scale writes, and how to make your traffic growth more predictable by adding queuing to your architecture.Then, we'll check partitioning for those cases when we have to deal with big tables.Also, we'll check sharding to scale writes, and all the complex decisions that come with it.Finally, we'll see shortly the multi-master solution, which is a relatively new concept that seems to be promising.If our goal is to achieve only High availability, or the ability to continue working even in the situation where one part of the cluster fails, we can check out only those solutions.The pre-requirements for HA is to put in place a replication strategy.Then, we can use tools to allow a second server to take over quickly, if the primary server fails.Introduction to Scaling PostgreSQLWhy scale PostgreSQL?What is Vertical Scaling?What is Horizontal Scaling?Read Versus Write Bound WorkloadsWhy Statistics are essential?How to enable and make us of Statistics? (Hands-on)How to scale Postgres for Reads?How replication helps to scale out?What are the Load-Balancers?How to scale Postgres for Writes?How to make use of Queues?How could Partitioning and Sharding help in scaling out?What is the Multi-Master solution about?Understanding the Limitations of Scaling out PostgreSQLCAP Theorem Explained PostgreSQL vs. CassandraUse case: CA Systems Use case: AP SystemsHow to use Streaming Replication?What is Streaming Replication? Asynchronous vs. Synchronous Replication How to Initialise Primary Database? (Hands-on)How to Configuring the Primary for Replication? (Hands-on)How to Configuring the Replica Instance? (Hands-on)Testing Replication Setup (Hands-on)How to use Logical Replication?What is Logical Replication in Postgres? Step by step Logical Replication setup How to setup the servers for Logical Replication? (Hands-on)How to make a selective Copy of the Data? (Hands-on)How to Create the Publication? (Hands-on)How to Create the Subscription? (Hands-on)Postgres Limitations of Logical Replication How to Monitoring Logical Replication? (Hands-on)Best use-cases for using Logical ReplicationHow to make use of PgBouncer?What is PgBouncer? Fundamental concepts of connection pooling How to build a PgBouncer Setup? (Hands-on)How to install and configure PgBouncer? (Hands-on)How to create a basic configuration file for PgBouncer? (Hands-on)How to connect to PgBouncer? (Hands-on)Explaining Advanced Settings for Performance Which are the available Pool Modes?Executing a benchmark with PgBouncer (Hands-on)How to scale PostgreSQL in Google Cloud?Introduction Key Components on Google CloudKey Characteristics of the Architecture How to create PostgreSQL Instances on Google Cloud? (Hands-on)How to create a Google Cloud Engine (GCE) for HAProxy? (Hands-on)How to configure HAProxy for Load-Balancing? (Hands-on)Testing Load-BalancingHow to make use of PostgreSQL Partitioning?What is Partitioning? Which Tables Need Partitioning? How should the Tables be Partitioned? Declarative vs. Inheritance Partitioning How to create a Partitioned Table? (Hands-on)Partitioning MethodsHow to Shard PostgreSQL?What is Sharding?Pain-Points of Sharding?What is Second Level Sharding?What is good Sharding?How to query across multiple Shards?How to setup High Availability (HA) on PostgreSQL?Why High Availability? Steps to achieve High Availability Essential Questions to ask before setting-up High AvailabilityLog-Shipping Replication Streaming Replication and Logical Replication Cascading Replication Synchronous vs. Asynchronous Replication Automatic Failover and Always-on Strategy Simple HA Solution Example Better HA Solution ExampleHow to make use of PgPool II?What is PgPool II?Pgpool-II Features How to Configure Pgpool-II with Streaming Replication? (Hands-on)How to setup Streaming Replication? (Hands-on)How to Configuring Pgpool-II for Load Balancing ? (Hands-on)Testing load-balancing & read/write separation (Hands-on)How to Configure Pgpool for PostgreSQL High-Availability? (Hands-on)How to Configure PostgreSQL Primary Server? (Hands-on)How to Configure Pgpool-II Server? (Hands-on)How to Configure PostgreSQL Replica Server? (Hands-on)Testing The Failover (Hands-on)How to restore failed nodes? (Hands-on)

课程标签

0人关注该课程

主题相关的课程