Skip to content

Commit 1b2b747

Browse files
author
Rub21
committed
Backup database in azure storage
1 parent 7144c8c commit 1b2b747

File tree

4 files changed

+46
-16
lines changed

4 files changed

+46
-16
lines changed

compose/db-backup-restore.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ services:
1313
command: >
1414
/bin/bash -c "
1515
echo 'Set cron job for backing up DB, every 4 minutes';
16-
while :; do sleep 4m; echo 'Creating DB backup...'; /start.sh; done;
16+
while :; do echo 'Creating DB backup...'; /start.sh; sleep 4m; done;
1717
"
1818
env_file:
1919
- ../envs/.env.db

images/backup-restore/start.sh

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,51 @@ export PGPASSWORD=$POSTGRES_PASSWORD
33
export VOLUME_DIR=/mnt/data
44

55
date=$(date '+%y%m%d_%H%M')
6-
backupFile=$VOLUME_DIR/osmseed-db-${date}.sql.gz
6+
local_backupFile=$VOLUME_DIR/osmseed-db-${date}.sql.gz
7+
cloud_backupFile=database/osmseed-db-${date}.sql.gz
78
stateFile=$VOLUME_DIR/state.txt
89
restoreFile=$VOLUME_DIR/backup.sql.gz
910

1011
echo "Start...$DB_ACTION action"
1112
# Backing up DataBase
1213
if [ "$DB_ACTION" == "backup" ]; then
1314
# Backup database and make maximum compression at the slowest speed
14-
pg_dump -h $POSTGRES_HOST -U $POSTGRES_USER $POSTGRES_DB | gzip -9 >$backupFile
15+
pg_dump -h $POSTGRES_HOST -U $POSTGRES_USER $POSTGRES_DB | gzip -9 >$local_backupFile
1516

1617
# AWS
1718
if [ "$CLOUDPROVIDER" == "aws" ]; then
18-
# Upload to S3
19-
aws s3 cp $backupFile $AWS_S3_BUCKET/database/$backupFile
20-
# The file state.txt contain the latest version of DB path
21-
echo "$AWS_S3_BUCKET/database/$backupFile" > $stateFile
22-
aws s3 cp $stateFile $AWS_S3_BUCKET/database/$stateFile
19+
echo "$AWS_S3_BUCKET/$cloud_backupFile" > $stateFile
20+
# Upload db backup file
21+
aws s3 cp $local_backupFile $AWS_S3_BUCKET/$cloud_backupFile
22+
# Upload state.txt file
23+
aws s3 cp $stateFile $AWS_S3_BUCKET/database/state.txt
2324
fi
2425

25-
# Google Storage
26+
# GCP
2627
if [ "$CLOUDPROVIDER" == "gcp" ]; then
27-
# Upload to GS
28-
gsutil cp $backupFile $GCP_STORAGE_BUCKET/database/$backupFile
29-
# The file state.txt contain the latest version of DB path
30-
echo "$GCP_STORAGE_BUCKET/database/$backupFile" >$stateFile
31-
gsutil cp $stateFile $GCP_STORAGE_BUCKET/database/$stateFile
28+
echo "$GCP_STORAGE_BUCKET/$cloud_backupFile" > $stateFile
29+
# Upload db backup file
30+
gsutil cp $local_backupFile $GCP_STORAGE_BUCKET/$cloud_backupFile
31+
# Upload state.txt file
32+
gsutil cp $stateFile $GCP_STORAGE_BUCKET/database/state.txt
33+
fi
34+
35+
# Azure
36+
if [ "$CLOUDPROVIDER" == "azure" ]; then
37+
# Save the path file
38+
echo "blob://$AZURE_STORAGE_ACCOUNT/$AZURE_CONTAINER_NAME/$cloud_backupFile" > $stateFile
39+
# Upload db backup file
40+
az storage blob upload \
41+
--container-name $AZURE_CONTAINER_NAME \
42+
--file $local_backupFile \
43+
--name $cloud_backupFile \
44+
--output table
45+
# Upload state.txt file
46+
az storage blob upload \
47+
--container-name $AZURE_CONTAINER_NAME \
48+
--file $stateFile \
49+
--name database/state.txt \
50+
--output table
3251
fi
3352
fi
3453

images/planet-dump/start.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ osmosis --read-apidb \
3636
if [ $CLOUDPROVIDER == "aws" ]; then
3737
# Save the path file
3838
AWS_URL=${AWS_S3_BUCKET/s3:\/\//http:\/\/}
39-
echo "$AWS_URL.s3.amazonaws.com/planet/$local_planetPBFFile" > $stateFile
39+
echo "$AWS_URL.s3.amazonaws.com/$cloud_planetPBFFile" > $stateFile
4040
# Upload planet.osm.pbf file to s3
4141
aws s3 cp $local_planetPBFFile $AWS_S3_BUCKET/$cloud_planetPBFFile --acl public-read
4242
# Upload state.txt file to s3
@@ -56,7 +56,7 @@ fi
5656
# Azure
5757
if [ $CLOUDPROVIDER == "azure" ]; then
5858
# Save the path file
59-
echo "https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZURE_CONTAINER_NAME/$cloud_planetPBFFile" > $stateFile
59+
echo "https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZURE_CONTAINER_NAME/$cloud_planetPBFFile" > $stateFile
6060
# Upload planet.osm.pbf file to blob storage
6161
az storage blob upload \
6262
--container-name $AZURE_CONTAINER_NAME \

osm-seed/templates/db-backup-job.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,17 @@ spec:
5858
- name: GCP_STORAGE_BUCKET
5959
value: {{ .Values.GCP_STORAGE_BUCKET }}
6060
{{- end }}
61+
# In case cloudProvider=azure
62+
{{- if eq .Values.cloudProvider "azure" }}
63+
- name: AZURE_STORAGE_ACCOUNT
64+
value: {{ .Values.AZURE_STORAGE_ACCOUNT }}
65+
- name: AZURE_CONTAINER_NAME
66+
value: {{ .Values.AZURE_CONTAINER_NAME }}
67+
- name: AZURE_STORAGE_ACCESS_KEY
68+
value: {{ .Values.AZURE_STORAGE_ACCESS_KEY }}
69+
- name: AZURE_STORAGE_CONNECTION_STRING
70+
value: {{ .Values.AZURE_STORAGE_CONNECTION_STRING }}
71+
{{- end }}
6172
restartPolicy: OnFailure
6273
{{- if .Values.dbBackupRestore.nodeSelector.enabled }}
6374
nodeSelector:

0 commit comments

Comments
 (0)