mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-22 18:25:56 +01:00
28921e2997
Closes #15081 Signed-off-by: He Weiwei <hweiwei@vmware.com>
69 lines
2.5 KiB
Bash
69 lines
2.5 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
source $PWD/initdb.sh
|
|
|
|
CUR=$PWD
|
|
PG_VERSION_OLD=$1
|
|
PG_VERSION_NEW=$2
|
|
|
|
PGBINOLD="/usr/local/pg${PG_VERSION_OLD}/bin"
|
|
|
|
PGDATAOLD=${PGDATA}/pg${PG_VERSION_OLD}
|
|
PGDATANEW=${PGDATA}/pg${PG_VERSION_NEW}
|
|
# to handle the PG 9.6 only
|
|
if [ -s $PGDATA/PG_VERSION ]; then
|
|
PGDATAOLD=$PGDATA
|
|
fi
|
|
|
|
#
|
|
# Init DB: $PGDATA is empty.
|
|
# Upgrade DB: 1, has $PGDATA\PG_VERSION. 2, has pg old version directory with PG_VERSION inside.
|
|
#
|
|
if [ "$(ls -A $PGDATA)" ]; then
|
|
if [ ! -d $PGDATANEW ]; then
|
|
if [ ! -d $PGDATAOLD ] || [ ! -s $PGDATAOLD/PG_VERSION ]; then
|
|
echo "incorrect data: $PGDATAOLD, make sure $PGDATAOLD is not empty and with PG_VERSION inside."
|
|
exit 1
|
|
fi
|
|
|
|
initPG $PGDATANEW false
|
|
set +e
|
|
# In some cases, like helm upgrade, the postgresql may not quit cleanly.
|
|
# Use start & stop to clean the unexpected status. Error:
|
|
# There seems to be a postmaster servicing the new cluster.
|
|
# Please shutdown that postmaster and try again.
|
|
# Failure, exiting
|
|
$PGBINOLD/pg_ctl -D "$PGDATAOLD" -w -o "-p 5433" start
|
|
$PGBINOLD/pg_ctl -D "$PGDATAOLD" -m fast -w stop
|
|
./$CUR/upgrade.sh --old-bindir $PGBINOLD --old-datadir $PGDATAOLD --new-datadir $PGDATANEW
|
|
# it needs to clean the $PGDATANEW on upgrade failure
|
|
if [ $? -ne 0 ]; then
|
|
echo "remove the $PGDATANEW after fail to upgrade"
|
|
rm -rf $PGDATANEW
|
|
exit 1
|
|
fi
|
|
set -e
|
|
echo "remove the $PGDATAOLD after upgrade success."
|
|
if [ "$PGDATAOLD" = "$PGDATA" ]; then
|
|
find $PGDATA/* -prune ! -name pg${PG_VERSION_NEW} -exec rm -rf {} \;
|
|
else
|
|
rm -rf $PGDATAOLD
|
|
fi
|
|
else
|
|
echo "no need to upgrade postgres, launch it."
|
|
fi
|
|
else
|
|
initPG $PGDATANEW true
|
|
fi
|
|
|
|
POSTGRES_PARAMETER=''
|
|
file_env 'POSTGRES_MAX_CONNECTIONS' '1024'
|
|
# The max value of 'max_connections' is 262143
|
|
if [ $POSTGRES_MAX_CONNECTIONS -le 0 ] || [ $POSTGRES_MAX_CONNECTIONS -gt 262143 ]; then
|
|
POSTGRES_MAX_CONNECTIONS=262143
|
|
fi
|
|
|
|
POSTGRES_PARAMETER="${POSTGRES_PARAMETER} -c max_connections=${POSTGRES_MAX_CONNECTIONS}"
|
|
exec postgres -D $PGDATANEW $POSTGRES_PARAMETER
|