Kenny's Blog

這是Kenny's technology blog,歡迎交流_(:3」∠)_

0%

Hello everyone, I’m Kenny, a Backend Engineer from Dcard.

Dcard is a social networking platform that allows everyone to share ideas with confidence, regardless of background, age, or interest. It is Taiwan’s largest anonymous communication platform.

Recently, we upgraded the primary PG 9.6 Cluster of Dcard’s services to the 11 version, managing to limit write downtime within ten minutes, and successfully rebuilt the OfflineDB and CDC services within an hour. In this article, we will share how we accomplished this challenging task.

閱讀全文 »

前陣子,我們將 Dcard 服務主要的 PG Cluster 進行主版本的升級,並且控制寫入 downtime 在十分鐘內,在一小時內重建完成 OfflineDB 與 CDC 服務。因此透過這篇文章來分享我們是如何完成這項艱困的任務。

以下文章內容跟公司發佈在 medium 內容一樣,也算是紀錄自己做這大專案的嘔心歷程 XD

然後之後會再發一篇英文版的文章,也算是想分享給外國朋友,因為做這升級的規劃時,也上網看了不少其他國外公司的升級文章,所以我也想把我的升級過程翻譯成英文分享出去。

閱讀全文 »

今天這篇文章,是因應公司讀書會整理出來 Postgres 從 physical replication 到 logical replication 的相關概念。從歷史演化來看,並且理解 backup & recovery 概念後,再來理解何謂 physical replication,而 physical replication 本身功能已經發展多年,從 PG 10 開始發展 logical replication 並且到 PG 15 這之間做了不少 logical replication 的加強。

閱讀全文 »

延續上一篇講 pgcapture 的架構介紹與使用方式,接下來會開一系列文章講解 pgcapture 重要的實作細節。今天這篇文章先來講講 pgcapture 是如何做到 DDL 捕捉的。

閱讀全文 »

上次我們講到如何透過 pgoutput plugin 加上 pgx 來實作我們自己的 CDC 功能,但是其缺點是無法複製 DDL 且直到 pg 14 才支援 pgoutput 有 binary format 的功能。

因此今天來介紹我前同事開發的 pgcapture 是如何去解決以上提到的兩個缺點的,且如何使用。

閱讀全文 »

上一篇文章我們知道 logical decoding 的概念,這次我們來示範如何用 golang + pgx 來實現 CDC 的效果。我們知道從 Postgres 10 開始支援用 pub & sub 這種 logical replication 的方式,因此也提供 pgoutput 的 plugin 來實現 logical decoding。

因此這邊文章是使用 pgoutput + golang client 實現 logical replication 進而實現捕捉 CDC Event 的效果。

閱讀全文 »

在之前的文章有介紹過 logical replication 的概念,但其實 logical 這個概念是從 Postgres 9.4 開始提供 logical decoding 功能而來的,也是因為在 9.4 提供這個功能後,開始能夠利用這個特性實現自己的 logical replication。因此今天來介紹一下,什麼是 logical decoding,它的運作原理是什麼以及示範一下用法。

閱讀全文 »

延續上次 Postgres Stream Replication 的筆記,這次來講講 pgpool-ll,這個東西可以想成是 postgres 的 proxy,並且可以做到 load balance 的效果。

在升級 Postgres 的版本之前,如果你的 Postgres 前面有掛 pgpool-ll,那麼升級後,就必須去更改 pgpool-ll 的設定,因此這邊決定會先來幾篇文章講講 pgpool-ll 的相關設定。

閱讀全文 »

今年是 2023 年,想說來回顧一下,去年 2022 年的寫筆記到現在的回顧。

閱讀全文 »

上次提到 pg_upgrade 可以快速 upgrade 單台的 Postgres Server,最後結尾有提到要如何針對 PG Cluster 做升級。這篇先不講,先來記錄一下如何快速在 PG 建立起 cluster 並且採用 physical replication。

這樣下篇文章才可以來講講如何快速針對 PG Cluster 做升級。

閱讀全文 »