mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
Compare commits
74 Commits
v5.3.2
...
dev/gianni
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d52b045113 | ||
|
|
3b89731899 | ||
|
|
138bee98e9 | ||
|
|
83ffe84ff5 | ||
|
|
bb3206a2bf | ||
|
|
49dfaea471 | ||
|
|
8edc64f64e | ||
|
|
3ce646f960 | ||
|
|
dc0e89e234 | ||
|
|
41b6194580 | ||
|
|
d501781a5f | ||
|
|
de5265f594 | ||
|
|
66ac4183b4 | ||
|
|
59e5bc1500 | ||
|
|
8164914598 | ||
|
|
eb867516ff | ||
|
|
6b961ab6a7 | ||
|
|
7e2d14d225 | ||
|
|
a90d1cf3dd | ||
|
|
cce5ca2245 | ||
|
|
6f87d2c61e | ||
|
|
c0763c94c8 | ||
|
|
ea689d17b5 | ||
|
|
de343f0cbe | ||
|
|
e6f1b8c279 | ||
|
|
8e5f469fa1 | ||
|
|
73cb3abd44 | ||
|
|
a3c77cac41 | ||
|
|
706d570790 | ||
|
|
433bde82e8 | ||
|
|
8f5319ce75 | ||
|
|
4c05307da1 | ||
|
|
743e0e5480 | ||
|
|
35c4ba1fbe | ||
|
|
30082eab02 | ||
|
|
d9d60fa420 | ||
|
|
2756d6fd94 | ||
|
|
bb63fb08d0 | ||
|
|
9508673e00 | ||
|
|
3e3803fa32 | ||
|
|
8119aef378 | ||
|
|
35c8a53790 | ||
|
|
1c7fec9a1a | ||
|
|
3b8294e4cb | ||
|
|
f5e42e1851 | ||
|
|
f7b9e11d6f | ||
|
|
197c87d13b | ||
|
|
67e2e8e613 | ||
|
|
c6f137d438 | ||
|
|
6cd41aaaf6 | ||
|
|
b4dca347b4 | ||
|
|
2e1d1f9a57 | ||
|
|
fa851ea38f | ||
|
|
593bffb18f | ||
|
|
8a36cc3b2d | ||
|
|
2733579a76 | ||
|
|
947d14979f | ||
|
|
b8cb1feb49 | ||
|
|
5de74d9e18 | ||
|
|
2dce8e14f9 | ||
|
|
81f9c0ebd0 | ||
|
|
9f53d45c74 | ||
|
|
aef5a4f8cf | ||
|
|
580d112d3d | ||
|
|
6ba27a9c6b | ||
|
|
51e7025747 | ||
|
|
ded20be505 | ||
|
|
e7e62f7f35 | ||
|
|
3870768d80 | ||
|
|
16349d95e9 | ||
|
|
bba282a131 | ||
|
|
02c29dc860 | ||
|
|
7c5efe2baa | ||
|
|
b2756806d9 |
37
.github/workflows/sonarqube-scan.yml
vendored
Normal file
37
.github/workflows/sonarqube-scan.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: SonarQube Scan
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [ master ]
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
sonarQube:
|
||||
name: SonarQube-Job
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Checkout source repo
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
ref: '${{ github.head_ref }}'
|
||||
|
||||
- name: Checkout GitHub Action Repo
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
repository: EnterpriseDB/edb-github-actions.git
|
||||
ref: master
|
||||
token: ${{ secrets.GH_SLONIK }}
|
||||
path: .github/actions/edb-github-actions
|
||||
|
||||
- name: SonarQube Scan
|
||||
uses: ./.github/actions/edb-github-actions/sonarqube
|
||||
with:
|
||||
REPO_NAME: '${{github.event.repository.name}}'
|
||||
SONAR_PROJECT_KEY: EnterpriseDB_repmgr
|
||||
SONAR_URL: '${{secrets.SONARQUBE_URL}}'
|
||||
SONAR_LOGIN: '${{secrets.SONARQUBE_LOGIN}}'
|
||||
PULL_REQUEST_KEY: '${{github.event.number}}'
|
||||
PULL_REQUEST_BRANCH: '${{github.head_ref}}'
|
||||
PULL_REQUEST_BASE_BRANCH: '${{github.base_ref}}'
|
||||
REPO_DEFAULT_BRANCH: '${{github.event.repository.default_branch}}'
|
||||
REPO_EXCLUDE_FILES: '*properties*,**/src/test/**/*,**/*.sql,**/docs/**/*,**/*/*.java'
|
||||
18
.github/workflows/sonarqube/configure-env.sh
vendored
Executable file
18
.github/workflows/sonarqube/configure-env.sh
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install debhelper curl autoconf zlib1g-dev \
|
||||
libedit-dev libxml2-dev libxslt1-dev libkrb5-dev libssl-dev libpam0g-dev systemtap-sdt-dev \
|
||||
libselinux1-dev build-essential bison apt-utils lsb-release devscripts \
|
||||
software-properties-common git shellcheck flex
|
||||
|
||||
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||
sudo apt-get update
|
||||
|
||||
sudo apt-get -y install libpq-dev postgresql-13 postgresql-server-dev-13
|
||||
|
||||
./configure
|
||||
|
||||
export PG_CONFIG=/usr/bin/pg_config
|
||||
|
||||
/home/buildfarm/sonar/depends/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir build_wrapper_output_directory make
|
||||
9
HISTORY
9
HISTORY
@@ -1,4 +1,9 @@
|
||||
5.3.2 2022-??-??
|
||||
5.3.3 2022-10-17
|
||||
Support for PostgreSQL added
|
||||
repmgrd: ensure event notification script is called for event
|
||||
"repmgrd_upstream_disconnect"; GitHub #760 (Ian)
|
||||
|
||||
5.3.2 2022-05-25
|
||||
standby clone: don't error out if unable to determine cluster size (Ian)
|
||||
node check: fix --downstream --nagios output; GitHub #749 (Ian)
|
||||
repmgrd: ensure witness node marked active (hslightdb)
|
||||
@@ -69,7 +74,7 @@
|
||||
"standby clone" (Ian)
|
||||
repmgr: add --upstream option to "node check"
|
||||
repmgr: report error code on follow/rejoin failure due to non-available
|
||||
0 replication slot (Ian)
|
||||
replication slot (Ian)
|
||||
repmgr: ensure "node rejoin" checks for available replication slots (Ian)
|
||||
repmgr: improve "standby switchover" completion checks (Ian)
|
||||
repmgr: add replication configuration file ownership check to
|
||||
|
||||
@@ -30,7 +30,9 @@ DATA = \
|
||||
repmgr--5.1--5.2.sql \
|
||||
repmgr--5.2.sql \
|
||||
repmgr--5.2--5.3.sql \
|
||||
repmgr--5.3.sql
|
||||
repmgr--5.3.sql \
|
||||
repmgr--5.3--5.4.sql \
|
||||
repmgr--5.4.sql
|
||||
|
||||
REGRESS = repmgr_extension
|
||||
|
||||
@@ -79,10 +81,10 @@ configfile-scan.c: configfile-scan.l
|
||||
$(REPMGR_CLIENT_OBJS): repmgr-client.h repmgr_version.h
|
||||
|
||||
repmgr: $(REPMGR_CLIENT_OBJS)
|
||||
$(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X)
|
||||
$(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
|
||||
|
||||
repmgrd: $(REPMGRD_OBJS)
|
||||
$(CC) $(CFLAGS) $(REPMGRD_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X)
|
||||
$(CC) $(CFLAGS) $(REPMGRD_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
|
||||
|
||||
$(REPMGR_CLIENT_OBJS): $(HEADERS)
|
||||
$(REPMGRD_OBJS): $(HEADERS)
|
||||
|
||||
12
README.md
12
README.md
@@ -7,8 +7,8 @@ replication capabilities with utilities to set up standby servers, monitor
|
||||
replication, and perform administrative tasks such as failover or switchover
|
||||
operations.
|
||||
|
||||
The most recent `repmgr` version (5.2.1) supports all PostgreSQL versions from
|
||||
9.5 to 13. PostgreSQL 9.4 is also supported, with some restrictions.
|
||||
The most recent `repmgr` version (5.3.2) supports all PostgreSQL versions from
|
||||
9.5 to 14. PostgreSQL 9.4 is also supported, with some restrictions.
|
||||
|
||||
`repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB.
|
||||
|
||||
@@ -19,14 +19,6 @@ The full `repmgr` documentation is available here:
|
||||
|
||||
> [repmgr documentation](https://repmgr.org/docs/current/index.html)
|
||||
|
||||
The old `README` file for `repmgr` 3.x is available here:
|
||||
|
||||
> https://github.com/EnterpriseDB/repmgr/blob/REL3_3_STABLE/README.md
|
||||
|
||||
Note that the `repmgr` 3.x series is no longer supported and contains known bugs;
|
||||
please upgrade to the [current repmgr version](https://repmgr.org/docs/current/appendix-release-notes.html)
|
||||
as soon as possible.
|
||||
|
||||
Versions
|
||||
--------
|
||||
|
||||
|
||||
18
configure
vendored
18
configure
vendored
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for repmgr 5.3.0.
|
||||
# Generated by GNU Autoconf 2.69 for repmgr 5.4.0.
|
||||
#
|
||||
# Report bugs to <repmgr@googlegroups.com>.
|
||||
#
|
||||
@@ -582,8 +582,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='repmgr'
|
||||
PACKAGE_TARNAME='repmgr'
|
||||
PACKAGE_VERSION='5.3.0'
|
||||
PACKAGE_STRING='repmgr 5.3.0'
|
||||
PACKAGE_VERSION='5.4.0'
|
||||
PACKAGE_STRING='repmgr 5.4.0'
|
||||
PACKAGE_BUGREPORT='repmgr@googlegroups.com'
|
||||
PACKAGE_URL='https://repmgr.org/'
|
||||
|
||||
@@ -1181,7 +1181,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures repmgr 5.3.0 to adapt to many kinds of systems.
|
||||
\`configure' configures repmgr 5.4.0 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1242,7 +1242,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of repmgr 5.3.0:";;
|
||||
short | recursive ) echo "Configuration of repmgr 5.4.0:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1316,7 +1316,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
repmgr configure 5.3.0
|
||||
repmgr configure 5.4.0
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@@ -1335,7 +1335,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by repmgr $as_me 5.3.0, which was
|
||||
It was created by repmgr $as_me 5.4.0, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@@ -2487,7 +2487,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by repmgr $as_me 5.3.0, which was
|
||||
This file was extended by repmgr $as_me 5.4.0, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -2550,7 +2550,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
repmgr config.status 5.3.0
|
||||
repmgr config.status 5.4.0
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
AC_INIT([repmgr], [5.3.2], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
|
||||
AC_INIT([repmgr], [5.4.0], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
|
||||
|
||||
AC_COPYRIGHT([Copyright (c) 2010-2022, EnterpriseDB Corporation])
|
||||
AC_COPYRIGHT([Copyright (c) 2010-2021, EnterpriseDB Corporation])
|
||||
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
|
||||
@@ -2139,7 +2139,13 @@ server_in_exclusive_backup_mode(PGconn *conn)
|
||||
{
|
||||
BackupState backup_state = BACKUP_STATE_UNKNOWN;
|
||||
const char *sqlquery = "SELECT pg_catalog.pg_is_in_backup()";
|
||||
PGresult *res = PQexec(conn, sqlquery);
|
||||
PGresult *res = NULL;
|
||||
|
||||
/* Exclusive backup removed from PostgreSQL 15 */
|
||||
if (PQserverVersion(conn) >= 150000)
|
||||
return BACKUP_STATE_NO_BACKUP;
|
||||
|
||||
res = PQexec(conn, sqlquery);
|
||||
|
||||
if (PQresultStatus(res) != PGRES_TUPLES_OK)
|
||||
{
|
||||
|
||||
@@ -16,8 +16,38 @@
|
||||
</para>
|
||||
|
||||
<!-- remember to update the release date in ../repmgr_version.h.in -->
|
||||
<sect1 id="release-5.3.3">
|
||||
<title id="release-current">Release 5.3.3</title>
|
||||
<para><emphasis>Mon 17 October, 2022</emphasis></para>
|
||||
<para>
|
||||
&repmgr; 5.3.3 is a minor release providing support for
|
||||
<ulink url="https://www.postgresql.org/docs/15/release-15.html">PostgreSQL 15</ulink>
|
||||
and a &repmgrd; bug fix.
|
||||
</para>
|
||||
<para>
|
||||
If upgrading from an earlier &repmgr; version, any running &repmgrd; instances should be restarted.
|
||||
</para>
|
||||
<para>
|
||||
If upgrading from &repmgr; 5.2.1 or earlier, a PostgreSQL restart <emphasis>is</emphasis> required.
|
||||
</para>
|
||||
|
||||
<sect2>
|
||||
<title>Bug fixes</title>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
&repmgrd;: ensure <link linkend="event-notifications">event notification</link> script is called for event
|
||||
<literal>repmgrd_upstream_disconnect</literal>. GitHub #760.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="release-5.3.2">
|
||||
<title id="release-current">Release 5.3.2</title>
|
||||
<title>Release 5.3.2</title>
|
||||
<para><emphasis>Wed 25 May, 2022</emphasis></para>
|
||||
<para>
|
||||
&repmgr; 5.3.2 is a minor release.
|
||||
@@ -213,8 +243,7 @@
|
||||
risk of clashes with other shared libraries.
|
||||
</para>
|
||||
<para>
|
||||
This does not affect user-facing SQL functions. However an upgrade
|
||||
of the installed extension version is required.
|
||||
This does not affect user-facing SQL functions. Howe
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
|
||||
@@ -108,10 +108,31 @@
|
||||
<entry>
|
||||
Supported PostgreSQL versions
|
||||
</entry>
|
||||
<entry>
|
||||
Notes
|
||||
</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>
|
||||
&repmgr; 5.4
|
||||
</entry>
|
||||
<entry>
|
||||
(dev)
|
||||
</entry>
|
||||
<entry>
|
||||
<link linkend="release-current">&repmgrversion;</link> (&releasedate;)
|
||||
</entry>
|
||||
<entry>
|
||||
9.4, 9.5, 9.6, 10, 11, 12, 13, 15
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
&repmgr; 5.3
|
||||
@@ -123,7 +144,10 @@
|
||||
<link linkend="release-current">&repmgrversion;</link> (&releasedate;)
|
||||
</entry>
|
||||
<entry>
|
||||
9.4, 9.5, 9.6, 10, 11, 12, 13, 14
|
||||
9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15
|
||||
</entry>
|
||||
<entry>
|
||||
PostgreSQL 15 supported from &repmgr; 5.3.3
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
@@ -140,6 +164,9 @@
|
||||
<entry>
|
||||
9.4, 9.5, 9.6, 10, 11, 12, 13
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
@@ -155,6 +182,9 @@
|
||||
<entry>
|
||||
9.3, 9.4, 9.5, 9.6, 10, 11, 12
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
@@ -170,6 +200,9 @@
|
||||
<entry>
|
||||
9.3, 9.4, 9.5, 9.6, 10, 11, 12
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
|
||||
@@ -186,6 +219,9 @@
|
||||
<entry>
|
||||
9.3, 9.4, 9.5, 9.6, 10, 11
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
@@ -201,6 +237,9 @@
|
||||
<entry>
|
||||
9.3, 9.4, 9.5, 9.6
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
@@ -216,6 +255,9 @@
|
||||
<entry>
|
||||
9.0, 9.1, 9.2, 9.3, 9.4
|
||||
</entry>
|
||||
<entry>
|
||||
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
|
||||
|
||||
@@ -73,16 +73,16 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--force-rewind[=/path/to/pg_rewind]</option></term>
|
||||
<term><option>--force-rewind</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Execute <application>pg_rewind</application>.
|
||||
</para>
|
||||
<para>
|
||||
It is only necessary to provide the <application>pg_rewind</application> path
|
||||
if using PostgreSQL 9.4, and <application>pg_rewind</application>
|
||||
is not installed in the PostgreSQL <filename>bin</filename> directory.
|
||||
See <xref linkend="repmgr-node-rejoin-pg-rewind"/> for more details on using
|
||||
<application>pg_rewind</application>.
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@@ -261,8 +261,6 @@
|
||||
<para>
|
||||
<command>repmgr node rejoin</command> can optionally use <command>pg_rewind</command> to re-integrate a
|
||||
node which has diverged from the rest of the cluster, typically a failed primary.
|
||||
<command>pg_rewind</command> is available in PostgreSQL 9.5 and later as part of the core distribution,
|
||||
and can be installed from external sources for PostgreSQL 9.4.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
@@ -271,6 +269,10 @@
|
||||
data checksums were enabled when the cluster was initialized. See the
|
||||
<ulink url="https://www.postgresql.org/docs/current/app-pgrewind.html"><command>pg_rewind</command> documentation</ulink> for details.
|
||||
</para>
|
||||
<para>
|
||||
Additionally, <varname>full_page_writes</varname> must be enabled; this is the default and
|
||||
normally should never be disabled.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
@@ -382,6 +384,29 @@
|
||||
DETAIL: node 2 is now attached to node 3</programlisting>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="repmgr-node-rejoin-postgresql-94" xreflabel="pg_rewind and PostgreSQL 9.4">
|
||||
|
||||
<title><command>pg_rewind</command> and PostgreSQL 9.4</title>
|
||||
|
||||
<indexterm>
|
||||
<primary>pg_rewind</primary>
|
||||
<secondary>PostgreSQL 9.4</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
<application>pg_rewind</application> is available in PostgreSQL 9.5 and later as part of the core distribution.
|
||||
Users of PostgreSQL 9.4 will need to manually install it; the source code is available here:
|
||||
<ulink url="https://github.com/vmware/pg_rewind">https://github.com/vmware/pg_rewind</ulink>.
|
||||
If the <application>pg_rewind</application>
|
||||
binary is not installed in the PostgreSQL <filename>bin</filename> directory, provide
|
||||
its full path on the demotion candidate with <option>--force-rewind</option>.
|
||||
</para>
|
||||
<para>
|
||||
Note that building the 9.4 version of <application>pg_rewind</application> requires the PostgreSQL
|
||||
source code.
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="repmgr-node-rejoin-caveats" xreflabel="Caveats">
|
||||
@@ -426,7 +451,7 @@
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
In all current PostgreSQL versions (as of September 2020), <application>pg_rewind</application>
|
||||
In all PostgreSQL released before February 2021, <application>pg_rewind</application>
|
||||
contains a corner-case bug which affects standbys in a very specific situation.
|
||||
</para>
|
||||
<para>
|
||||
@@ -456,8 +481,7 @@
|
||||
<para>
|
||||
Currently it is not possible to resolve this situation using <application>pg_rewind</application>.
|
||||
A <ulink url="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2b4f3130382fe2f8705863e4d38589d4d69cd695">patch</ulink>
|
||||
has been successfully submitted and will be included the next PostgreSQL minor release round, scheduled for
|
||||
February 2021.
|
||||
was submitted and is included in all PostgreSQL versions released in February 2021 or later.
|
||||
</para>
|
||||
<para>
|
||||
As a workaround, start the primary server the standby was previously attached to,
|
||||
@@ -475,7 +499,7 @@
|
||||
<refsect1>
|
||||
<title>See also</title>
|
||||
<para>
|
||||
<xref linkend="repmgr-standby-follow"/>
|
||||
<xref linkend="repmgr-standby-follow"/>, <xref linkend="repmgr-standby-switchover"/>
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
@@ -154,9 +154,12 @@
|
||||
<para>
|
||||
Use <application>pg_rewind</application> to reintegrate the old primary if necessary
|
||||
(and the prerequisites for using <application>pg_rewind</application> are met).
|
||||
</para>
|
||||
<para>
|
||||
If using PostgreSQL 9.4, and the <application>pg_rewind</application>
|
||||
binary is not installed in the PostgreSQL <filename>bin</filename> directory,
|
||||
provide its full path. For more details see also <xref linkend="switchover-pg-rewind"/>.
|
||||
provide its full path. For more details see also <xref linkend="switchover-pg-rewind"/>
|
||||
and <xref linkend="repmgr-node-rejoin-pg-rewind"/>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<abstract>
|
||||
<para>
|
||||
This is the official documentation of &repmgr; &repmgrversion; for
|
||||
use with PostgreSQL 9.4 - PostgreSQL 14.
|
||||
use with PostgreSQL 9.4 - PostgreSQL 15.
|
||||
</para>
|
||||
<para>
|
||||
&repmgr; is being continually developed and we strongly recommend using the
|
||||
|
||||
@@ -345,14 +345,18 @@
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
Indicates a preferred priority (default: <literal>100</literal>) for promoting nodes;
|
||||
a value of zero prevents the node being promoted to primary.
|
||||
Indicates a preferred priority (default: <literal>100</literal>) for promoting nodes.
|
||||
</para>
|
||||
<para>
|
||||
Note that the priority setting is only applied if two or more nodes are
|
||||
determined as promotion candidates; in that case the node with the
|
||||
higher priority is selected.
|
||||
</para>
|
||||
<para>
|
||||
A value of zero will always prevent the node being promoted to primary, even if there
|
||||
is no other promotion candidate.
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
@@ -242,21 +242,12 @@
|
||||
</simpara>
|
||||
</note>
|
||||
<para>
|
||||
For more details on <application>pg_rewind</application>, see:
|
||||
For more details on <application>pg_rewind</application>, see section <xref linkend="repmgr-node-rejoin-pg-rewind"/>
|
||||
in the <link linkend="repmgr-node-rejoin"><command>repmgr node rejoin</command></link> documentation and
|
||||
the PostgreSQL documentation at
|
||||
<ulink url="https://www.postgresql.org/docs/current/app-pgrewind.html">https://www.postgresql.org/docs/current/app-pgrewind.html</ulink>.
|
||||
</para>
|
||||
<para>
|
||||
<application>pg_rewind</application> has been part of the core PostgreSQL distribution since
|
||||
version 9.5. Users of PostgreSQL 9.4 will need to manually install it; the source code is available here:
|
||||
<ulink url="https://github.com/vmware/pg_rewind">https://github.com/vmware/pg_rewind</ulink>.
|
||||
If the <application>pg_rewind</application>
|
||||
binary is not installed in the PostgreSQL <filename>bin</filename> directory, provide
|
||||
its full path on the demotion candidate with <option>--force-rewind</option>.
|
||||
</para>
|
||||
<para>
|
||||
Note that building the 9.4 version of <application>pg_rewind</application> requires the PostgreSQL
|
||||
source code.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
|
||||
@@ -71,6 +71,12 @@
|
||||
<secondary>minor release</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>
|
||||
A minor release upgrade involves updating &repmgr; from one minor release to another
|
||||
minor release within the same major release (e.g. <literal>5.3.1</literal> to <literal>5.3.2</literal>).
|
||||
An upgrade between minor releases of differing major releases (e.g. <literal>5.2.1</literal> to <literal>5.3.2</literal>)
|
||||
is a <link linkend="upgrading-major-version">major upgrade</link>.
|
||||
</para>
|
||||
<para>
|
||||
The process for installing minor version upgrades is quite straightforward:
|
||||
|
||||
@@ -105,15 +111,17 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A PostgreSQL restart is <emphasis>not</emphasis> required for minor version upgrades.
|
||||
A PostgreSQL restart is usually <emphasis>not</emphasis> required for minor version upgrades
|
||||
within the same major version (e.g. <literal>5.3.1</literal> to <literal>5.3.2</literal>).
|
||||
Be sure to check the <link linkend="appendix-release-notes">release notes</link>.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
The same &repmgr; "major version" (e.g. <literal>4.2</literal>) must be
|
||||
installed on all nodes in the replication cluster. While it's possible to have differing
|
||||
&repmgr; "minor versions" (e.g. <literal>4.2.1</literal>) on different nodes,
|
||||
we strongly recommend updating all nodes to the latest minor version.
|
||||
The same &repmgr; "major version" (e.g. <literal>5.3</literal>) must be
|
||||
installed on all nodes in the replication cluster. While it's possible to have differing
|
||||
&repmgr; "minor versions" (e.g. <literal>5.3.1</literal> and <literal>5.3.2</literal>)
|
||||
on different nodes, we strongly recommend updating all nodes to the latest minor version.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
|
||||
2
repmgr--5.3--5.4.sql
Normal file
2
repmgr--5.3--5.4.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- complain if script is sourced in psql, rather than via CREAT EXTENSION
|
||||
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit
|
||||
192
repmgr--5.4.sql
Normal file
192
repmgr--5.4.sql
Normal file
@@ -0,0 +1,192 @@
|
||||
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit
|
||||
|
||||
CREATE TABLE repmgr.nodes (
|
||||
node_id INTEGER PRIMARY KEY,
|
||||
upstream_node_id INTEGER NULL REFERENCES nodes (node_id) DEFERRABLE,
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
node_name TEXT NOT NULL,
|
||||
type TEXT NOT NULL CHECK (type IN('primary','standby','witness','bdr')),
|
||||
location TEXT NOT NULL DEFAULT 'default',
|
||||
priority INT NOT NULL DEFAULT 100,
|
||||
conninfo TEXT NOT NULL,
|
||||
repluser VARCHAR(63) NOT NULL,
|
||||
slot_name TEXT NULL,
|
||||
config_file TEXT NOT NULL
|
||||
);
|
||||
|
||||
SELECT pg_catalog.pg_extension_config_dump('repmgr.nodes', '');
|
||||
|
||||
CREATE TABLE repmgr.events (
|
||||
node_id INTEGER NOT NULL,
|
||||
event TEXT NOT NULL,
|
||||
successful BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
event_timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
details TEXT NULL
|
||||
);
|
||||
|
||||
SELECT pg_catalog.pg_extension_config_dump('repmgr.events', '');
|
||||
|
||||
CREATE TABLE repmgr.monitoring_history (
|
||||
primary_node_id INTEGER NOT NULL,
|
||||
standby_node_id INTEGER NOT NULL,
|
||||
last_monitor_time TIMESTAMP WITH TIME ZONE NOT NULL,
|
||||
last_apply_time TIMESTAMP WITH TIME ZONE,
|
||||
last_wal_primary_location PG_LSN NOT NULL,
|
||||
last_wal_standby_location PG_LSN,
|
||||
replication_lag BIGINT NOT NULL,
|
||||
apply_lag BIGINT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_monitoring_history_time
|
||||
ON repmgr.monitoring_history (last_monitor_time, standby_node_id);
|
||||
|
||||
SELECT pg_catalog.pg_extension_config_dump('repmgr.monitoring_history', '');
|
||||
|
||||
CREATE VIEW repmgr.show_nodes AS
|
||||
SELECT n.node_id,
|
||||
n.node_name,
|
||||
n.active,
|
||||
n.upstream_node_id,
|
||||
un.node_name AS upstream_node_name,
|
||||
n.type,
|
||||
n.priority,
|
||||
n.conninfo
|
||||
FROM repmgr.nodes n
|
||||
LEFT JOIN repmgr.nodes un
|
||||
ON un.node_id = n.upstream_node_id;
|
||||
|
||||
CREATE TABLE repmgr.voting_term (
|
||||
term INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX voting_term_restrict
|
||||
ON repmgr.voting_term ((TRUE));
|
||||
|
||||
CREATE RULE voting_term_delete AS
|
||||
ON DELETE TO repmgr.voting_term
|
||||
DO INSTEAD NOTHING;
|
||||
|
||||
|
||||
/* ================= */
|
||||
/* repmgrd functions */
|
||||
/* ================= */
|
||||
|
||||
/* monitoring functions */
|
||||
|
||||
CREATE FUNCTION set_local_node_id(INT)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgr_set_local_node_id'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_local_node_id()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'repmgr_get_local_node_id'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION standby_set_last_updated()
|
||||
RETURNS TIMESTAMP WITH TIME ZONE
|
||||
AS 'MODULE_PATHNAME', 'repmgr_standby_set_last_updated'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION standby_get_last_updated()
|
||||
RETURNS TIMESTAMP WITH TIME ZONE
|
||||
AS 'MODULE_PATHNAME', 'repmgr_standby_get_last_updated'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION set_upstream_last_seen(INT)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgr_set_upstream_last_seen'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_upstream_last_seen()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'repmgr_get_upstream_last_seen'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_upstream_node_id()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'repmgr_get_upstream_node_id'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION set_upstream_node_id(INT)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgr_set_upstream_node_id'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
/* failover functions */
|
||||
|
||||
CREATE FUNCTION notify_follow_primary(INT)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgr_notify_follow_primary'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_new_primary()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'repmgr_get_new_primary'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION reset_voting_status()
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgr_reset_voting_status'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_repmgrd_pid()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'get_repmgrd_pid'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_repmgrd_pidfile()
|
||||
RETURNS TEXT
|
||||
AS 'MODULE_PATHNAME', 'get_repmgrd_pidfile'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION set_repmgrd_pid(INT, TEXT)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'set_repmgrd_pid'
|
||||
LANGUAGE C CALLED ON NULL INPUT;
|
||||
|
||||
CREATE FUNCTION repmgrd_is_running()
|
||||
RETURNS BOOL
|
||||
AS 'MODULE_PATHNAME', 'repmgrd_is_running'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION repmgrd_pause(BOOL)
|
||||
RETURNS VOID
|
||||
AS 'MODULE_PATHNAME', 'repmgrd_pause'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION repmgrd_is_paused()
|
||||
RETURNS BOOL
|
||||
AS 'MODULE_PATHNAME', 'repmgrd_is_paused'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
CREATE FUNCTION get_wal_receiver_pid()
|
||||
RETURNS INT
|
||||
AS 'MODULE_PATHNAME', 'repmgr_get_wal_receiver_pid'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
|
||||
|
||||
|
||||
/* views */
|
||||
|
||||
CREATE VIEW repmgr.replication_status AS
|
||||
SELECT m.primary_node_id, m.standby_node_id, n.node_name AS standby_name,
|
||||
n.type AS node_type, n.active, last_monitor_time,
|
||||
CASE WHEN n.type='standby' THEN m.last_wal_primary_location ELSE NULL END AS last_wal_primary_location,
|
||||
m.last_wal_standby_location,
|
||||
CASE WHEN n.type='standby' THEN pg_catalog.pg_size_pretty(m.replication_lag) ELSE NULL END AS replication_lag,
|
||||
CASE WHEN n.type='standby' THEN
|
||||
CASE WHEN replication_lag > 0 THEN age(now(), m.last_apply_time) ELSE '0'::INTERVAL END
|
||||
ELSE NULL
|
||||
END AS replication_time_lag,
|
||||
CASE WHEN n.type='standby' THEN pg_catalog.pg_size_pretty(m.apply_lag) ELSE NULL END AS apply_lag,
|
||||
AGE(NOW(), CASE WHEN pg_catalog.pg_is_in_recovery() THEN repmgr.standby_get_last_updated() ELSE m.last_monitor_time END) AS communication_time_lag
|
||||
FROM repmgr.monitoring_history m
|
||||
JOIN repmgr.nodes n ON m.standby_node_id = n.node_id
|
||||
WHERE (m.standby_node_id, m.last_monitor_time) IN (
|
||||
SELECT m1.standby_node_id, MAX(m1.last_monitor_time)
|
||||
FROM repmgr.monitoring_history m1 GROUP BY 1
|
||||
);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,77 @@
|
||||
#ifndef _REPMGR_ACTION_STANDBY_H_
|
||||
#define _REPMGR_ACTION_STANDBY_H_
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int reachable_sibling_node_count;
|
||||
int reachable_sibling_nodes_with_slot_count;
|
||||
int unreachable_sibling_node_count;
|
||||
int min_required_wal_senders;
|
||||
int min_required_free_slots;
|
||||
} SiblingNodeStats;
|
||||
|
||||
#define T_SIBLING_NODES_STATS_INITIALIZER { \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
0, \
|
||||
0 \
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
RepmgrdInfo **repmgrd_info;
|
||||
int repmgrd_running_count;
|
||||
|
||||
bool dry_run_success;
|
||||
|
||||
/* store list of configuration files on the demotion candidate */
|
||||
KeyValueList remote_config_files;
|
||||
|
||||
/* used for handling repmgrd pause/unpause */
|
||||
NodeInfoList all_nodes;
|
||||
|
||||
NodeInfoList sibling_nodes;
|
||||
SiblingNodeStats sibling_nodes_stats;
|
||||
|
||||
t_event_info event_info;
|
||||
int remote_node_id;
|
||||
t_node_info remote_node_record;
|
||||
t_node_info local_node_record;
|
||||
char remote_conninfo[MAXCONNINFO];
|
||||
bool switchover_success;
|
||||
RecoveryType recovery_type;
|
||||
PGconn *superuser_conn;
|
||||
|
||||
/* the remote server is the primary to be demoted */
|
||||
char remote_host[MAXLEN];
|
||||
int remote_repmgr_version;
|
||||
PGconn *remote_conn;
|
||||
PGconn *local_conn;
|
||||
} t_standby_switchover_rec;
|
||||
|
||||
#define T_STANDBY_SWITCHOVER_INITIALIZER { \
|
||||
NULL, \
|
||||
true, \
|
||||
{NULL, NULL}, \
|
||||
T_NODE_INFO_LIST_INITIALIZER, \
|
||||
T_NODE_INFO_LIST_INITIALIZER, \
|
||||
T_SIBLING_NODES_STATS_INITIALIZER, \
|
||||
T_EVENT_INFO_INITIALIZER, \
|
||||
UNKNOWN_NODE_ID, \
|
||||
T_NODE_INFO_INITIALIZER, \
|
||||
T_NODE_INFO_INITIALIZER, \
|
||||
"", \
|
||||
true, \
|
||||
RECTYPE_UNKNOWN, \
|
||||
NULL, \
|
||||
"", \
|
||||
UNKNOWN_REPMGR_VERSION_NUM, \
|
||||
NULL, \
|
||||
NULL \
|
||||
}
|
||||
|
||||
extern void do_standby_clone(void);
|
||||
extern void do_standby_register(void);
|
||||
extern void do_standby_unregister(void);
|
||||
|
||||
@@ -3192,6 +3192,11 @@ copy_remote_files(char *host, char *remote_user, char *remote_path,
|
||||
" --exclude=pg_xlog/* --exclude=pg_log/*");
|
||||
}
|
||||
|
||||
/*
|
||||
* From PostgreSQL 15, the core server no longer uses pg_stat_tmp,
|
||||
* but some extensions (e.g. pg_stat_statements) may still do, so
|
||||
* keep excluding it.
|
||||
*/
|
||||
appendPQExpBufferStr(&rsync_flags,
|
||||
" --exclude=pg_stat_tmp/*");
|
||||
|
||||
@@ -3629,8 +3634,8 @@ can_use_pg_rewind(PGconn *conn, const char *data_directory, PQExpBufferData *rea
|
||||
/* "full_page_writes" must be on in any case */
|
||||
if (guc_set(conn, "full_page_writes", "=", "off"))
|
||||
{
|
||||
appendPQExpBuffer(reason,
|
||||
_("\"full_page_writes\" must be set to \"on\""));
|
||||
appendPQExpBufferStr(reason,
|
||||
_("\"full_page_writes\" must be set to \"on\""));
|
||||
|
||||
can_use = false;
|
||||
}
|
||||
@@ -3648,18 +3653,18 @@ can_use_pg_rewind(PGconn *conn, const char *data_directory, PQExpBufferData *rea
|
||||
if (data_checksum_version == UNKNOWN_DATA_CHECKSUM_VERSION)
|
||||
{
|
||||
if (can_use == false)
|
||||
appendPQExpBuffer(reason, "; ");
|
||||
appendPQExpBufferStr(reason, "; ");
|
||||
|
||||
appendPQExpBuffer(reason,
|
||||
_("\"wal_log_hints\" is set to \"off\" but unable to determine data checksum version"));
|
||||
appendPQExpBufferStr(reason,
|
||||
_("\"wal_log_hints\" is set to \"off\" but unable to determine data checksum version"));
|
||||
can_use = false;
|
||||
}
|
||||
else if (data_checksum_version == 0)
|
||||
{
|
||||
if (can_use == false)
|
||||
appendPQExpBuffer(reason, "; ");
|
||||
appendPQExpBufferStr(reason, "; ");
|
||||
|
||||
appendPQExpBuffer(reason,
|
||||
appendPQExpBufferStr(reason,
|
||||
_("\"wal_log_hints\" is set to \"off\" and data checksums are disabled"));
|
||||
|
||||
can_use = false;
|
||||
|
||||
32
repmgr.c
32
repmgr.c
@@ -80,11 +80,16 @@ typedef struct repmgrdSharedState
|
||||
|
||||
static repmgrdSharedState *shared_state = NULL;
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
static shmem_request_hook_type prev_shmem_request_hook = NULL;
|
||||
#endif
|
||||
static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
|
||||
|
||||
|
||||
void _PG_init(void);
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
static void repmgr_shmem_request(void);
|
||||
#endif
|
||||
static void repmgr_shmem_startup(void);
|
||||
|
||||
PG_FUNCTION_INFO_V1(repmgr_set_local_node_id);
|
||||
@@ -116,24 +121,47 @@ _PG_init(void)
|
||||
if (!process_shared_preload_libraries_in_progress)
|
||||
return;
|
||||
|
||||
#if (PG_VERSION_NUM < 150000)
|
||||
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||
|
||||
#if (PG_VERSION_NUM >= 90600)
|
||||
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||
#else
|
||||
RequestAddinLWLocks(1);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Install hooks.
|
||||
*/
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
prev_shmem_request_hook = shmem_request_hook;
|
||||
shmem_request_hook = repmgr_shmem_request;
|
||||
#endif
|
||||
|
||||
prev_shmem_startup_hook = shmem_startup_hook;
|
||||
shmem_startup_hook = repmgr_shmem_startup;
|
||||
|
||||
}
|
||||
|
||||
#if (PG_VERSION_NUM >= 150000)
|
||||
/*
|
||||
* shmem_requst_hook: request shared memory
|
||||
*/
|
||||
static void
|
||||
repmgr_shmem_request(void)
|
||||
{
|
||||
if (prev_shmem_request_hook)
|
||||
prev_shmem_request_hook();
|
||||
|
||||
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||
|
||||
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* shmem_startup hook: allocate or attach to shared memory,
|
||||
* shmem_startup hook: allocate or attach to shared memory
|
||||
*/
|
||||
static void
|
||||
repmgr_shmem_startup(void)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# repmgr extension
|
||||
comment = 'Replication manager for PostgreSQL'
|
||||
default_version = '5.3'
|
||||
default_version = '5.4'
|
||||
module_pathname = '$libdir/repmgr'
|
||||
relocatable = false
|
||||
schema = repmgr
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define REPMGR_VERSION_DATE ""
|
||||
#define REPMGR_VERSION "5.3.2"
|
||||
#define REPMGR_VERSION_NUM 50302
|
||||
#define REPMGR_EXTENSION_VERSION "5.3"
|
||||
#define REPMGR_EXTENSION_NUM 50300
|
||||
#define REPMGR_RELEASE_DATE "2022-05-25"
|
||||
#define REPMGR_VERSION "5.4dev"
|
||||
#define REPMGR_VERSION_NUM 50400
|
||||
#define REPMGR_EXTENSION_VERSION "5.4"
|
||||
#define REPMGR_EXTENSION_NUM 50400
|
||||
#define REPMGR_RELEASE_DATE "2022-XX-XX"
|
||||
#define PG_ACTUAL_VERSION_NUM
|
||||
|
||||
@@ -1587,22 +1587,22 @@ monitor_streaming_standby(void)
|
||||
/* TODO: possibly add pre-action event here */
|
||||
if (upstream_node_info.type == STANDBY)
|
||||
{
|
||||
create_event_record(primary_conn,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
create_event_notification(primary_conn,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* primary connection lost - script notification only */
|
||||
create_event_record(NULL,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
create_event_notification(NULL,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
}
|
||||
|
||||
log_warning("%s", event_details.data);
|
||||
@@ -2482,12 +2482,12 @@ monitor_streaming_witness(void)
|
||||
_("unable to connect to primary node \"%s\" (ID: %i)"),
|
||||
upstream_node_info.node_name, upstream_node_info.node_id);
|
||||
|
||||
create_event_record(NULL,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
create_event_notification(NULL,
|
||||
&config_file_options,
|
||||
config_file_options.node_id,
|
||||
"repmgrd_upstream_disconnect",
|
||||
true,
|
||||
event_details.data);
|
||||
termPQExpBuffer(&event_details);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user