From 697aafe6b441d26eba9a63ff43ec777d704ad435 Mon Sep 17 00:00:00 2001
From: Patrick Ditzel <patrick@central-computer.de>
Date: Mon, 18 Dec 2017 12:46:52 +0000
Subject: [PATCH] Split postgres into postgres-local an d postgres remote. Get mariadb to run. Modified the finding of configurationfiles ind dbb.
---
dbb-modules/postgresql | 69 +++-------------------------------
1 files changed, 7 insertions(+), 62 deletions(-)
diff --git a/dbb-modules/postgresql b/dbb-modules/postgresql
index f50c10a..502567c 100644
--- a/dbb-modules/postgresql
+++ b/dbb-modules/postgresql
@@ -6,10 +6,6 @@
if [ ! -e /usr/bin/pg_dump ]; then
debug "It seems that you dont have psql installed. You may have problems to backup remote databases"
fi
- numberRegex='^[0-9]+$'
- if ! [[ $(id -u postgres 2>&1) =~ $numberRegex ]] ; then
- debug "It seems that you dont have the user postgres on your computer. You may have problems to backup local postgres databases"
- fi
if [ -r ~/.pgpass ]; then
debug "function check-postgresql-deps: ~/.pgpass exists, doing reomte backup."
else
@@ -18,55 +14,6 @@
fi
}
-# PostgreSQL local
-
-function pg_local_all {
- # Debugoutput id DEBUG is enabled
- debug "Dump all from Postgres local"
- # Dump all databases in one file as user postgres (Debian)
- sudo -H -i -u postgres pg_dumpall > "$TMP_DIR"/local_dumpall.pgsql
- debug "Diff alldumps from Postgres local"
- # Check if there are differences between the actual dump and the last dump
- backup_file_handler "$TMP_DIR $BACKUP_DIR" local_dumpall.pgsql
-}
-
-function pg_local_single {
- # Get a list with all databases on localhost. Do it as user postgres (Debian)
- # parallelize the following
- for DB in $(sudo -H -i -u postgres /usr/bin/psql -At -c "SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn ORDER BY datname;" postgres)
- do
- debug "Dumping local database $DB"
- # Dump each database in a single file
- sudo -H -i -u postgres /usr/bin/pg_dump -Fp "$DB" > "$TMP_DIR"/local_"$DB".pgsql
- backup_file_handler "$TMP_DIR" "$BACKUP_DIR" local_"$DB".pgsql
- echo ""
- done
-}
-
-# Do the local backupjobs
-
-function run_local_pg_backups {
- # Test if the current backupuser has access via sudo to postgres
- # This part has to be improved!
- sudo -l -U "$BACKUPUSER" | grep postgres
- if [ $? -eq 0 ];then
- # If the user has access vi sudo to postgres and a full dump is configured, do it.
- if [ "$POSTGRES_BACKUP_LOCAL_DUMP_ALL" == "TRUE" ]; then
- pg_local_all
- fi
- # If the user has access vi sudo to postgres and dumps for each database is configured , do it.
- if [ "$POSTGRES_BACKUP_LOCAL_SINGLE" == "TRUE" ]; then
- pg_local_single
- fi
- else
- # If the user is not permitted to acces the postgresdatabases vi sudo throw an errormessage
- echo "" | $LOGGER
- echo "The backupuser does not the permission to act as user postgres" | $LOGGER
- echo "Please add the following line to your /etc/sudoers:" | $LOGGER
- echo "backupuser ALL=(postgres) NOPASSWD:/usr/bin/psql,/usr/bin/pg_dump,/usr/bin/pg_dumpall" | $LOGGER
- echo "" | $LOGGER
- fi
-}
################################################################################
@@ -96,8 +43,8 @@
# I don't know if the following statement really effect to pg_dump :-(
export PGSSLMODE=require
# Dump the databases which are defined in the params
- /usr/bin/pg_dump -U "$TRGTBDUSER" -h "$TRGTHOST" -p "$TRGTPORT" "$TRGTDB" > "$TMP_DIR"/"$TRGTHOST"-"$TRGTDB".pgql
- backup_file_handler "$TMP_DIR" "$BACKUP_DIR" "$TRGTHOST"-"$TRGTDB".pgql
+ /usr/bin/pg_dump -U "$TRGTBDUSER" -h "$TRGTHOST" -p "$TRGTPORT" "$TRGTDB" > "$TMP_DIR"/"$TRGTHOST"_"$TRGTDB".pgql
+ backup_file_handler "$TMP_DIR" "$BACKUP_DIR" "$TRGTHOST"_"$TRGTDB".pgql
else
# If no encrypted connection to the postgres-server can be established throw an errormessage
echo "" | $LOGGER
@@ -118,10 +65,11 @@
# For each entry do the backup
debug "run dump with params $LINE"
# CAUTION: No doublequotes in the following line. The var $LINE has to be splittet!
- dump_remote_pgdb $LINE
- # To get the params for the function the .pgpass-file is striped from the comments,
- # the ":" are replaces against whitespaces and only the first four coloums are used
- # so we give "host port database user" to the function
+ # DO NOT DOUBLEQUOTE $LINE
+ dump_remote_pgdb $LINE
+ # To get the params for the function the .pgpass-file is striped from the comments,
+ # the ":" are replaces against whitespaces and only the first four coloums are used
+ # so we give "host port database user" to the function
done <<< "$(cat ~/.pgpass | grep -v '#' | tr ":" " " | cut -d " " -f1,2,3,4)"
else
# If the ~/.pgpass-file is missig, throw an errormessage
@@ -135,9 +83,6 @@
}
function postgresql-main {
- if [ "$POSTGRES_BACKUP_LOCAL" = "TRUE" ]; then
- run_local_pg_backups
- fi
if [ "$POSTGRES_BACKUP_REMOTE" = "TRUE" ]; then
run_remote_pg_backups
fi
--
Gitblit v1.10.0