Skip to content

Commit 5832ed5

Browse files
Leons Petrazickisreevejd
authored andcommitted
Skeleton for Postgres stuff
1 parent 252a628 commit 5832ed5

File tree

7 files changed

+73
-84
lines changed

7 files changed

+73
-84
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ script: true
1616
after_success: if [ -n "$TRAVIS_TAG" ]; then bin/push; fi
1717
notifications:
1818
slack:
19-
secure: objm+YC3fdtxenNHrMvD3Og0UxE6rrZxLEu1jLHJgXCBY8s9HoCaScLVSFs1OwIj6y82l/hi4mhegQRMK/5xn5a+kAyWo/NuRMz3yjWznV5pfWtg0mYN8eukCGEO+ggra9oJf/LzzF/xiUeTAOgduluAY1uayoYNrxBA4Yp5Mhg86zNLJes/mOeNWFRV6goee2DBwWQSQ2KZODJyM1a9wHbZKyISolJtLlKgh4oT/Prd3G2wmZ6aiuhfS8lMbXpqtV/joV/O68oVk4wJT8MNqraTI2Zg1FjZls/a7OA21Mrbl4OGEIDy3hKLd3WDUsd4fr/ufEp/ghZjkYvGZ8fN284HKNZes+No8qBx0mYA/8lSh1MTNgjh7XDX3Ppx+jkIVWQBnBsjvayTjNwiZBEgcVXGvSXLyfZ4FMdfoztkLLBZIbsaF9Kn0B6mwX49AxO3+WOQthG7nR+4teyM5ZSgQcyzPRW1JkYtFmsitSEVPA0QeGKG3BjyVdB5oOTz2D7yj0i9tRbKcH4HL+m1m57troGLEYKat2YhlkjWDrkb7wuIqCirFF+9o34voW3lPt+GBx/9nOiz7Zor88eawuUHi5JPZ3xS5HQUXLOue67zh84A2+tDpQaRLx3xQ1lD79ZZTzYbxQhYL48UoSJSAD3uAGSDrGxvIhStTSGRh2tx0R0=
19+
secure: hK0xiNDqHLXhugFvAJMjKaO16pFmGfYoin6126ewEc5tquWHARkKALIilLv9kHlolCvxV9XYvfU7a67UqYFmkehrWKSvzwoTu+Kvc4xa14ODYrhqXIgrFs1ZmdK1CcCG2LtPMDUmdde67YoXWH1V44jlqrrOa73qhawOKa+pUJXh+fOPquHXMCVpnJtUD1QBEidnMkrVbmpYnwSY9n99pL7oRE1uDx8vaLLE2EW3KL8pwSJZveGDKIpbxpnGhlNGY18cZEbUm86oJ2z5AiEVqrWqUx1WnaQUPrER2aQpNSgXCf1OUIj8Fg6SnimEA7h3Pv0t1OgHWvn906X3Q4QUGeuaKvjF+Vqhbb6A6cduMT6cbB9yeioDKSpIzPOW5fcELFHWLXfsN3DJjYRClYlGOnmyVGq1M87Q0RFl6N09Cl9Z2omWpTrsfMkFTacFiu+sPJK6UKVjJ7M1tHv0cTNTiMCkw62T+/nTJfrZdlC+cVjUzNUr1jb9pT7K3eX1m/PiQKjAW+yTedQKTa7x4Xz3yuXEF6r42aubmNLX1JDtqnEIHvRNdMC0UxkhyQLe0HO2jSHaljyML0acz/ihU77u8HTpFWlVDZ/44be81Zf53iNEd25NovLLaSa9yXN5FgewtOxYfYQZQ9A44SQhWNXSi+W7L9lkr/1cz320wyMR/ZQ=

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/)
55
and this project adheres to [Semantic Versioning](http://semver.org/).
66

7+
## [Unreleased][]
8+
### Added
9+
- PostgreSQL support
10+
711
## [0.2.1][]
812
### Fixed
913
- Name files `.gz` rather than `.gzip` to avoid `gunzip` issues

gamora/Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Always specify the point version
2-
FROM python:2.7.13-alpine
2+
FROM python:2.7.13-alpine3.6
33
44

55
# install mongodump and mongorestore
@@ -9,13 +9,16 @@ RUN echo 'http://dl-3.alpinelinux.org/alpine/edge/community' >> /etc/apk/reposit
99
libressl \
1010
mariadb-client \
1111
mongodb-tools \
12+
postgresql \
1213
&& apk add --upgrade --no-cache \
1314
expat \
1415
freetype \
1516
fontconfig \
1617
libpng \
1718
zlib
1819

20+
VOLUME ["/backups"]
21+
1922
# ADD extracts automatically
2023
# We want the side-effect
2124
ADD build.tgz /gamora

gamora/Dockerfile.build

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Always specify the point version
2-
FROM python:2.7.13-alpine
2+
FROM python:2.7.13-alpine3.6
33
44

55
# install mongodump and mongorestore
@@ -9,6 +9,7 @@ RUN echo 'http://dl-3.alpinelinux.org/alpine/edge/community' >> /etc/apk/reposit
99
libressl \
1010
mariadb-client \
1111
mongodb-tools \
12+
postgresql \
1213
&& apk add --upgrade --no-cache \
1314
expat \
1415
freetype \

gamora/apset.sh

Lines changed: 0 additions & 48 deletions
This file was deleted.

gamora/docker-entrypoint.sh

Lines changed: 61 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ log() {
77
echo "[$(date)] $message" 1>&2
88
}
99

10+
upload_backup() {
11+
local filename=$1
12+
local remote_path
13+
14+
if [[ -z "${SOFTLAYER_PATH:-}" ]]; then
15+
log "Skipping upload because no Softlayer credentials"
16+
return
17+
fi
18+
19+
remote_path="${SOFTLAYER_PATH:?}/$(date +%Y/%m)"
20+
21+
log "Uploading backup"
22+
monsoon ${NOTIFICATION_SETTINGS} upload softlayer \
23+
-u "${SOFTLAYER_USER}" \
24+
-p "${SOFTLAYER_API_KEY}" \
25+
-d "${SOFTLAYER_DATACENTER}" \
26+
-c "${SOFTLAYER_CONTAINER}" \
27+
/tmp/"${filename:?}" \
28+
"${remote_path:?}/${filename:?}" \
29+
&& rm -f /tmp/"${filename:?}"
30+
log "Done: Uploading backup"
31+
}
32+
1033
back_up_mongo() {
1134
if [[ -z "${MONGO_HOST:-}" ]]; then
1235
log "Skip backing up Mongo because no Mongo host specified"
@@ -24,16 +47,7 @@ back_up_mongo() {
2447
--gzip
2548
log "Done: Taking mongo backup"
2649

27-
log "Uploading mongo backup"
28-
monsoon ${NOTIFICATION_SETTINGS} upload softlayer \
29-
-u "${SOFTLAYER_USER}" \
30-
-p "${SOFTLAYER_API_KEY}" \
31-
-d "${SOFTLAYER_DATACENTER}" \
32-
-c "${SOFTLAYER_CONTAINER}" \
33-
/tmp/"${FILENAME}" \
34-
"${REMOTE_PATH}/${FILENAME}" \
35-
&& rm -f /tmp/"${FILENAME}"
36-
log "Done: Uploading mongo backup"
50+
upload_backup "${FILENAME:?}"
3751
}
3852

3953
back_up_mysql() {
@@ -56,16 +70,41 @@ back_up_mysql() {
5670
"--password=${MYSQL_PASSWORD:?}"
5771
log "Done: Taking mysql backup"
5872

59-
log "Uploading mysql backup"
60-
monsoon ${NOTIFICATION_SETTINGS} upload softlayer \
61-
-u "${SOFTLAYER_USER}" \
62-
-p "${SOFTLAYER_API_KEY}" \
63-
-d "${SOFTLAYER_DATACENTER}" \
64-
-c "${SOFTLAYER_CONTAINER}" \
65-
/tmp/"${FILENAME}" \
66-
"${REMOTE_PATH}/${FILENAME}" \
67-
&& rm -f /tmp/"${FILENAME}"
68-
log "Done: Uploading mysql backup"
73+
upload_backup "${FILENAME:?}"
74+
}
75+
76+
# PGDATABASE: gru,nsa,picard,pony,savant,sentry,usher
77+
# PGHOST: slave
78+
# PGPASSWORD: ...
79+
# PGPORT: '5432'
80+
# PGUSER: dswb
81+
82+
back_up_postgresql() {
83+
local databases
84+
if [[ -z "${PGHOST:-}" ]]; then
85+
log "Skip backing up PostgreSQL because no PostgreSQL host specified"
86+
return
87+
fi
88+
89+
databases="$(echo ${PGDATABASE} | tr ',' ' ')"
90+
91+
for database in $databases; do # TODO
92+
FILENAME=postgresql_backup_$(date +"%Y%m%d_%H%M%S").archive.gz
93+
94+
log "Taking mysql backup"
95+
monsoon ${NOTIFICATION_SETTINGS} backup postgresql \
96+
--output=/tmp/"${FILENAME}" \
97+
--gzip \
98+
--all-databases \
99+
--single-transaction \
100+
"--host=${MYSQL_HOST:?}" \
101+
"--port=${MYSQL_PORT:?}" \
102+
"--user=${MYSQL_USER:?}" \
103+
"--password=${MYSQL_PASSWORD:?}"
104+
log "Done: Taking mysql backup"
105+
106+
upload_backup "${FILENAME:?}"
107+
done
69108
}
70109

71110
back_up_files() {
@@ -82,18 +121,7 @@ back_up_files() {
82121
${BACKUP_LOCAL_PATHS:?} # space-separated list
83122
log "Done: Taking file backup"
84123

85-
ls -la /tmp
86-
87-
log "Uploading file backup"
88-
monsoon ${NOTIFICATION_SETTINGS} upload softlayer \
89-
-u "${SOFTLAYER_USER}" \
90-
-p "${SOFTLAYER_API_KEY}" \
91-
-d "${SOFTLAYER_DATACENTER}" \
92-
-c "${SOFTLAYER_CONTAINER}" \
93-
/tmp/"${FILENAME}" \
94-
"${REMOTE_PATH}/${FILENAME}" \
95-
&& rm -f /tmp/"${FILENAME}"
96-
log "Done: Uploading file backup"
124+
upload_backup "${FILENAME:?}"
97125
}
98126

99127
main() {
@@ -109,6 +137,6 @@ if [[ -n ${SENTRY_DSN:-} ]]; then
109137
NOTIFICATION_SETTINGS="-n sentry --sentry-dsn=${SENTRY_DSN}"
110138
fi
111139

112-
REMOTE_PATH="${SOFTLAYER_PATH:?}/$(date +%Y/%m)"
140+
113141

114142
main

gamora/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ monsoon-cli==0.1.7
44
monsoon-backup-files==0.1.3
55
monsoon-backup-mongo==0.1.1
66
monsoon-backup-mysql==0.1.3
7+
monsoon-backup-postgresql==0.1.0
78
monsoon-notifier-sentry==0.1.3
89
monsoon-upload-softlayer==0.1.5
910
raven==5.32.0

0 commit comments

Comments
 (0)