All checks were successful
continuous-integration/drone/push Build is passing
38 lines
1.1 KiB
Bash
38 lines
1.1 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
DATA_DIR="/var/lib/postgresql/data"
|
|
OLD_VERSION_FILE="$DATA_DIR/PG_VERSION"
|
|
NEW_VERSION="16"
|
|
|
|
if [ -f "$OLD_VERSION_FILE" ]; then
|
|
OLD_VERSION=$(cat "$OLD_VERSION_FILE")
|
|
|
|
if [ "$OLD_VERSION" != "$NEW_VERSION" ]; then
|
|
echo "Data version ($OLD_VERSION) differs from engine ($NEW_VERSION). Starting upgrade..."
|
|
|
|
# 1. Move old data to a temporary folder
|
|
mkdir -p $DATA_DIR/old_data
|
|
mv $DATA_DIR/* $DATA_DIR/old_data/ || true
|
|
|
|
# 2. Initialize new data directory
|
|
mkdir $DATA_DIR/new_data
|
|
initdb -D $DATA_DIR/new_data
|
|
|
|
# 3. Run pg_upgrade
|
|
# --link is used to avoid copying files (fast, but requires a backup!)
|
|
pg_upgrade \
|
|
-d $DATA_DIR/old_data \
|
|
-D $DATA_DIR/new_data \
|
|
-b /usr/bin/postgres-16 \
|
|
-B /usr/local/bin \
|
|
--link
|
|
|
|
echo "Upgrade complete. Cleaning up..."
|
|
rm -rf $DATA_DIR/old_data
|
|
mv $DATA_DIR/new_data/* $DATA_DIR/
|
|
rmdir $DATA_DIR/new_data
|
|
fi
|
|
fi
|
|
|
|
exec $@ |