Skip to content

Commit c75fc0d

Browse files
committed
chore: Upgrade postgresql to v14
1 parent cf0ec2f commit c75fc0d

File tree

4 files changed

+137
-2
lines changed

4 files changed

+137
-2
lines changed

devops/lms.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ version: "3"
22

33
services:
44
db:
5-
image: postgres:13-alpine
5+
image: postgres:14-alpine
66
ports:
77
- 5432:5432
88
volumes:
99
- db-data-volume:/pg_data
1010
environment:
11-
- PGDATA=/pg_data/13/data
11+
- PGDATA=/pg_data/14/data
1212
- POSTGRES_DB=${DB_NAME:-db}
1313
- POSTGRES_USER=${DB_USERNAME:-postgres}
1414
- POSTGRES_PASSWORD=${DB_PASSWORD:-postgres}

devops/upgrade_pg/upgrade-11-to-13.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
docker stop lms_db_1
2+
3+
# Put values here if you havn't configured them before
4+
DB_NAME=${DB_NAME:-lms}
5+
DB_USERNAME=${DB_USERNAME:-lmsweb}
6+
DB_PASSWORD=${DB_PASSWORD:-}
7+
8+
CURRENT_DATE=$(date +%d-%m-%Y_%H_%M_%S)
9+
MOUNT_PATH=/pg_data
10+
PG_OLD_DATA=/pg_data/11/data
11+
PG_NEW_DATA=/pg_data/13/data
12+
BACKUP_FILENAME=v11.$CURRENT_DATE.sql
13+
BACKUP_PATH=$MOUNT_PATH/backup/$BACKUP_FILENAME
14+
BACKUP_DIR=$(dirname "$BACKUP_PATH")
15+
VOLUME_NAME=lms_db-data-volume
16+
17+
# Step 1: Create a backup
18+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
19+
-e PGDATA=$PG_OLD_DATA \
20+
-e POSTGRES_DB="${DB_NAME:-db}" \
21+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
22+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
23+
postgres:11-alpine \
24+
/bin/bash -c "chown -R postgres:postgres $MOUNT_PATH \
25+
&& su - postgres /bin/bash -c \"/usr/local/bin/pg_ctl -D \\\"\$PGDATA\\\" start\" \
26+
&& mkdir -p \"$BACKUP_DIR\" \
27+
&& pg_dumpall -U $DB_USERNAME -f \"$BACKUP_PATH\" \
28+
&& chown postgres:postgres \"$BACKUP_PATH\""
29+
30+
# Step 2: Create a new database from the backup
31+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
32+
-e PGDATA=$PG_NEW_DATA \
33+
-e POSTGRES_DB="${DB_NAME:-db}" \
34+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
35+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
36+
postgres:13-alpine \
37+
/bin/bash -c "ls -la \"$BACKUP_DIR\" \
38+
&& mkdir -p \"\$PGDATA\" \
39+
&& chown -R postgres:postgres \"\$PGDATA\" \
40+
&& rm -rf $PG_NEW_DATA/* \
41+
&& su - postgres -c \"initdb -D \\\"\$PGDATA\\\"\" \
42+
&& su - postgres -c \"pg_ctl -D \\\"\$PGDATA\\\" -l logfile start\" \
43+
&& su - postgres -c \"psql -f $BACKUP_PATH\" \
44+
&& printf \"\\\nhost all all all md5\\\n\" >> \"\$PGDATA/pg_hba.conf\" \
45+
"

devops/upgrade_pg/upgrade-11-to-14.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
docker stop lms_db_1
2+
3+
# Put values here if you haven't configured them before
4+
DB_NAME=${DB_NAME:-lms}
5+
DB_USERNAME=${DB_USERNAME:-lmsweb}
6+
DB_PASSWORD=${DB_PASSWORD:-}
7+
8+
CURRENT_DATE=$(date +%d-%m-%Y_%H_%M_%S)
9+
MOUNT_PATH=/pg_data
10+
PG_OLD_DATA=/pg_data/11/data
11+
PG_NEW_DATA=/pg_data/14/data
12+
BACKUP_FILENAME=v11.$CURRENT_DATE.sql
13+
BACKUP_PATH=$MOUNT_PATH/backup/$BACKUP_FILENAME
14+
BACKUP_DIR=$(dirname "$BACKUP_PATH")
15+
VOLUME_NAME=lms_db-data-volume
16+
17+
# Step 1: Create a backup
18+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
19+
-e PGDATA=$PG_OLD_DATA \
20+
-e POSTGRES_DB="${DB_NAME:-db}" \
21+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
22+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
23+
postgres:11-alpine \
24+
/bin/bash -c "chown -R postgres:postgres $MOUNT_PATH \
25+
&& su - postgres /bin/bash -c \"/usr/local/bin/pg_ctl -D \\\"\$PGDATA\\\" start\" \
26+
&& mkdir -p \"$BACKUP_DIR\" \
27+
&& pg_dumpall -U $DB_USERNAME -f \"$BACKUP_PATH\" \
28+
&& chown postgres:postgres \"$BACKUP_PATH\""
29+
30+
# Step 2: Create a new database from the backup
31+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
32+
-e PGDATA=$PG_NEW_DATA \
33+
-e POSTGRES_DB="${DB_NAME:-db}" \
34+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
35+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
36+
postgres:14-alpine \
37+
/bin/bash -c "ls -la \"$BACKUP_DIR\" \
38+
&& mkdir -p \"\$PGDATA\" \
39+
&& chown -R postgres:postgres \"\$PGDATA\" \
40+
&& rm -rf $PG_NEW_DATA/* \
41+
&& su - postgres -c \"initdb -D \\\"\$PGDATA\\\"\" \
42+
&& su - postgres -c \"pg_ctl -D \\\"\$PGDATA\\\" -l logfile start\" \
43+
&& su - postgres -c \"psql -f $BACKUP_PATH\" \
44+
&& printf \"\\\nhost all all all md5\\\n\" >> \"\$PGDATA/pg_hba.conf\" \
45+
"

devops/upgrade_pg/upgrade-13-to-14.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
docker stop lms_db_1
2+
3+
# Put values here if you haven't configured them before
4+
DB_NAME=${DB_NAME:-lms}
5+
DB_USERNAME=${DB_USERNAME:-lmsweb}
6+
DB_PASSWORD=${DB_PASSWORD:-}
7+
8+
CURRENT_DATE=$(date +%d-%m-%Y_%H_%M_%S)
9+
MOUNT_PATH=/pg_data
10+
PG_OLD_DATA=/pg_data/13/data
11+
PG_NEW_DATA=/pg_data/14/data
12+
BACKUP_FILENAME=v13.$CURRENT_DATE.sql
13+
BACKUP_PATH=$MOUNT_PATH/backup/$BACKUP_FILENAME
14+
BACKUP_DIR=$(dirname "$BACKUP_PATH")
15+
VOLUME_NAME=lms_db-data-volume
16+
17+
# Step 1: Create a backup
18+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
19+
-e PGDATA=$PG_OLD_DATA \
20+
-e POSTGRES_DB="${DB_NAME:-db}" \
21+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
22+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
23+
postgres:13-alpine \
24+
/bin/bash -c "chown -R postgres:postgres $MOUNT_PATH \
25+
&& su - postgres /bin/bash -c \"/usr/local/bin/pg_ctl -D \\\"\$PGDATA\\\" start\" \
26+
&& mkdir -p \"$BACKUP_DIR\" \
27+
&& pg_dumpall -U $DB_USERNAME -f \"$BACKUP_PATH\" \
28+
&& chown postgres:postgres \"$BACKUP_PATH\""
29+
30+
# Step 2: Create a new database from the backup
31+
docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \
32+
-e PGDATA=$PG_NEW_DATA \
33+
-e POSTGRES_DB="${DB_NAME:-db}" \
34+
-e POSTGRES_USER="${DB_USERNAME:-postgres}" \
35+
-e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \
36+
postgres:14-alpine \
37+
/bin/bash -c "ls -la \"$BACKUP_DIR\" \
38+
&& mkdir -p \"\$PGDATA\" \
39+
&& chown -R postgres:postgres \"\$PGDATA\" \
40+
&& rm -rf $PG_NEW_DATA/* \
41+
&& su - postgres -c \"initdb -D \\\"\$PGDATA\\\"\" \
42+
&& su - postgres -c \"pg_ctl -D \\\"\$PGDATA\\\" -l logfile start\" \
43+
&& su - postgres -c \"psql -f $BACKUP_PATH\" \
44+
&& printf \"\\\nhost all all all md5\\\n\" >> \"\$PGDATA/pg_hba.conf\" \
45+
"

0 commit comments

Comments
 (0)