Τρόπος δημιουργίας αντιγράφων ασφαλείας/επαναφοράς MySQL/MariaDB και PostgreSQL χρησιμοποιώντας τα εργαλεία «Automysqlbackup» και «Autopostgresqlbackup»


Εάν είστε διαχειριστής βάσης δεδομένων (DBA) ή είστε υπεύθυνος για τη συντήρηση, τη δημιουργία αντιγράφων ασφαλείας και την επαναφορά βάσεων δεδομένων, γνωρίζετε ότι δεν έχετε την πολυτέλεια να χάσετε δεδομένα. Ο λόγος είναι απλός: η απώλεια δεδομένων δεν σημαίνει μόνο απώλεια σημαντικών πληροφοριών, αλλά μπορεί επίσης να βλάψει την επιχείρησή σας οικονομικά.

Για το λόγο αυτό, πρέπει πάντα να βεβαιωθείτε ότι:

1. δημιουργούνται αντίγραφα ασφαλείας των βάσεων δεδομένων σας σε περιοδική βάση,
2. αυτά τα αντίγραφα ασφαλείας αποθηκεύονται σε ασφαλές μέρος και
3. εκτελείτε ασκήσεις αποκατάστασης τακτικά.

Αυτή η τελευταία δραστηριότητα δεν πρέπει να αγνοηθεί, καθώς δεν θέλετε να αντιμετωπίσετε ένα σημαντικό ζήτημα χωρίς να έχετε εξασκήσει τι πρέπει να γίνει σε μια τέτοια κατάσταση.

Σε αυτό το σεμινάριο θα σας παρουσιάσουμε δύο ωραία βοηθητικά προγράμματα για τη δημιουργία αντιγράφων ασφαλείας των βάσεων δεδομένων MySQL/MariaDB και PostgreSQL, αντίστοιχα: automysqlbackup και autopostgresqlbackup.

Εφόσον το τελευταίο βασίζεται στο πρώτο, θα επικεντρώσουμε την εξήγησή μας στο automysqlbackup και θα επισημάνουμε τις διαφορές με το autopgsqlbackup, εάν υπάρχουν.

Συνιστάται ανεπιφύλακτα η αποθήκευση των αντιγράφων ασφαλείας σε ένα κοινόχρηστο στοιχείο δικτύου που είναι τοποθετημένο στον κατάλογο αντιγράφων ασφαλείας, έτσι ώστε σε περίπτωση διακοπής λειτουργίας σε όλο το σύστημα, να είστε ακόμα καλυμμένοι.

Διαβάστε τους παρακάτω χρήσιμους οδηγούς για τη MySQL:

Εγκατάσταση βάσεων δεδομένων MySQL/MariaDB/PostgreSQL

1. Αυτός ο οδηγός προϋποθέτει ότι πρέπει να εκτελείτε την παρουσία MySQL/MariaDB/PostgreSQL. Εάν όχι, εγκαταστήστε τα παρακάτω πακέτα:

Διανομές που βασίζονται στο Fedora:

yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs

Debian και παράγωγα:

aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Έχετε μια δοκιμαστική βάση δεδομένων MySQL/MariaDB/PostgreSQL που μπορείτε να χρησιμοποιήσετε (σας συμβουλεύουμε να < strong style="color:red">ΜΗ χρησιμοποιείτε είτε automysqlbackup είτε autopostgresqlbackup σε ένα περιβάλλον παραγωγής μέχρι να εξοικειωθείτε με αυτά τα εργαλεία).

Διαφορετικά, δημιουργήστε δύο δείγματα βάσεων δεδομένων και συμπληρώστε τα με δεδομένα πριν συνεχίσετε. Σε αυτό το άρθρο θα χρησιμοποιήσω τις ακόλουθες βάσεις δεδομένων και πίνακες:

CREATE DATABASE mariadb_db;
CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, 
UserName VARCHAR(50), 
IsActive BOOL);

CREATE DATABASE postgresql_db;
CREATE TABLE tecmint_tbl (
UserID SERIAL PRIMARY KEY,
UserName VARCHAR(50),
IsActive BOOLEAN);

Εγκατάσταση automysqlbackup και autopgsqlbackup σε CentOS 7 και Debian 8

3. Στο Debian 8, και τα δύο εργαλεία είναι διαθέσιμα στα αποθετήρια, επομένως η εγκατάσταση τους είναι τόσο απλή όσο και η εκτέλεση:

aptitude install automysqlbackup autopostgresqlbackup

Ενώ στο CentOS 7 θα χρειαστεί να κατεβάσετε τα σενάρια εγκατάστασης και να τα εκτελέσετε. Στις παρακάτω ενότητες θα επικεντρωθούμε αποκλειστικά στην εγκατάσταση, τη διαμόρφωση και τη δοκιμή αυτών των εργαλείων στο CentOS 7 καθώς για το Debian 8 – όπου σχεδόν λειτουργούν εκτός συσκευασίας, θα κάντε τις απαραίτητες διευκρινίσεις αργότερα σε αυτό το άρθρο.

Εγκατάσταση και ρύθμιση παραμέτρων του automysqlbackup στο CentOS 7

4. Ας ξεκινήσουμε δημιουργώντας έναν κατάλογο εργασίας μέσα στο /opt για να κατεβάσετε το σενάριο εγκατάστασης και να το εκτελέσετε:

mkdir /opt/automysqlbackup
cd /opt/automysqlbackup
wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz
tar zxf automysqlbackup-v3.0_rc6.tar.gz
./install.sh

5. Το αρχείο διαμόρφωσης για το automysqlbackup βρίσκεται στο /etc/automysqlbackup με το όνομα myserver.conf. Ας ρίξουμε μια ματιά στις πιο σχετικές οδηγίες διαμόρφωσης:

Username to access the MySQL server
CONFIG_mysql_dump_username='root'
Password
CONFIG_mysql_dump_password='YourPasswordHere'
Host name (or IP address) of MySQL server
CONFIG_mysql_dump_host='localhost'
Backup directory
CONFIG_backup_dir='/var/backup/db/automysqlbackup'
List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... )
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_names=(AddYourDatabase Names Here)
List of databases for Monthly Backups.
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_month_names=(AddYourDatabase Names Here)
Which day do you want monthly backups? (01 to 31)
If the chosen day is greater than the last day of the month, it will be done
on the last day of the month.
Set to 0 to disable monthly backups.
CONFIG_do_monthly="01"
Which day do you want weekly backups? (1 to 7 where 1 is Monday)
Set to 0 to disable weekly backups.
CONFIG_do_weekly="5"
Set rotation of daily backups. VALUE*24hours
If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed.
CONFIG_rotation_daily=6
Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks.
CONFIG_rotation_weekly=35
Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months.
CONFIG_rotation_monthly=150
Include CREATE DATABASE statement in backup?
CONFIG_mysql_dump_create_database='no'
Separate backup directory and file for each DB? (yes or no)
CONFIG_mysql_dump_use_separate_dirs='yes'
Choose Compression type. (gzip or bzip2)
CONFIG_mysql_dump_compression='gzip'
What would you like to be mailed to you?
- log   : send only log file
- files : send log file and sql files as attachments (see docs)
- stdout : will simply output the log to the screen if run manually.
- quiet : Only send logs if an error occurs to the MAILADDR.
CONFIG_mailcontent='quiet'
Email Address to send mail to? ([email )
CONFIG_mail_address='root'
Do you wish to encrypt your backups using openssl?
#CONFIG_encrypt='no'
Choose a password to encrypt the backups.
#CONFIG_encrypt_password='password0123'
Command to run before backups (uncomment to use)
#CONFIG_prebackup="/etc/mysql-backup-pre"
Command run after backups (uncomment to use)
#CONFIG_postbackup="/etc/mysql-backup-post"

Αφού διαμορφώσετε το automysqlbackup σύμφωνα με τις ανάγκες σας, σας συμβουλεύουμε να ελέγξετε το αρχείο README που βρίσκεται στο /etc/automysqlbackup/README.

Δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων MySQL

6. Όταν είστε έτοιμοι, συνεχίστε και εκτελέστε το πρόγραμμα, περνώντας το αρχείο διαμόρφωσης ως όρισμα:

automysqlbackup /etc/automysqlbackup/myserver.conf

Μια γρήγορη επιθεώρηση του καταλόγου καθημερινά θα δείξει ότι το automysqlbackup εκτελέστηκε με επιτυχία:

pwd
ls -lR daily

Φυσικά, μπορείτε να προσθέσετε μια καταχώριση crontab για να εκτελέσετε το automysqlbackup τη στιγμή της ημέρας που ταιριάζει καλύτερα στις ανάγκες σας (1:30 π.μ. κάθε μέρα στο παρακάτω παράδειγμα):

30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Επαναφορά αντιγράφου ασφαλείας MySQL

7. Τώρα ας αφήσουμε τη βάση δεδομένων mariadb_db επίτηδες:

Ας το δημιουργήσουμε ξανά και ας επαναφέρουμε το αντίγραφο ασφαλείας. Στη γραμμή εντολών MariaDB, πληκτρολογήστε:

CREATE DATABASE mariadb_db;
exit

Στη συνέχεια, εντοπίστε:

cd /var/backup/db/automysqlbackup/daily/mariadb_db
ls

Και επαναφέρετε το αντίγραφο ασφαλείας:

mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql
mysql -u root -p
MariaDB [(none)]> USE mariadb_db; 
MariaDB [(none)]> SELECT * FROM tecmint_tb1;

Εγκατάσταση και ρύθμιση παραμέτρων του autopostgresqlbackup στο CentOS 7

8. Για να λειτουργεί άψογα το autopostgresql στο CentOS 7, θα χρειαστεί πρώτα να εγκαταστήσουμε ορισμένες εξαρτήσεις:

yum install mutt sendmail

Στη συνέχεια, ας επαναλάβουμε τη διαδικασία όπως πριν:

mkdir /opt/autopostgresqlbackup
cd /opt/autopostgresqlbackup
wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0
mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Ας κάνουμε το σενάριο εκτελέσιμο και ξεκινήσουμε/ενεργοποιήσουμε την υπηρεσία:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Τέλος, θα επεξεργαστούμε την τιμή της ρύθμισης του εφεδρικού καταλόγου σε:

BACKUPDIR="/var/backup/db/autopostgresqlbackup"

Αφού ολοκληρώσετε το αρχείο διαμόρφωσης του automysqlbackup, η διαμόρφωση αυτού του εργαλείου είναι πολύ εύκολη (αυτό το μέρος της εργασίας επαφίεται σε εσάς).

9. Στο CentOS 7, σε αντίθεση με το Debian 8, το autopostgresqlbackup εκτελείται καλύτερα ως postgres χρήστης συστήματος, οπότε για να το κάνετε αυτό θα πρέπει είτε να μεταβείτε σε αυτόν τον λογαριασμό είτε να προσθέσετε μια εργασία cron στο αρχείο crontab του:

crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Παρεμπιπτόντως, ο κατάλογος αντιγράφων ασφαλείας πρέπει να δημιουργηθεί και τα δικαιώματα και η ιδιοκτησία της ομάδας πρέπει να οριστούν αναδρομικά σε 0770 και postgres (και πάλι, αυτό ΔΕΝ θα είναι απαραίτητο σε Debian):

mkdir /var/backup/db/autopostgresqlbackup
chmod -R 0770 /var/backup/db/autopostgresqlbackup
chgrp -R postgres /var/backup/db/autopostgresqlbackup

Το αποτέλεσμα:

cd /var/backup/db/autopostgresqlbackup
pwd
ls -lR daily

10. Τώρα μπορείτε να επαναφέρετε τα αρχεία όταν χρειάζεται (θυμηθείτε να το κάνετε ως postgres του χρήστη αφού δημιουργήσετε ξανά την κενή βάση δεδομένων):

gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db

Θεωρήσεις στο Debian 8

Όπως αναφέραμε προηγουμένως, όχι μόνο η εγκατάσταση αυτών των εργαλείων στο Debian είναι πιο απλή, αλλά και οι αντίστοιχες διαμορφώσεις τους. Θα βρείτε τα αρχεία ρυθμίσεων σε:

  1. Automysqlbackup: /etc/default/automysqlbackup
  2. Autopostgresqlbackup: /etc/default/autopostgresqlbackup

Περίληψη

Σε αυτό το άρθρο εξηγήσαμε πώς να εγκαταστήσετε και να χρησιμοποιήσετε το automysqlbackup και το autopostgresqlbackup (η εκμάθηση του πρώτου θα σας βοηθήσει να κατακτήσετε και το δεύτερο), δύο εξαιρετικές βάσεις δεδομένων δημιουργίας αντιγράφων ασφαλείας εργαλεία που μπορούν να κάνουν τις εργασίες σας ως DBA ή ως διαχειριστής/μηχανικός συστήματος πολύ πιο εύκολες.

Λάβετε υπόψη ότι μπορείτε να επεκταθείτε σε αυτό το θέμα ρυθμίζοντας ειδοποιήσεις μέσω email ή στέλνοντας αρχεία αντιγράφων ασφαλείας ως συνημμένα μέσω email – δεν απαιτείται αυστηρά, αλλά μπορεί μερικές φορές να είναι χρήσιμα.

Ως τελευταία σημείωση, να θυμάστε ότι τα δικαιώματα των αρχείων διαμόρφωσης πρέπει να οριστούν στο ελάχιστο (0600 στις περισσότερες περιπτώσεις). Ανυπομονούμε να ακούσουμε τη γνώμη σας για αυτό το άρθρο. Μη διστάσετε να μας στείλετε μια σημείωση χρησιμοποιώντας την παρακάτω φόρμα.