mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-23 23:26:30 +00:00
Compare commits
77 Commits
dev/gianni
...
REL5_3_STA
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
739bbe9a54 | ||
|
|
ba0b8a1692 | ||
|
|
f002ceeae6 | ||
|
|
64228c5a74 | ||
|
|
9264680bdc | ||
|
|
99c3b42921 | ||
|
|
3c0d643466 | ||
|
|
6149e4c7b0 | ||
|
|
5e75707d4e | ||
|
|
8e5698f16e | ||
|
|
3d08800521 | ||
|
|
e64184aff3 | ||
|
|
8c031e2b05 | ||
|
|
3a157465ce | ||
|
|
70da9e8a53 | ||
|
|
6602a98f2e | ||
|
|
b6ba0c3d45 | ||
|
|
e4d6e2cd11 | ||
|
|
a28b6641b8 | ||
|
|
78d2acf204 | ||
|
|
b3d52c4332 | ||
|
|
72ae977d0d | ||
|
|
599351eea8 | ||
|
|
fca2b3ade7 | ||
|
|
89ba005726 | ||
|
|
5ddf450919 | ||
|
|
20342bb8ee | ||
|
|
ea36c5dde3 | ||
|
|
fc72e0bf93 | ||
|
|
b10e9b89dd | ||
|
|
a7d87d5992 | ||
|
|
015c0c8458 | ||
|
|
474d85d647 | ||
|
|
207057a159 | ||
|
|
65d796ee3e | ||
|
|
0fb4c0930a | ||
|
|
cee3b8446a | ||
|
|
90a700c7c0 | ||
|
|
cc4475b8e2 | ||
|
|
9f1c9ef829 | ||
|
|
2a05f495f6 | ||
|
|
d342acfefe | ||
|
|
2f27fec510 | ||
|
|
a80ee17b6c | ||
|
|
595494f8a1 | ||
|
|
3ca4c273fa | ||
|
|
41f0688f69 | ||
|
|
78be15b06c | ||
|
|
f02be50118 | ||
|
|
ac62101dc0 | ||
|
|
78cc278639 | ||
|
|
ceb65027c6 | ||
|
|
e6caa14ea2 | ||
|
|
88a11f36ca | ||
|
|
7f371b11a5 | ||
|
|
349eacd4b7 | ||
|
|
9f2afe9643 | ||
|
|
356f65531f | ||
|
|
2a7579c770 | ||
|
|
820d972d41 | ||
|
|
d0add49c84 | ||
|
|
9a84fa84f9 | ||
|
|
ff2c56f5cb | ||
|
|
3b860bad80 | ||
|
|
70c79aeaec | ||
|
|
afd876377c | ||
|
|
277910cb31 | ||
|
|
9554154677 | ||
|
|
2bbfb5daa0 | ||
|
|
82b0e85a66 | ||
|
|
3320eb0983 | ||
|
|
7862941300 | ||
|
|
f152fc3016 | ||
|
|
9c260e605d | ||
|
|
7ad06530e4 | ||
|
|
c787273f91 | ||
|
|
d40055c8dd |
37
.github/workflows/sonarqube-scan.yml
vendored
37
.github/workflows/sonarqube-scan.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
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
18
.github/workflows/sonarqube/configure-env.sh
vendored
@@ -1,18 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -30,9 +30,7 @@ DATA = \
|
|||||||
repmgr--5.1--5.2.sql \
|
repmgr--5.1--5.2.sql \
|
||||||
repmgr--5.2.sql \
|
repmgr--5.2.sql \
|
||||||
repmgr--5.2--5.3.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
|
REGRESS = repmgr_extension
|
||||||
|
|
||||||
|
|||||||
22
configure
vendored
22
configure
vendored
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for repmgr 5.4.0.
|
# Generated by GNU Autoconf 2.69 for repmgr 5.3.3.
|
||||||
#
|
#
|
||||||
# Report bugs to <repmgr@googlegroups.com>.
|
# Report bugs to <repmgr@googlegroups.com>.
|
||||||
#
|
#
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# This configure script is free software; the Free Software Foundation
|
# This configure script is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy, distribute and modify it.
|
# gives unlimited permission to copy, distribute and modify it.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010-2021, EnterpriseDB Corporation
|
# Copyright (c) 2010-2022, EnterpriseDB Corporation
|
||||||
## -------------------- ##
|
## -------------------- ##
|
||||||
## M4sh Initialization. ##
|
## M4sh Initialization. ##
|
||||||
## -------------------- ##
|
## -------------------- ##
|
||||||
@@ -582,8 +582,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='repmgr'
|
PACKAGE_NAME='repmgr'
|
||||||
PACKAGE_TARNAME='repmgr'
|
PACKAGE_TARNAME='repmgr'
|
||||||
PACKAGE_VERSION='5.4.0'
|
PACKAGE_VERSION='5.3.3'
|
||||||
PACKAGE_STRING='repmgr 5.4.0'
|
PACKAGE_STRING='repmgr 5.3.3'
|
||||||
PACKAGE_BUGREPORT='repmgr@googlegroups.com'
|
PACKAGE_BUGREPORT='repmgr@googlegroups.com'
|
||||||
PACKAGE_URL='https://repmgr.org/'
|
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.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures repmgr 5.4.0 to adapt to many kinds of systems.
|
\`configure' configures repmgr 5.3.3 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@@ -1242,7 +1242,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of repmgr 5.4.0:";;
|
short | recursive ) echo "Configuration of repmgr 5.3.3:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@@ -1316,14 +1316,14 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
repmgr configure 5.4.0
|
repmgr configure 5.3.3
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
This configure script is free software; the Free Software Foundation
|
This configure script is free software; the Free Software Foundation
|
||||||
gives unlimited permission to copy, distribute and modify it.
|
gives unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
Copyright (c) 2010-2021, EnterpriseDB Corporation
|
Copyright (c) 2010-2022, EnterpriseDB Corporation
|
||||||
_ACEOF
|
_ACEOF
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -1335,7 +1335,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by repmgr $as_me 5.4.0, which was
|
It was created by repmgr $as_me 5.3.3, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@@ -2487,7 +2487,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by repmgr $as_me 5.4.0, which was
|
This file was extended by repmgr $as_me 5.3.3, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@@ -2550,7 +2550,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
repmgr config.status 5.4.0
|
repmgr config.status 5.3.3
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
AC_INIT([repmgr], [5.4.0], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
|
AC_INIT([repmgr], [5.3.3], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
|
||||||
|
|
||||||
AC_COPYRIGHT([Copyright (c) 2010-2021, EnterpriseDB Corporation])
|
AC_COPYRIGHT([Copyright (c) 2010-2022, EnterpriseDB Corporation])
|
||||||
|
|
||||||
AC_CONFIG_HEADER(config.h)
|
AC_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
|
|||||||
@@ -243,7 +243,8 @@
|
|||||||
risk of clashes with other shared libraries.
|
risk of clashes with other shared libraries.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
This does not affect user-facing SQL functions. Howe
|
This does not affect user-facing SQL functions. However an upgrade
|
||||||
|
of the installed extension version is required.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
|||||||
@@ -115,24 +115,6 @@
|
|||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<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>
|
<row>
|
||||||
<entry>
|
<entry>
|
||||||
&repmgr; 5.3
|
&repmgr; 5.3
|
||||||
|
|||||||
@@ -73,16 +73,16 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--force-rewind</option></term>
|
<term><option>--force-rewind[=/path/to/pg_rewind]</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Execute <application>pg_rewind</application>.
|
Execute <application>pg_rewind</application>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
See <xref linkend="repmgr-node-rejoin-pg-rewind"/> for more details on using
|
It is only necessary to provide the <application>pg_rewind</application> path
|
||||||
<application>pg_rewind</application>.
|
if using PostgreSQL 9.4, and <application>pg_rewind</application>
|
||||||
|
is not installed in the PostgreSQL <filename>bin</filename> directory.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@@ -261,6 +261,8 @@
|
|||||||
<para>
|
<para>
|
||||||
<command>repmgr node rejoin</command> can optionally use <command>pg_rewind</command> to re-integrate a
|
<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.
|
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>
|
</para>
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
@@ -384,29 +386,6 @@
|
|||||||
DETAIL: node 2 is now attached to node 3</programlisting>
|
DETAIL: node 2 is now attached to node 3</programlisting>
|
||||||
</para>
|
</para>
|
||||||
</refsect2>
|
</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>
|
||||||
|
|
||||||
<refsect1 id="repmgr-node-rejoin-caveats" xreflabel="Caveats">
|
<refsect1 id="repmgr-node-rejoin-caveats" xreflabel="Caveats">
|
||||||
@@ -499,7 +478,7 @@
|
|||||||
<refsect1>
|
<refsect1>
|
||||||
<title>See also</title>
|
<title>See also</title>
|
||||||
<para>
|
<para>
|
||||||
<xref linkend="repmgr-standby-follow"/>, <xref linkend="repmgr-standby-switchover"/>
|
<xref linkend="repmgr-standby-follow"/>
|
||||||
</para>
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
</refentry>
|
</refentry>
|
||||||
|
|||||||
@@ -154,12 +154,9 @@
|
|||||||
<para>
|
<para>
|
||||||
Use <application>pg_rewind</application> to reintegrate the old primary if necessary
|
Use <application>pg_rewind</application> to reintegrate the old primary if necessary
|
||||||
(and the prerequisites for using <application>pg_rewind</application> are met).
|
(and the prerequisites for using <application>pg_rewind</application> are met).
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
If using PostgreSQL 9.4, and the <application>pg_rewind</application>
|
If using PostgreSQL 9.4, and the <application>pg_rewind</application>
|
||||||
binary is not installed in the PostgreSQL <filename>bin</filename> directory,
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|||||||
@@ -242,12 +242,21 @@
|
|||||||
</simpara>
|
</simpara>
|
||||||
</note>
|
</note>
|
||||||
<para>
|
<para>
|
||||||
For more details on <application>pg_rewind</application>, see section <xref linkend="repmgr-node-rejoin-pg-rewind"/>
|
For more details on <application>pg_rewind</application>, see:
|
||||||
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>.
|
<ulink url="https://www.postgresql.org/docs/current/app-pgrewind.html">https://www.postgresql.org/docs/current/app-pgrewind.html</ulink>.
|
||||||
</para>
|
</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>
|
</sect2>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
-- 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
192
repmgr--5.4.sql
@@ -1,192 +0,0 @@
|
|||||||
-- 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,77 +19,6 @@
|
|||||||
#ifndef _REPMGR_ACTION_STANDBY_H_
|
#ifndef _REPMGR_ACTION_STANDBY_H_
|
||||||
#define _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_clone(void);
|
||||||
extern void do_standby_register(void);
|
extern void do_standby_register(void);
|
||||||
extern void do_standby_unregister(void);
|
extern void do_standby_unregister(void);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# repmgr extension
|
# repmgr extension
|
||||||
comment = 'Replication manager for PostgreSQL'
|
comment = 'Replication manager for PostgreSQL'
|
||||||
default_version = '5.4'
|
default_version = '5.3'
|
||||||
module_pathname = '$libdir/repmgr'
|
module_pathname = '$libdir/repmgr'
|
||||||
relocatable = false
|
relocatable = false
|
||||||
schema = repmgr
|
schema = repmgr
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#define REPMGR_VERSION_DATE ""
|
#define REPMGR_VERSION_DATE ""
|
||||||
#define REPMGR_VERSION "5.4dev"
|
#define REPMGR_VERSION "5.3.3"
|
||||||
#define REPMGR_VERSION_NUM 50400
|
#define REPMGR_VERSION_NUM 50303
|
||||||
#define REPMGR_EXTENSION_VERSION "5.4"
|
#define REPMGR_EXTENSION_VERSION "5.3"
|
||||||
#define REPMGR_EXTENSION_NUM 50400
|
#define REPMGR_EXTENSION_NUM 50300
|
||||||
#define REPMGR_RELEASE_DATE "2022-XX-XX"
|
#define REPMGR_RELEASE_DATE "2022-10-17"
|
||||||
#define PG_ACTUAL_VERSION_NUM
|
#define PG_ACTUAL_VERSION_NUM
|
||||||
|
|||||||
Reference in New Issue
Block a user