kopia lustrzana https://github.com/kartoza/docker-postgis
rodzic
74bb497307
commit
c816d5e72e
|
@ -730,7 +730,7 @@ Slave settings:
|
|||
- **DESTROY_DATABASE_ON_RESTART**: Default is `True`. Set to 'False' to prevent this behavior. A
|
||||
replicant will always destroy its current database on restart, because it will try to sync again
|
||||
from `master` and avoid inconsistencies.
|
||||
- **PROMOTE_MASTER**: Default none. If set to any value then the current replicant
|
||||
- **PROMOTE_MASTER**: Default false. If set to `true` then the current replicant
|
||||
will be promoted to master. In some cases when the `master` container has failed, we might want
|
||||
to use our `replicant` as `master` for a while. However, the promoted replicant will break
|
||||
consistencies and is not able to revert to replicant anymore, unless it is destroyed and
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Commit and redeploy the user map container
|
||||
#
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Commit and then redeploy the user_map container."
|
||||
echo "Usage:"
|
||||
echo "$0 <version>"
|
||||
echo "e.g.:"
|
||||
echo "$0 1.6"
|
||||
echo "Will commit the current state of the container as version 1.6"
|
||||
echo "and then redeploy it."
|
||||
exit 1
|
||||
fi
|
||||
VERSION=$1
|
||||
HOST_DATA_DIR=/var/docker-data/postgres-data
|
||||
PGUSER=qgis
|
||||
PGPASS=qgis
|
||||
|
||||
IDFILE=/home/timlinux/postgis-current-container.id
|
||||
ID=`cat $IDFILE`
|
||||
docker commit $ID qgis/postgis:$VERSION -run='{"Cmd": ["/start.sh"], "PortSpecs": ["5432"], "Hostname": "postgis"}' -author="Tim Sutton <tim@linfiniti.com>"
|
||||
docker kill $ID
|
||||
docker rm $ID
|
||||
rm $IDFILE
|
||||
if [ ! -d $HOST_DATA_DIR ]
|
||||
then
|
||||
mkdir $HOST_DATA_DIR
|
||||
fi
|
||||
CMD="docker run -cidfile="$IDFILE" -name="postgis" -e POSTGRES_USER=$PGUSER -e POSTGRES_PASS=$PGPASS -d -v $HOST_DATA_DIR:/var/lib/postgresql -t qgis/postgis:$VERSION /start.sh"
|
||||
echo 'Running:'
|
||||
echo $CMD
|
||||
eval $CMD
|
||||
NEWID=`cat $IDFILE`
|
||||
echo "Postgis has been committed as $1 and redeployed as $NEWID"
|
||||
docker ps -a | grep $NEWID
|
||||
echo "If thhere was no pre-existing database, you can access this using"
|
||||
IPADDRESS=`docker inspect postgis | grep IPAddress | grep -o '[0-9\.]*'`
|
||||
echo "psql -l -p 5432 -h $IPADDRESS -U $PGUSER"
|
||||
echo "and password $PGPASS"
|
|
@ -1 +0,0 @@
|
|||
docker-compose==1.28
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-data-dir:
|
||||
|
@ -11,8 +11,6 @@ services:
|
|||
pg:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
# You can optionally mount to volume, to play with the persistence and
|
||||
# observe how the node will behave after restarts.
|
||||
volumes:
|
||||
- pg-data-dir:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
|
@ -35,8 +33,6 @@ services:
|
|||
pg-new:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
# You can optionally mount to volume, to play with the persistence and
|
||||
# observe how the node will behave after restarts.
|
||||
volumes:
|
||||
- new-pg-data-dir:/opt/data/postgis
|
||||
- ./tests:/tests
|
||||
|
@ -62,8 +58,6 @@ services:
|
|||
pg-gosu:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
# You can optionally mount to volume, to play with the persistence and
|
||||
# observe how the node will behave after restarts.
|
||||
volumes:
|
||||
- pg-data-dir-gs:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: '2.1'
|
||||
version: '3.9'
|
||||
volumes:
|
||||
default-pg-data-dir:
|
||||
new-pg-data-dir:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: '2.1'
|
||||
version: '3.9'
|
||||
volumes:
|
||||
default-pg-data-dir:
|
||||
new-pg-data-dir:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
pg:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: '2.1'
|
||||
version: '3.9'
|
||||
volumes:
|
||||
default-pg-data-dir-md5:
|
||||
new-pg-data-dir:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-publisher-data-dir:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-publisher-data-dir:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-db-data-dir:
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
|
||||
version: '2.1'
|
||||
|
||||
volumes:
|
||||
pg-master-data-dir:
|
||||
pg-node-data-dir:
|
||||
|
||||
services:
|
||||
pg-master:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
|
||||
volumes:
|
||||
- pg-master-data-dir:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
- ../utils:/lib/utils
|
||||
- ./scripts/setup-master.sql:/docker-entrypoint-initdb.d/setup-master.sql
|
||||
environment:
|
||||
|
||||
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||
|
||||
# We can specify optional credentials
|
||||
POSTGRES_PASS: 'docker'
|
||||
REPLICATION_USER: 'replicator'
|
||||
REPLICATION_PASS: 'replicator'
|
||||
REPLICATION: 'true'
|
||||
RUN_AS_ROOT: false
|
||||
healthcheck:
|
||||
interval: 60s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
test: "pg_isready"
|
||||
|
||||
pg-node:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
|
||||
volumes:
|
||||
- pg-node-data-dir:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
- ../utils:/lib/utils
|
||||
|
||||
environment:
|
||||
|
||||
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||
POSTGRES_PASS: 'docker'
|
||||
REPLICATE_FROM: 'pg-master'
|
||||
REPLICATION: 'true'
|
||||
RUN_AS_ROOT: false
|
||||
PROMOTE_MASTER: false
|
||||
DESTROY_DATABASE_ON_RESTART: 'True'
|
||||
REPLICATION_USER: 'replicator'
|
||||
REPLICATION_PASS: 'replicator'
|
||||
depends_on:
|
||||
pg-master:
|
||||
condition: service_healthy
|
||||
|
||||
healthcheck:
|
||||
interval: 60s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
test: "pg_isready"
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-master-data-dir:
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
|
||||
version: '2.1'
|
||||
|
||||
volumes:
|
||||
pg-master-data-dir:
|
||||
pg-node-data-dir:
|
||||
|
||||
services:
|
||||
pg-master:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
volumes:
|
||||
- pg-master-data-dir:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
- ../utils:/lib/utils
|
||||
- ./scripts/setup-master.sql:/docker-entrypoint-initdb.d/setup-master.sql
|
||||
environment:
|
||||
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||
# We can specify optional credentials
|
||||
POSTGRES_PASS: 'docker'
|
||||
REPLICATION_USER: 'replicator'
|
||||
REPLICATION_PASS: 'replicator'
|
||||
REPLICATION: 'true'
|
||||
RUN_AS_ROOT: true
|
||||
healthcheck:
|
||||
interval: 60s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
test: "pg_isready"
|
||||
|
||||
pg-node:
|
||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||
restart: 'always'
|
||||
volumes:
|
||||
- pg-node-data-dir:/var/lib/postgresql
|
||||
- ./tests:/tests
|
||||
- ../utils:/lib/utils
|
||||
environment:
|
||||
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||
POSTGRES_PASS: 'docker'
|
||||
REPLICATE_FROM: 'pg-master'
|
||||
REPLICATION: 'true'
|
||||
RUN_AS_ROOT: true
|
||||
PROMOTE_MASTER: false
|
||||
DESTROY_DATABASE_ON_RESTART: 'True'
|
||||
REPLICATION_USER: 'replicator'
|
||||
REPLICATION_PASS: 'replicator'
|
||||
depends_on:
|
||||
pg-master:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
interval: 60s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
test: "pg_isready"
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
version: '2.1'
|
||||
version: '3.9'
|
||||
|
||||
volumes:
|
||||
pg-master-data-dir:
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
-- Create a table
|
||||
CREATE TABLE IF NOT EXISTS sweets
|
||||
(
|
||||
id SERIAL,
|
||||
name TEXT,
|
||||
price DECIMAL,
|
||||
CONSTRAINT sweets_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
-- Inserts records into the table
|
||||
INSERT INTO sweets (name, price) VALUES ('strawberry', 4.50), ('Coffee', 6.20), ('lollipop', 3.80);
|
|
@ -11,8 +11,9 @@ if [[ $(dpkg -l | grep "docker-compose") > /dev/null ]];then
|
|||
VERSION='docker compose'
|
||||
fi
|
||||
|
||||
|
||||
####
|
||||
# Run service as root user
|
||||
####
|
||||
${VERSION} up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
|
@ -39,7 +40,9 @@ ${VERSION} exec -T pg-node /bin/bash /tests/test_node.sh
|
|||
|
||||
${VERSION} down -v
|
||||
|
||||
####
|
||||
# Run service as none root
|
||||
####
|
||||
${VERSION} -f docker-compose-gs.yml up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
|
@ -64,4 +67,64 @@ done;
|
|||
# Execute tests
|
||||
${VERSION} -f docker-compose-gs.yml exec -T pg-node /bin/bash /tests/test_node.sh
|
||||
|
||||
${VERSION} -f docker-compose-gs.yml down -v
|
||||
${VERSION} -f docker-compose-gs.yml down -v
|
||||
|
||||
|
||||
####
|
||||
# Run service as root user for node promotion
|
||||
####
|
||||
${VERSION} -f docker-compose-root-promote.yml up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
${VERSION} -f docker-compose-root-promote.yml logs -f &
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
|
||||
# Update env variable
|
||||
sed -i 's/\(PROMOTE_MASTER: \)false/\1true/' docker-compose-root-promote.yml
|
||||
|
||||
# Bring up node with option to promote node
|
||||
|
||||
${VERSION} -f docker-compose-root-promote.yml up -d pg-node
|
||||
|
||||
# Preparing node cluster
|
||||
until ${VERSION} -f docker-compose-root-promote.yml exec -T pg-node pg_isready; do
|
||||
sleep 30
|
||||
done;
|
||||
|
||||
# Execute tests
|
||||
${VERSION} -f docker-compose-root-promote.yml exec -T pg-node /bin/bash /tests/test_node_promotion.sh
|
||||
|
||||
${VERSION} -f docker-compose-root-promote.yml down -v
|
||||
sed -i 's/\(PROMOTE_MASTER: \)true/\1false/' docker-compose-root-promote.yml
|
||||
|
||||
####
|
||||
# Run service as none root user for node promotion
|
||||
####
|
||||
${VERSION} -f docker-compose-gs-promote.yml up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
${VERSION} -f docker-compose-gs-promote.yml logs -f &
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
|
||||
# Update env variable
|
||||
sed -i 's/\(PROMOTE_MASTER: \)false/\1true/' docker-compose-gs-promote.yml
|
||||
|
||||
# Bring up node with option to promote node
|
||||
|
||||
${VERSION} -f docker-compose-gs-promote.yml up -d pg-node
|
||||
|
||||
# Preparing node cluster
|
||||
until ${VERSION} -f docker-compose-gs-promote.yml exec -T pg-node pg_isready; do
|
||||
sleep 30
|
||||
done;
|
||||
|
||||
# Execute tests
|
||||
${VERSION} -f docker-compose-gs-promote.yml exec -T pg-node /bin/bash /tests/test_node_promotion.sh
|
||||
|
||||
${VERSION} -f docker-compose-gs-promote.yml down -v
|
||||
sed -i 's/\(PROMOTE_MASTER: \)true/\1false/' docker-compose-gs-promote.yml
|
||||
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
source /scripts/env-data.sh
|
||||
|
||||
# execute tests
|
||||
pushd /tests
|
||||
|
||||
PGHOST=localhost \
|
||||
PGDATABASE=gis \
|
||||
PYTHONPATH=/lib \
|
||||
python3 -m unittest -v test_replication.TestReplicationPromotion
|
|
@ -56,4 +56,27 @@ class TestReplicationNode(unittest.TestCase):
|
|||
|
||||
rows = c.fetchall()
|
||||
self.assertEqual(len(rows), 1)
|
||||
class TestReplicationPromotion(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.db = DBConnection()
|
||||
|
||||
def test_read_data(self):
|
||||
# create new table
|
||||
self.db.conn.autocommit = True
|
||||
with self.db.cursor() as c:
|
||||
c.execute(
|
||||
"""
|
||||
INSERT INTO sweets (name ,price) values ('Test', 10);
|
||||
"""
|
||||
)
|
||||
c.execute(
|
||||
"""
|
||||
SELECT * FROM sweets where name = 'Test';
|
||||
"""
|
||||
)
|
||||
|
||||
rows = c.fetchone()
|
||||
self.assertEqual(len(rows), 3)
|
||||
|
||||
|
||||
|
|
|
@ -10,17 +10,18 @@ class DBConnection:
|
|||
|
||||
def table_exists(self, table_name, table_schema='public'):
|
||||
cur = self.conn.cursor()
|
||||
query = (
|
||||
'select '
|
||||
'exists('
|
||||
'select 1 '
|
||||
'from information_schema.tables '
|
||||
'where table_name = %s and table_schema = %s)')
|
||||
cur.execute(query, (table_name, table_schema))
|
||||
query = '''select exists (select 1 from information_schema.tables \
|
||||
where table_name = %s and table_schema = %s)''' % (table_name, table_schema)
|
||||
|
||||
cur.execute(query)
|
||||
try:
|
||||
row = cur.fetchone()
|
||||
return row[0]
|
||||
except:
|
||||
if row is not None:
|
||||
return row[0]
|
||||
else:
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
|
|
|
@ -74,8 +74,17 @@ else
|
|||
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||
non_root_permission "${USER_NAME}" "${DB_GROUP_NAME}"
|
||||
else
|
||||
chown -R postgres:postgres "${DATADIR}" "${WAL_ARCHIVE}"
|
||||
chmod -R 750 "${DATADIR}" "${WAL_ARCHIVE}"
|
||||
dir_ownership=("${DATADIR}" "${WAL_ARCHIVE}")
|
||||
for directory in "${dir_ownership[@]}"; do
|
||||
if [[ $(stat -c '%U' "${directory}") != "postgres" ]] && [[ $(stat -c '%G' "${directory}") != "postgres" ]];then
|
||||
chown -R postgres:postgres "${directory}"
|
||||
fi
|
||||
done
|
||||
for directory in "${dir_ownership[@]}"; do
|
||||
if [ "$(stat -c %a "$directory")" != "750" ]; then
|
||||
chmod -R 750 "$directory"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
source /scripts/setup-replication.sh
|
||||
fi
|
||||
|
|
|
@ -20,9 +20,10 @@ SQLDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/contrib/postgis-${POSTGI
|
|||
EXTDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/extension/"
|
||||
SETVARS="POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL"
|
||||
LOCALONLY="-c listen_addresses='127.0.0.1'"
|
||||
PG_BASEBACKUP="/usr/bin/pg_basebackup"
|
||||
PG_BASEBACKUP="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_basebackup"
|
||||
PROMOTE_FILE="/tmp/pg_promote_master"
|
||||
NODE_PROMOTION="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_ctl"
|
||||
DATA_DIR_CONTROL="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_controldata"
|
||||
PGSTAT_TMP="/var/run/postgresql/"
|
||||
PG_PID="/var/run/postgresql/${POSTGRES_MAJOR_VERSION}-main.pid"
|
||||
|
||||
|
@ -34,7 +35,7 @@ PG_PID="/var/run/postgresql/${POSTGRES_MAJOR_VERSION}-main.pid"
|
|||
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
|
||||
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
|
||||
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
|
||||
function file_env {
|
||||
function file_env() {
|
||||
local var="$1"
|
||||
local fileVar="${var}_FILE"
|
||||
local def="${2:-}"
|
||||
|
@ -65,7 +66,7 @@ function boolean() {
|
|||
|
||||
file_env 'POSTGRES_PASS'
|
||||
file_env 'POSTGRES_USER'
|
||||
file_env 'POSTGRES_DBNAME'
|
||||
|
||||
|
||||
function create_dir() {
|
||||
DATA_PATH=$1
|
||||
|
@ -211,7 +212,7 @@ fi
|
|||
|
||||
if [ -z "${ARCHIVE_CLEANUP_COMMAND}" ]; then
|
||||
# https://www.postgresql.org/docs/12/runtime-config-wal.html
|
||||
ARCHIVE_CLEANUP_COMMAND="pg_archivecleanup ${WAL_ARCHIVE} %r"
|
||||
ARCHIVE_CLEANUP_COMMAND="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_archivecleanup ${WAL_ARCHIVE} %r"
|
||||
fi
|
||||
|
||||
if [ -z "${WAL_LEVEL}" ]; then
|
||||
|
@ -401,6 +402,17 @@ if [ -z "${TIMEZONE}" ]; then
|
|||
TIMEZONE='Etc/UTC'
|
||||
fi
|
||||
|
||||
if [ -z "${KERNEL_SHMMAX}" ]; then
|
||||
KERNEL_SHMMAX=543252480
|
||||
fi
|
||||
|
||||
if [ -z "${KERNEL_SHMALL}" ]; then
|
||||
KERNEL_SHMALL=2097152
|
||||
fi
|
||||
|
||||
if [ -z "${PROMOTE_MASTER}" ]; then
|
||||
PROMOTE_MASTER=FALSE
|
||||
fi
|
||||
# usable function definitions
|
||||
function kill_postgres {
|
||||
PID=$(cat "${PG_PID}")
|
||||
|
@ -587,7 +599,7 @@ function non_root_permission() {
|
|||
directory_checker "${dir_names}"
|
||||
fi
|
||||
done
|
||||
services=("/usr/lib/postgresql/" "/etc/" "/var/run/!(secrets)" "/var/lib/" "/usr/bin" "/tmp" "/scripts")
|
||||
services=("/usr/lib/postgresql/" "/etc/" "/var/log/postgresql" "/var/run/!(secrets)" "/var/lib/" "/usr/bin" "/tmp" "/scripts")
|
||||
for paths in "${services[@]}"; do
|
||||
directory_checker "${paths}"
|
||||
done
|
||||
|
@ -605,3 +617,4 @@ function role_check() {
|
|||
fi
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,484 +0,0 @@
|
|||
# This file lists locales that you wish to have built. You can find a list
|
||||
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
|
||||
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
|
||||
# this file, you need to rerun locale-gen.
|
||||
|
||||
|
||||
aa_DJ ISO-8859-1
|
||||
aa_DJ.UTF-8 UTF-8
|
||||
aa_ER UTF-8
|
||||
aa_ER@saaho UTF-8
|
||||
aa_ET UTF-8
|
||||
af_ZA ISO-8859-1
|
||||
af_ZA.UTF-8 UTF-8
|
||||
ak_GH UTF-8
|
||||
am_ET UTF-8
|
||||
an_ES ISO-8859-15
|
||||
an_ES.UTF-8 UTF-8
|
||||
anp_IN UTF-8
|
||||
ar_AE ISO-8859-6
|
||||
ar_AE.UTF-8 UTF-8
|
||||
ar_BH ISO-8859-6
|
||||
ar_BH.UTF-8 UTF-8
|
||||
ar_DZ ISO-8859-6
|
||||
ar_DZ.UTF-8 UTF-8
|
||||
ar_EG ISO-8859-6
|
||||
ar_EG.UTF-8 UTF-8
|
||||
ar_IN UTF-8
|
||||
ar_IQ ISO-8859-6
|
||||
ar_IQ.UTF-8 UTF-8
|
||||
ar_JO ISO-8859-6
|
||||
ar_JO.UTF-8 UTF-8
|
||||
ar_KW ISO-8859-6
|
||||
ar_KW.UTF-8 UTF-8
|
||||
ar_LB ISO-8859-6
|
||||
ar_LB.UTF-8 UTF-8
|
||||
ar_LY ISO-8859-6
|
||||
ar_LY.UTF-8 UTF-8
|
||||
ar_MA ISO-8859-6
|
||||
ar_MA.UTF-8 UTF-8
|
||||
ar_OM ISO-8859-6
|
||||
ar_OM.UTF-8 UTF-8
|
||||
ar_QA ISO-8859-6
|
||||
ar_QA.UTF-8 UTF-8
|
||||
ar_SA ISO-8859-6
|
||||
ar_SA.UTF-8 UTF-8
|
||||
ar_SD ISO-8859-6
|
||||
ar_SD.UTF-8 UTF-8
|
||||
ar_SS UTF-8
|
||||
ar_SY ISO-8859-6
|
||||
ar_SY.UTF-8 UTF-8
|
||||
ar_TN ISO-8859-6
|
||||
ar_TN.UTF-8 UTF-8
|
||||
ar_YE ISO-8859-6
|
||||
ar_YE.UTF-8 UTF-8
|
||||
as_IN UTF-8
|
||||
ast_ES ISO-8859-15
|
||||
ast_ES.UTF-8 UTF-8
|
||||
ayc_PE UTF-8
|
||||
az_AZ UTF-8
|
||||
be_BY CP1251
|
||||
be_BY.UTF-8 UTF-8
|
||||
be_BY@latin UTF-8
|
||||
bem_ZM UTF-8
|
||||
ber_DZ UTF-8
|
||||
ber_MA UTF-8
|
||||
bg_BG CP1251
|
||||
bg_BG.UTF-8 UTF-8
|
||||
bhb_IN.UTF-8 UTF-8
|
||||
bho_IN UTF-8
|
||||
bn_BD UTF-8
|
||||
bn_IN UTF-8
|
||||
bo_CN UTF-8
|
||||
bo_IN UTF-8
|
||||
br_FR ISO-8859-1
|
||||
br_FR.UTF-8 UTF-8
|
||||
br_FR@euro ISO-8859-15
|
||||
brx_IN UTF-8
|
||||
bs_BA ISO-8859-2
|
||||
bs_BA.UTF-8 UTF-8
|
||||
byn_ER UTF-8
|
||||
ca_AD ISO-8859-15
|
||||
ca_AD.UTF-8 UTF-8
|
||||
ca_ES ISO-8859-1
|
||||
ca_ES.UTF-8 UTF-8
|
||||
ca_ES.UTF-8@valencia UTF-8
|
||||
ca_ES@euro ISO-8859-15
|
||||
ca_ES@valencia ISO-8859-15
|
||||
ca_FR ISO-8859-15
|
||||
ca_FR.UTF-8 UTF-8
|
||||
ca_IT ISO-8859-15
|
||||
ca_IT.UTF-8 UTF-8
|
||||
ce_RU UTF-8
|
||||
chr_US UTF-8
|
||||
cmn_TW UTF-8
|
||||
crh_UA UTF-8
|
||||
cs_CZ ISO-8859-2
|
||||
cs_CZ.UTF-8 UTF-8
|
||||
csb_PL UTF-8
|
||||
cv_RU UTF-8
|
||||
cy_GB ISO-8859-14
|
||||
cy_GB.UTF-8 UTF-8
|
||||
da_DK ISO-8859-1
|
||||
da_DK.UTF-8 UTF-8
|
||||
de_AT ISO-8859-1
|
||||
de_AT.UTF-8 UTF-8
|
||||
de_AT@euro ISO-8859-15
|
||||
de_BE ISO-8859-1
|
||||
de_BE.UTF-8 UTF-8
|
||||
de_BE@euro ISO-8859-15
|
||||
de_CH ISO-8859-1
|
||||
de_CH.UTF-8 UTF-8
|
||||
de_DE ISO-8859-1
|
||||
de_DE.UTF-8 UTF-8
|
||||
de_DE@euro ISO-8859-15
|
||||
de_IT ISO-8859-1
|
||||
de_IT.UTF-8 UTF-8
|
||||
de_LI.UTF-8 UTF-8
|
||||
de_LU ISO-8859-1
|
||||
de_LU.UTF-8 UTF-8
|
||||
de_LU@euro ISO-8859-15
|
||||
doi_IN UTF-8
|
||||
dv_MV UTF-8
|
||||
dz_BT UTF-8
|
||||
el_CY ISO-8859-7
|
||||
el_CY.UTF-8 UTF-8
|
||||
el_GR ISO-8859-7
|
||||
el_GR.UTF-8 UTF-8
|
||||
en_AG UTF-8
|
||||
en_AU ISO-8859-1
|
||||
en_AU.UTF-8 UTF-8
|
||||
en_BW ISO-8859-1
|
||||
en_BW.UTF-8 UTF-8
|
||||
en_CA ISO-8859-1
|
||||
en_CA.UTF-8 UTF-8
|
||||
en_DK ISO-8859-1
|
||||
en_DK.ISO-8859-15 ISO-8859-15
|
||||
en_DK.UTF-8 UTF-8
|
||||
en_GB ISO-8859-1
|
||||
en_GB.ISO-8859-15 ISO-8859-15
|
||||
en_GB.UTF-8 UTF-8
|
||||
en_HK ISO-8859-1
|
||||
en_HK.UTF-8 UTF-8
|
||||
en_IE ISO-8859-1
|
||||
en_IE.UTF-8 UTF-8
|
||||
en_IE@euro ISO-8859-15
|
||||
en_IL UTF-8
|
||||
en_IN UTF-8
|
||||
en_NG UTF-8
|
||||
en_NZ ISO-8859-1
|
||||
en_NZ.UTF-8 UTF-8
|
||||
en_PH ISO-8859-1
|
||||
en_PH.UTF-8 UTF-8
|
||||
en_SG ISO-8859-1
|
||||
en_SG.UTF-8 UTF-8
|
||||
en_US ISO-8859-1
|
||||
en_US.ISO-8859-15 ISO-8859-15
|
||||
en_US.UTF-8 UTF-8
|
||||
en_ZA ISO-8859-1
|
||||
en_ZA.UTF-8 UTF-8
|
||||
en_ZM UTF-8
|
||||
en_ZW ISO-8859-1
|
||||
en_ZW.UTF-8 UTF-8
|
||||
eo UTF-8
|
||||
es_AR ISO-8859-1
|
||||
es_AR.UTF-8 UTF-8
|
||||
es_BO ISO-8859-1
|
||||
es_BO.UTF-8 UTF-8
|
||||
es_CL ISO-8859-1
|
||||
es_CL.UTF-8 UTF-8
|
||||
es_CO ISO-8859-1
|
||||
es_CO.UTF-8 UTF-8
|
||||
es_CR ISO-8859-1
|
||||
es_CR.UTF-8 UTF-8
|
||||
es_CU UTF-8
|
||||
es_DO ISO-8859-1
|
||||
es_DO.UTF-8 UTF-8
|
||||
es_EC ISO-8859-1
|
||||
es_EC.UTF-8 UTF-8
|
||||
es_ES ISO-8859-1
|
||||
es_ES.UTF-8 UTF-8
|
||||
es_ES@euro ISO-8859-15
|
||||
es_GT ISO-8859-1
|
||||
es_GT.UTF-8 UTF-8
|
||||
es_HN ISO-8859-1
|
||||
es_HN.UTF-8 UTF-8
|
||||
es_MX ISO-8859-1
|
||||
es_MX.UTF-8 UTF-8
|
||||
es_NI ISO-8859-1
|
||||
es_NI.UTF-8 UTF-8
|
||||
es_PA ISO-8859-1
|
||||
es_PA.UTF-8 UTF-8
|
||||
es_PE ISO-8859-1
|
||||
es_PE.UTF-8 UTF-8
|
||||
es_PR ISO-8859-1
|
||||
es_PR.UTF-8 UTF-8
|
||||
es_PY ISO-8859-1
|
||||
es_PY.UTF-8 UTF-8
|
||||
es_SV ISO-8859-1
|
||||
es_SV.UTF-8 UTF-8
|
||||
es_US ISO-8859-1
|
||||
es_US.UTF-8 UTF-8
|
||||
es_UY ISO-8859-1
|
||||
es_UY.UTF-8 UTF-8
|
||||
es_VE ISO-8859-1
|
||||
es_VE.UTF-8 UTF-8
|
||||
et_EE ISO-8859-1
|
||||
et_EE.ISO-8859-15 ISO-8859-15
|
||||
et_EE.UTF-8 UTF-8
|
||||
eu_ES ISO-8859-1
|
||||
eu_ES.UTF-8 UTF-8
|
||||
eu_ES@euro ISO-8859-15
|
||||
eu_FR ISO-8859-1
|
||||
eu_FR.UTF-8 UTF-8
|
||||
eu_FR@euro ISO-8859-15
|
||||
fa_IR UTF-8
|
||||
ff_SN UTF-8
|
||||
fi_FI ISO-8859-1
|
||||
fi_FI.UTF-8 UTF-8
|
||||
fi_FI@euro ISO-8859-15
|
||||
fil_PH UTF-8
|
||||
fo_FO ISO-8859-1
|
||||
fo_FO.UTF-8 UTF-8
|
||||
fr_BE ISO-8859-1
|
||||
fr_BE.UTF-8 UTF-8
|
||||
fr_BE@euro ISO-8859-15
|
||||
fr_CA ISO-8859-1
|
||||
fr_CA.UTF-8 UTF-8
|
||||
fr_CH ISO-8859-1
|
||||
fr_CH.UTF-8 UTF-8
|
||||
fr_FR ISO-8859-1
|
||||
fr_FR.UTF-8 UTF-8
|
||||
fr_FR@euro ISO-8859-15
|
||||
fr_LU ISO-8859-1
|
||||
fr_LU.UTF-8 UTF-8
|
||||
fr_LU@euro ISO-8859-15
|
||||
fur_IT UTF-8
|
||||
fy_DE UTF-8
|
||||
fy_NL UTF-8
|
||||
ga_IE ISO-8859-1
|
||||
ga_IE.UTF-8 UTF-8
|
||||
ga_IE@euro ISO-8859-15
|
||||
gd_GB ISO-8859-15
|
||||
gd_GB.UTF-8 UTF-8
|
||||
gez_ER UTF-8
|
||||
gez_ER@abegede UTF-8
|
||||
gez_ET UTF-8
|
||||
gez_ET@abegede UTF-8
|
||||
gl_ES ISO-8859-1
|
||||
gl_ES.UTF-8 UTF-8
|
||||
gl_ES@euro ISO-8859-15
|
||||
gu_IN UTF-8
|
||||
gv_GB ISO-8859-1
|
||||
gv_GB.UTF-8 UTF-8
|
||||
ha_NG UTF-8
|
||||
hak_TW UTF-8
|
||||
he_IL ISO-8859-8
|
||||
he_IL.UTF-8 UTF-8
|
||||
hi_IN UTF-8
|
||||
hne_IN UTF-8
|
||||
hr_HR ISO-8859-2
|
||||
hr_HR.UTF-8 UTF-8
|
||||
hsb_DE ISO-8859-2
|
||||
hsb_DE.UTF-8 UTF-8
|
||||
ht_HT UTF-8
|
||||
hu_HU ISO-8859-2
|
||||
hu_HU.UTF-8 UTF-8
|
||||
hy_AM UTF-8
|
||||
hy_AM.ARMSCII-8 ARMSCII-8
|
||||
ia_FR UTF-8
|
||||
id_ID ISO-8859-1
|
||||
id_ID.UTF-8 UTF-8
|
||||
ig_NG UTF-8
|
||||
ik_CA UTF-8
|
||||
is_IS ISO-8859-1
|
||||
is_IS.UTF-8 UTF-8
|
||||
it_CH ISO-8859-1
|
||||
it_CH.UTF-8 UTF-8
|
||||
it_IT ISO-8859-1
|
||||
it_IT.UTF-8 UTF-8
|
||||
it_IT@euro ISO-8859-15
|
||||
iu_CA UTF-8
|
||||
ja_JP.EUC-JP EUC-JP
|
||||
ja_JP.UTF-8 UTF-8
|
||||
ka_GE GEORGIAN-PS
|
||||
ka_GE.UTF-8 UTF-8
|
||||
kk_KZ PT154
|
||||
kk_KZ.RK1048 RK1048
|
||||
kk_KZ.UTF-8 UTF-8
|
||||
kl_GL ISO-8859-1
|
||||
kl_GL.UTF-8 UTF-8
|
||||
km_KH UTF-8
|
||||
kn_IN UTF-8
|
||||
ko_KR.EUC-KR EUC-KR
|
||||
ko_KR.UTF-8 UTF-8
|
||||
kok_IN UTF-8
|
||||
ks_IN UTF-8
|
||||
ks_IN@devanagari UTF-8
|
||||
ku_TR ISO-8859-9
|
||||
ku_TR.UTF-8 UTF-8
|
||||
kw_GB ISO-8859-1
|
||||
kw_GB.UTF-8 UTF-8
|
||||
ky_KG UTF-8
|
||||
lb_LU UTF-8
|
||||
lg_UG ISO-8859-10
|
||||
lg_UG.UTF-8 UTF-8
|
||||
li_BE UTF-8
|
||||
li_NL UTF-8
|
||||
lij_IT UTF-8
|
||||
ln_CD UTF-8
|
||||
lo_LA UTF-8
|
||||
lt_LT ISO-8859-13
|
||||
lt_LT.UTF-8 UTF-8
|
||||
lv_LV ISO-8859-13
|
||||
lv_LV.UTF-8 UTF-8
|
||||
lzh_TW UTF-8
|
||||
mag_IN UTF-8
|
||||
mai_IN UTF-8
|
||||
mg_MG ISO-8859-15
|
||||
mg_MG.UTF-8 UTF-8
|
||||
mhr_RU UTF-8
|
||||
mi_NZ ISO-8859-13
|
||||
mi_NZ.UTF-8 UTF-8
|
||||
mk_MK ISO-8859-5
|
||||
mk_MK.UTF-8 UTF-8
|
||||
ml_IN UTF-8
|
||||
mn_MN UTF-8
|
||||
mni_IN UTF-8
|
||||
mr_IN UTF-8
|
||||
ms_MY ISO-8859-1
|
||||
ms_MY.UTF-8 UTF-8
|
||||
mt_MT ISO-8859-3
|
||||
mt_MT.UTF-8 UTF-8
|
||||
my_MM UTF-8
|
||||
nan_TW UTF-8
|
||||
nan_TW@latin UTF-8
|
||||
nb_NO ISO-8859-1
|
||||
nb_NO.UTF-8 UTF-8
|
||||
nds_DE UTF-8
|
||||
nds_NL UTF-8
|
||||
ne_NP UTF-8
|
||||
nhn_MX UTF-8
|
||||
niu_NU UTF-8
|
||||
niu_NZ UTF-8
|
||||
nl_AW UTF-8
|
||||
nl_BE ISO-8859-1
|
||||
nl_BE.UTF-8 UTF-8
|
||||
nl_BE@euro ISO-8859-15
|
||||
nl_NL ISO-8859-1
|
||||
nl_NL.UTF-8 UTF-8
|
||||
nl_NL@euro ISO-8859-15
|
||||
nn_NO ISO-8859-1
|
||||
nn_NO.UTF-8 UTF-8
|
||||
nr_ZA UTF-8
|
||||
nso_ZA UTF-8
|
||||
oc_FR ISO-8859-1
|
||||
oc_FR.UTF-8 UTF-8
|
||||
om_ET UTF-8
|
||||
om_KE ISO-8859-1
|
||||
om_KE.UTF-8 UTF-8
|
||||
or_IN UTF-8
|
||||
os_RU UTF-8
|
||||
pa_IN UTF-8
|
||||
pa_PK UTF-8
|
||||
pap_AW UTF-8
|
||||
pap_CW UTF-8
|
||||
pl_PL ISO-8859-2
|
||||
pl_PL.UTF-8 UTF-8
|
||||
ps_AF UTF-8
|
||||
pt_BR ISO-8859-1
|
||||
pt_BR.UTF-8 UTF-8
|
||||
pt_PT ISO-8859-1
|
||||
pt_PT.UTF-8 UTF-8
|
||||
pt_PT@euro ISO-8859-15
|
||||
quz_PE UTF-8
|
||||
raj_IN UTF-8
|
||||
ro_RO ISO-8859-2
|
||||
ro_RO.UTF-8 UTF-8
|
||||
ru_RU ISO-8859-5
|
||||
ru_RU.CP1251 CP1251
|
||||
ru_RU.KOI8-R KOI8-R
|
||||
ru_RU.UTF-8 UTF-8
|
||||
ru_UA KOI8-U
|
||||
ru_UA.UTF-8 UTF-8
|
||||
rw_RW UTF-8
|
||||
sa_IN UTF-8
|
||||
sat_IN UTF-8
|
||||
sc_IT UTF-8
|
||||
sd_IN UTF-8
|
||||
sd_IN@devanagari UTF-8
|
||||
se_NO UTF-8
|
||||
sgs_LT UTF-8
|
||||
shs_CA UTF-8
|
||||
si_LK UTF-8
|
||||
sid_ET UTF-8
|
||||
sk_SK ISO-8859-2
|
||||
sk_SK.UTF-8 UTF-8
|
||||
sl_SI ISO-8859-2
|
||||
sl_SI.UTF-8 UTF-8
|
||||
so_DJ ISO-8859-1
|
||||
so_DJ.UTF-8 UTF-8
|
||||
so_ET UTF-8
|
||||
so_KE ISO-8859-1
|
||||
so_KE.UTF-8 UTF-8
|
||||
so_SO ISO-8859-1
|
||||
so_SO.UTF-8 UTF-8
|
||||
sq_AL ISO-8859-1
|
||||
sq_AL.UTF-8 UTF-8
|
||||
sq_MK UTF-8
|
||||
sr_ME UTF-8
|
||||
sr_RS UTF-8
|
||||
sr_RS@latin UTF-8
|
||||
ss_ZA UTF-8
|
||||
st_ZA ISO-8859-1
|
||||
st_ZA.UTF-8 UTF-8
|
||||
sv_FI ISO-8859-1
|
||||
sv_FI.UTF-8 UTF-8
|
||||
sv_FI@euro ISO-8859-15
|
||||
sv_SE ISO-8859-1
|
||||
sv_SE.ISO-8859-15 ISO-8859-15
|
||||
sv_SE.UTF-8 UTF-8
|
||||
sw_KE UTF-8
|
||||
sw_TZ UTF-8
|
||||
szl_PL UTF-8
|
||||
ta_IN UTF-8
|
||||
ta_LK UTF-8
|
||||
tcy_IN.UTF-8 UTF-8
|
||||
te_IN UTF-8
|
||||
tg_TJ KOI8-T
|
||||
tg_TJ.UTF-8 UTF-8
|
||||
th_TH TIS-620
|
||||
th_TH.UTF-8 UTF-8
|
||||
the_NP UTF-8
|
||||
ti_ER UTF-8
|
||||
ti_ET UTF-8
|
||||
tig_ER UTF-8
|
||||
tk_TM UTF-8
|
||||
tl_PH ISO-8859-1
|
||||
tl_PH.UTF-8 UTF-8
|
||||
tn_ZA UTF-8
|
||||
tr_CY ISO-8859-9
|
||||
tr_CY.UTF-8 UTF-8
|
||||
tr_TR ISO-8859-9
|
||||
tr_TR.UTF-8 UTF-8
|
||||
ts_ZA UTF-8
|
||||
tt_RU UTF-8
|
||||
tt_RU@iqtelif UTF-8
|
||||
ug_CN UTF-8
|
||||
uk_UA KOI8-U
|
||||
uk_UA.UTF-8 UTF-8
|
||||
unm_US UTF-8
|
||||
ur_IN UTF-8
|
||||
ur_PK UTF-8
|
||||
uz_UZ ISO-8859-1
|
||||
uz_UZ.UTF-8 UTF-8
|
||||
uz_UZ@cyrillic UTF-8
|
||||
ve_ZA UTF-8
|
||||
vi_VN UTF-8
|
||||
wa_BE ISO-8859-1
|
||||
wa_BE.UTF-8 UTF-8
|
||||
wa_BE@euro ISO-8859-15
|
||||
wae_CH UTF-8
|
||||
wal_ET UTF-8
|
||||
wo_SN UTF-8
|
||||
xh_ZA ISO-8859-1
|
||||
xh_ZA.UTF-8 UTF-8
|
||||
yi_US CP1255
|
||||
yi_US.UTF-8 UTF-8
|
||||
yo_NG UTF-8
|
||||
yue_HK UTF-8
|
||||
zh_CN GB2312
|
||||
zh_CN.GB18030 GB18030
|
||||
zh_CN.GBK GBK
|
||||
zh_CN.UTF-8 UTF-8
|
||||
zh_HK BIG5-HKSCS
|
||||
zh_HK.UTF-8 UTF-8
|
||||
zh_SG GB2312
|
||||
zh_SG.GBK GBK
|
||||
zh_SG.UTF-8 UTF-8
|
||||
zh_TW BIG5
|
||||
zh_TW.EUC-TW EUC-TW
|
||||
zh_TW.UTF-8 UTF-8
|
||||
zu_ZA ISO-8859-1
|
||||
zu_ZA.UTF-8 UTF-8
|
||||
zu_ZA.UTF-8 UTF-8
|
|
@ -119,8 +119,8 @@ fi
|
|||
|
||||
# Optimise PostgreSQL shared memory for PostGIS
|
||||
# shmall units are pages and shmmax units are bytes(?) equivalent to the desired shared_buffer size set in setup_conf.sh - in this case 500MB
|
||||
echo "kernel.shmmax=543252480" >> /etc/sysctl.conf
|
||||
echo "kernel.shmall=2097152" >> /etc/sysctl.conf
|
||||
echo "kernel.shmmax=${KERNEL_SHMMAX}" >> /etc/sysctl.conf
|
||||
echo "kernel.shmall=${KERNEL_SHMALL}" >> /etc/sysctl.conf
|
||||
|
||||
# Put lock file to make sure conf was not reinitialized
|
||||
touch "${SETUP_LOCKFILE}"
|
||||
|
|
|
@ -88,7 +88,7 @@ trap "echo \"Sending SIGTERM to postgres\"; killall -s SIGTERM postgres" SIGTERM
|
|||
su - postgres -c "${POSTGRES} -D ${DATADIR} -c config_file=${CONF} ${LOCALONLY} &"
|
||||
|
||||
# wait for postgres to come up
|
||||
until su - postgres -c "pg_isready"; do
|
||||
until su - postgres -c "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready"; do
|
||||
sleep 1
|
||||
done
|
||||
echo "postgres ready"
|
||||
|
|
|
@ -9,7 +9,7 @@ source /scripts/env-data.sh
|
|||
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||
function START_COMMAND() {
|
||||
PARAM=$1
|
||||
gosu ${USER_NAME} bash -c "$1"
|
||||
gosu "${USER_NAME}" bash -c "$1"
|
||||
}
|
||||
else
|
||||
function START_COMMAND() {
|
||||
|
@ -29,26 +29,48 @@ if [[ "$WAL_LEVEL" == 'replica' && "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] ]]; then
|
|||
fi
|
||||
|
||||
|
||||
until START_COMMAND "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready -h ${REPLICATE_FROM} -p ${REPLICATE_PORT}"
|
||||
do
|
||||
echo -e "[Entrypoint] \e[1;31m Waiting for master to ping... \033[0m"
|
||||
sleep 1s
|
||||
done
|
||||
if [[ "$DESTROY_DATABASE_ON_RESTART" =~ [Tt][Rr][Uu][Ee] ]]; then
|
||||
echo -e "[Entrypoint] \e[1;31m Get initial database from master \033[0m"
|
||||
configure_replication_permissions
|
||||
if [ -f "${DATADIR}/backup_label.old" ]; then
|
||||
echo -e "[Entrypoint] \e[1;31m PG Basebackup already exists so proceed to start the DB \033[0m"
|
||||
else
|
||||
streaming_replication
|
||||
if [[ "${PROMOTE_MASTER}" =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||
|
||||
until START_COMMAND "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready -h ${REPLICATE_FROM} -p ${REPLICATE_PORT}"
|
||||
do
|
||||
echo -e "[Entrypoint] \e[1;31m Waiting for master to ping... \033[0m"
|
||||
sleep 1s
|
||||
done
|
||||
if [[ "$DESTROY_DATABASE_ON_RESTART" =~ [Tt][Rr][Uu][Ee] ]]; then
|
||||
echo -e "[Entrypoint] \e[1;31m Get initial database from master \033[0m"
|
||||
configure_replication_permissions
|
||||
if [ -f "${DATADIR}/backup_label.old" ]; then
|
||||
echo -e "[Entrypoint] \e[1;31m PG Basebackup already exists so proceed to start the DB \033[0m"
|
||||
else
|
||||
streaming_replication
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
else
|
||||
if [ ! -f "${DATADIR}/backup_label.old" ]; then
|
||||
echo "Streaming replication hasn't been started yet"
|
||||
exit 1
|
||||
else
|
||||
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||
chown -R "${USER_NAME}":"${DB_GROUP_NAME}" /var/run/postgresql
|
||||
START_COMMAND "/etc/init.d/postgresql start ${POSTGRES_MAJOR_VERSION}"
|
||||
|
||||
else
|
||||
START_COMMAND "/etc/init.d/postgresql start ${POSTGRES_MAJOR_VERSION}"
|
||||
fi
|
||||
|
||||
STANDBY_MODE=$(START_COMMAND "${DATA_DIR_CONTROL} $DATADIR" | grep "Database cluster state:")
|
||||
if [[ "$STANDBY_MODE" == *"in archive recovery"* ]]; then
|
||||
START_COMMAND "${NODE_PROMOTION} promote -D ${DATADIR}"
|
||||
fi
|
||||
echo -e "\e[32m [Entrypoint] Replicant has been promoted to master, please shut down \e[1;31m pg-master \033[0m"
|
||||
kill_postgres
|
||||
fi
|
||||
fi
|
||||
# Promote to master if desired
|
||||
if [[ ! -z "${PROMOTE_MASTER}" ]]; then
|
||||
${START_COMMAND} "${NODE_PROMOTION} promote -D ${DATADIR}"
|
||||
|
||||
fi
|
||||
|
||||
#end main if
|
||||
fi
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue