Difference between revisions of "Cedeus DB backups"

From stgo
Jump to: navigation, search
(Result Summary of GeoNode Data DB Backup)
Line 3: Line 3:
  
 
== How to set up Backups ==
 
== How to set up Backups ==
 +
 +
The backups contain several steps. Usually they consist of:
 +
# create a script that contain commands to
 +
#* create a database dump =or= tar/zip the files in a particular folder
 +
#* copy this dump file or zip archive to another machine from where it can be easily copied to portable medium, i.e. tape
 +
# create a cron tab entry that runs the backup script(s) at some set intervall, e.g. each night at 1am
 +
 +
Below now some personal notes on how to set things up:
  
 
=== notifications ===
 
=== notifications ===
Line 12: Line 20:
 
=> '''ToDo''': Install mail program
 
=> '''ToDo''': Install mail program
  
=== dump of the GeoNode DB - on CedeusDB ===
+
=== Example : Cron Job that makes a Dump of the GeoNode DB ===
* create a shell script that contains the pgdump instructions - see /home/ssteinig/pgdbbackup.sh on CedeusDB
+
* create a shell script that contains the pgdump instructions - see for example /home/ssteinig/pgdbbackup.sh on CedeusDB
 
* test if script or script execution actually works. A simple script for testing may perhaps be this (/home/ssteinig/touchy.sh)
 
* test if script or script execution actually works. A simple script for testing may perhaps be this (/home/ssteinig/touchy.sh)
 
*: <code>
 
*: <code>
Line 26: Line 34:
 
* to see what the cron tab contains use "<code>crontab -l</code>"
 
* to see what the cron tab contains use "<code>crontab -l</code>"
  
==== File transfer ====
+
=== Dump example script geonodegisdb93backup.sh ===
To tranfers files I decided, for safety reasons, to create a new cedeus backup user on the receiving computer (20xxb...p).
+
 
+
A file transfer can be accomplished using '''scp''' or better '''rsync''' e.g.:
+
*: "<code>scp /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/</code>"
+
** However, a ssh key should be generated first so no password needs to be provided. A detailed dscription can be found on: http://troy.jdmz.net/rsync/index.html
+
** in short do "<code>ssh-keygen -t rsa -b 2048 -f /home/thisuser/cron/thishost-rsync-key</code>". But do '''not''' provide a pass phrase when generating it, otherwise it will always asked for it when establishing a connection.
+
** Then copy the key to the other servers users .ssh folder (using scp), and add it to the authorized_keys. (Note, the authorized_keys should be chmod 700).
+
** Then we would use "<code>scp -i /home/ssteinig/cron/thishost-rsync-key /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/</code>"
+
** note that it is probably necessary to initialize a server connection once (with whatever file), so the connection gets an ECDDSA key fingerprint.
+
* having my ssh keys setup, the code for syncing the cedeusdb directory with '''rsync''' would be
+
** "<code>...ToDo...</code>"
+
 
+
==== Example geonodegisdb93backup.sh ====
+
 
<code>
 
<code>
 
  #!/bin/bash
 
  #!/bin/bash
Line 60: Line 55:
 
For a better Postgres dump script it may be worth to look here: https://wiki.postgresql.org/wiki/Automated_Backup_on_Linux
 
For a better Postgres dump script it may be worth to look here: https://wiki.postgresql.org/wiki/Automated_Backup_on_Linux
  
==== Result Summary of GeoNode Data DB Backup ====
+
=== File transfer ===
 +
To tranfers files I decided, for safety reasons, to create a new cedeus backup user on the receiving computer (20xxb...p).
 +
 
 +
A file transfer can be accomplished using '''scp''' or better '''rsync''' e.g.:
 +
*: "<code>scp /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/</code>"
 +
** However, a ssh key should be generated first so no password needs to be provided. A detailed dscription can be found on: http://troy.jdmz.net/rsync/index.html
 +
** in short do "<code>ssh-keygen -t rsa -b 2048 -f /home/thisuser/cron/thishost-rsync-key</code>". But do '''not''' provide a pass phrase when generating it, otherwise it will always asked for it when establishing a connection.
 +
** Then copy the key to the other servers users .ssh folder (using scp), and add it to the authorized_keys. (Note, the authorized_keys should be chmod 700).
 +
** Then we would use "<code>scp -i /home/ssteinig/cron/thishost-rsync-key /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/</code>"
 +
** note that it is probably necessary to initialize a server connection once (with whatever file), so the connection gets an ECDDSA key fingerprint.
 +
* having my ssh keys setup, the code for syncing the cedeusdb directory with '''rsync''' would be
 +
** "<code>...ToDo...</code>"
 +
 
 +
 
 +
== Performed Backups ==
 +
 
 +
=== Dump of the GeoNode DB - on CedeusDB ===
  
 
* server: CedeusDB
 
* server: CedeusDB

Revision as of 18:45, 4 December 2014

>> return to Cedeus_IDE


How to set up Backups

The backups contain several steps. Usually they consist of:

  1. create a script that contain commands to
    • create a database dump =or= tar/zip the files in a particular folder
    • copy this dump file or zip archive to another machine from where it can be easily copied to portable medium, i.e. tape
  2. create a cron tab entry that runs the backup script(s) at some set intervall, e.g. each night at 1am

Below now some personal notes on how to set things up:

notifications

To get notified about the backups via email, a/the shell script may send emails via "mailx" - i.e Nail. => see http://klenwell.com/press/2009/03/ubuntu-email-with-nail/

Btw. postfix may work as well

=> ToDo: Install mail program

Example : Cron Job that makes a Dump of the GeoNode DB

  • create a shell script that contains the pgdump instructions - see for example /home/ssteinig/pgdbbackup.sh on CedeusDB
  • test if script or script execution actually works. A simple script for testing may perhaps be this (/home/ssteinig/touchy.sh)
#!/bin/bash 
touch /home/ssteinig/ftw.text

Dump example script geonodegisdb93backup.sh

#!/bin/bash
logfile="/home/ssteinig/geonode_db_backups/pgsql.log"
backup_dir="/home/ssteinig/geonode_db_backups"
touch $logfile

echo "Starting backup of databases " >> $logfile
dateinfo=`date '+%Y-%m-%d %H:%M:%S'`
timeslot=`date '+%Y%m%d-%H%M'`
/usr/bin/vacuumdb -z -h localhost -U postgres geonodegisdb93  >/dev/null 2>&1
/usr/bin/pg_dump -U postgres -i -F c -b geonodegisdb93 -h 127.0.0.1 -f $backup_dir/geonodegisdb93-backup-$timeslot.backup
echo "Backup and Vacuum complete on $dateinfo for database: geonodegisdb93 " >> $logfile
echo "Done backup of databases " >> $logfile
# sstein: email notification not used at the moment
# tail -16 /home/ssteinig/geonode_db_backups/pgsql.log | mailx blabla@blub.cl

This example is based on the shell script posted here: http://stackoverflow.com/questions/854200/how-do-i-backup-my-postgresql-database-with-cron For a better Postgres dump script it may be worth to look here: https://wiki.postgresql.org/wiki/Automated_Backup_on_Linux

File transfer

To tranfers files I decided, for safety reasons, to create a new cedeus backup user on the receiving computer (20xxb...p).

A file transfer can be accomplished using scp or better rsync e.g.:

  • "scp /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/"
    • However, a ssh key should be generated first so no password needs to be provided. A detailed dscription can be found on: http://troy.jdmz.net/rsync/index.html
    • in short do "ssh-keygen -t rsa -b 2048 -f /home/thisuser/cron/thishost-rsync-key". But do not provide a pass phrase when generating it, otherwise it will always asked for it when establishing a connection.
    • Then copy the key to the other servers users .ssh folder (using scp), and add it to the authorized_keys. (Note, the authorized_keys should be chmod 700).
    • Then we would use "scp -i /home/ssteinig/cron/thishost-rsync-key /home/ssteinig/ftw.txt user@example.com:/home/backup_user/dbbackups/"
    • note that it is probably necessary to initialize a server connection once (with whatever file), so the connection gets an ECDDSA key fingerprint.
  • having my ssh keys setup, the code for syncing the cedeusdb directory with rsync would be
    • "...ToDo..."


Performed Backups

Dump of the GeoNode DB - on CedeusDB

  • server: CedeusDB
  • cron job running nightly at 1:00am
  • using the script geonodegisdb93backup.sh
  • copies the PG dump file to CedeusGeoNode into folder /home/cedeusdbbackupuser/geonodedbbackups/
    => ToDo: perhaps change this last step and copy it to cedeusgis1 for straight backup on a drive

dump of the GeoNode user db - on CedeusGeonode VM

blabla

tar/zip of the (uploaded) GeoNode file data and docs - on CedeusGeonode Vm

blabla

MySQL dump for Elgg miCiudad - on CedeusGeonode VM

blabla

tar/zip of the (uploaded) Elgg miCiudad files - on CedeusGeonode VM

blabla

MySQL dump for Mediawiki(s) - on CedeusGeonode VM

blabla