Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
logicaldecoding-synchronous.html50 linesDownload Raw Back to html
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>49.8. Synchronous Replication Support for Logical Decoding</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="logicaldecoding-writer.html" title="49.7. Logical Decoding Output Writers" /><link rel="next" href="logicaldecoding-streaming.html" title="49.9. Streaming of Large Transactions for Logical Decoding" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">49.8. Synchronous Replication Support for Logical Decoding</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="logicaldecoding-writer.html" title="49.7. Logical Decoding Output Writers">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="logicaldecoding.html" title="Chapter 49. Logical Decoding">Up</a></td><th width="60%" align="center">Chapter 49. Logical Decoding</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="logicaldecoding-streaming.html" title="49.9. Streaming of Large Transactions for Logical Decoding">Next</a></td></tr></table><hr /></div><div class="sect1" id="LOGICALDECODING-SYNCHRONOUS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">49.8. Synchronous Replication Support for Logical Decoding <a href="#LOGICALDECODING-SYNCHRONOUS" class="id_link">#</a></h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="logicaldecoding-synchronous.html#LOGICALDECODING-SYNCHRONOUS-OVERVIEW">49.8.1. Overview</a></span></dt><dt><span class="sect2"><a href="logicaldecoding-synchronous.html#LOGICALDECODING-SYNCHRONOUS-CAVEATS">49.8.2. Caveats</a></span></dt></dl></div><div class="sect2" id="LOGICALDECODING-SYNCHRONOUS-OVERVIEW"><div class="titlepage"><div><div><h3 class="title">49.8.1. Overview <a href="#LOGICALDECODING-SYNCHRONOUS-OVERVIEW" class="id_link">#</a></h3></div></div></div><p>3     Logical decoding can be used to build4     <a class="link" href="warm-standby.html#SYNCHRONOUS-REPLICATION" title="27.2.8. Synchronous Replication">synchronous5     replication</a> solutions with the same user interface as synchronous6     replication for <a class="link" href="warm-standby.html#STREAMING-REPLICATION" title="27.2.5. Streaming Replication">streaming7     replication</a>.  To do this, the streaming replication interface8     (see <a class="xref" href="logicaldecoding-walsender.html" title="49.3. Streaming Replication Protocol Interface">Section 49.3</a>) must be used to stream out9     data. Clients have to send <code class="literal">Standby status update (F)</code>10     (see <a class="xref" href="protocol-replication.html" title="55.4. Streaming Replication Protocol">Section 55.4</a>) messages, just like streaming11     replication clients do.12    </p><div class="note"><h3 class="title">Note</h3><p>13      A synchronous replica receiving changes via logical decoding will work in14      the scope of a single database. Since, in contrast to15      that, <em class="parameter"><code>synchronous_standby_names</code></em> currently is16      server wide, this means this technique will not work properly if more17      than one database is actively used.18     </p></div></div><div class="sect2" id="LOGICALDECODING-SYNCHRONOUS-CAVEATS"><div class="titlepage"><div><div><h3 class="title">49.8.2. Caveats <a href="#LOGICALDECODING-SYNCHRONOUS-CAVEATS" class="id_link">#</a></h3></div></div></div><p>19     In synchronous replication setup, a deadlock can happen, if the transaction20     has locked [user] catalog tables exclusively. See21     <a class="xref" href="logicaldecoding-output-plugin.html#LOGICALDECODING-CAPABILITIES" title="49.6.2. Capabilities">Section 49.6.2</a> for information on user22     catalog tables. This is because logical decoding of transactions can lock23     catalog tables to access them. To avoid this users must refrain from taking24     an exclusive lock on [user] catalog tables. This can happen in the following25     ways:26 27     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>28        Issuing an explicit <code class="command">LOCK</code> on <code class="structname">pg_class</code>29        in a transaction.30       </p></li><li class="listitem"><p>31        Perform <code class="command">CLUSTER</code> on <code class="structname">pg_class</code> in32        a transaction.33       </p></li><li class="listitem"><p>34        <code class="command">PREPARE TRANSACTION</code> after <code class="command">LOCK</code> command35        on <code class="structname">pg_class</code> and allow logical decoding of two-phase36        transactions.37       </p></li><li class="listitem"><p>38        <code class="command">PREPARE TRANSACTION</code> after <code class="command">CLUSTER</code>39        command on <code class="structname">pg_trigger</code> and allow logical decoding of40        two-phase transactions. This will lead to deadlock only when published table41        have a trigger.42       </p></li><li class="listitem"><p>43        Executing <code class="command">TRUNCATE</code> on [user] catalog table in a44        transaction.45       </p></li></ul></div><p>46 47     Note that these commands that can cause deadlock apply to not only explicitly48     indicated system catalog tables above but also to any other [user] catalog49     table.50    </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="logicaldecoding-writer.html" title="49.7. Logical Decoding Output Writers">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="logicaldecoding.html" title="Chapter 49. Logical Decoding">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="logicaldecoding-streaming.html" title="49.9. Streaming of Large Transactions for Logical Decoding">Next</a></td></tr><tr><td width="40%" align="left" valign="top">49.7. Logical Decoding Output Writers </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 49.9. Streaming of Large Transactions for Logical Decoding</td></tr></table></div></body></html>
codekingpro/portable-devtools · Team Ai