All checks were successful
continuous-integration/drone/push Build is passing
44 lines
1.2 KiB
Bash
44 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
DATA_DIR="/var/lib/postgresql/data"
|
|
OLD_VERSION_FILE="$DATA_DIR/PG_VERSION"
|
|
NEW_VERSION="15"
|
|
OLD_BIN="/usr/lib/postgresql/14/bin"
|
|
NEW_BIN="/usr/lib/postgresql/15/bin"
|
|
|
|
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..."
|
|
|
|
# Move old data to a temporary folder
|
|
mkdir -p $DATA_DIR/old_data
|
|
mv $DATA_DIR/* $DATA_DIR/old_data/ || true
|
|
|
|
# Initialize new data directory
|
|
mkdir $DATA_DIR/new_data
|
|
initdb -D $DATA_DIR/new_data
|
|
|
|
# Prevent error "You must have read and write access in the current directory."
|
|
cd $DATA_DIR
|
|
|
|
# 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 "$OLD_BIN" \
|
|
-B "$NEW_BIN" \
|
|
--link
|
|
|
|
# Clean-up
|
|
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 $@ |