<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Postgresql on Nikita Ryanov</title><link>https://nryanov.com/tags/postgresql/</link><description>Recent content in Postgresql on Nikita Ryanov</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 31 Dec 2025 04:30:00 +0300</lastBuildDate><atom:link href="https://nryanov.com/tags/postgresql/index.xml" rel="self" type="application/rss+xml"/><item><title>Different ways to setup CDC</title><link>https://nryanov.com/postgresql/cdc/</link><pubDate>Wed, 31 Dec 2025 04:30:00 +0300</pubDate><guid>https://nryanov.com/postgresql/cdc/</guid><description>&lt;p&gt;CDC is an important part of data processing. Using CDC you can achieve many goals from simple data replication to audit and complex ETL jobs.
But implementing CDC is still a tough task (especially when considering not only happy-path).
In this article I want to show different ways of implementing CDC. Also, I&amp;rsquo;ll try to not only show how to setup each variant, but also compare them with each other and highlight pros and cons of each option.&lt;/p&gt;</description></item><item><title>PostgreSQL: Log-based CDC using debezium</title><link>https://nryanov.com/postgresql/debezium-postgres/</link><pubDate>Fri, 10 May 2024 04:30:00 +0300</pubDate><guid>https://nryanov.com/postgresql/debezium-postgres/</guid><description>&lt;p&gt;In this little article I&amp;rsquo;ll show different ways to set up debezium for log-based CDC.
Before diving into details about debezium, I&amp;rsquo;ll shortly describe CDC and why it may be helpful in some tasks.&lt;/p&gt;
&lt;h1 id="cdc-change-data-capture"&gt;CDC: Change Data Capture &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;In the Internet the &lt;code&gt;CDC&lt;/code&gt; is described as a design pattern which allows to track data changes (deltas).
Let&amp;rsquo;s consider this approach on table &lt;code&gt;user_balances&lt;/code&gt;. Initial state of table is:&lt;/p&gt;</description></item><item><title>PostgreSQL: Log shipping Replication</title><link>https://nryanov.com/postgresql/postgresql-log-shipping-replication/</link><pubDate>Wed, 04 Jan 2023 22:50:00 +0300</pubDate><guid>https://nryanov.com/postgresql/postgresql-log-shipping-replication/</guid><description>&lt;h1 id="prerequisite"&gt;Prerequisite &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;All examples assume that postgresql is already installed on your machine.
Also, all examples are created using &lt;code&gt;PostgreSQL 14.1 on aarch64-apple-darwin20.6.0, compiled by Apple clang version 13.0.0 (clang-1300.0.29.3), 64-bit&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="log-shipping-replication"&gt;Log shipping replication &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;Log shipping replication (i will use a short name for it &lt;code&gt;LSR&lt;/code&gt;) is another one method to physically replicate data between multiple database clusters. As name says this method is about to replicate data through WAL-files (segment) which is transferred between instances. This is probably the most simple and straightforward method for data replication, but this simplicity comes with price and compromises which also should be accounted.&lt;/p&gt;</description></item><item><title>PostgreSQL: Streaming Replication</title><link>https://nryanov.com/postgresql/postgresql-streaming-replication/</link><pubDate>Thu, 10 Feb 2022 22:50:00 +0300</pubDate><guid>https://nryanov.com/postgresql/postgresql-streaming-replication/</guid><description>&lt;h1 id="prerequisite"&gt;Prerequisite &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;All examples assume that postgresql is already installed on your machine.
Also, all examples are created using &lt;code&gt;PostgreSQL 14.1 on aarch64-apple-darwin20.6.0, compiled by Apple clang version 13.0.0 (clang-1300.0.29.3), 64-bit&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="streaming-replication"&gt;Streaming replication &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;Streaming replication is a built-in mechanism in PostgreSQL to replicate data between multiple servers.
It is a low-level replication mechanism as it streams WAL data from primary server to the replica through the physical replication slot,
so it is highly recommended to replicate data between servers using similar PostgreSQL major version (minor versions could be different).
Also, it is a good idea to have equal servers in terms of server configuration such as CPU, RAM and Disks, especially if you consider to promote replica to master if primary server goes down.&lt;/p&gt;</description></item><item><title>PostgreSQL: Logical Replication</title><link>https://nryanov.com/postgresql/postgresql-logical-replication/</link><pubDate>Fri, 04 Feb 2022 22:50:00 +0300</pubDate><guid>https://nryanov.com/postgresql/postgresql-logical-replication/</guid><description>&lt;h1 id="prerequisite"&gt;Prerequisite &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;All examples assume that postgresql is already installed on your machine.
Also, all examples are created using &lt;code&gt;PostgreSQL 14.1 on aarch64-apple-darwin20.6.0, compiled by Apple clang version 13.0.0 (clang-1300.0.29.3), 64-bit&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="logical-replication"&gt;Logical replication &lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/h1&gt;
&lt;p&gt;Logical replication is another method to replicate data between multiple nodes. This replication uses publish-subscribe model.
Each publisher may have multiple subscribers and each subscriber can subscribe to multiple publisher. Also, each subscriber may
be a publisher for another node which make it possible to create a cascading replication.&lt;/p&gt;</description></item></channel></rss>