Zoeken op website

Een back-up maken/herstellen van MySQL/MariaDB en PostgreSQL met behulp van 'Automysqlbackup' en 'Autopostgresqlbackup' tools


Als u een databasebeheerder (DBA) bent of verantwoordelijk bent voor het onderhouden, back-uppen en herstellen van databases, weet u dat u het zich niet kunt veroorloven gegevens te verliezen. De reden is simpel: gegevensverlies betekent niet alleen het verlies van belangrijke informatie, maar kan uw bedrijf ook financieel beschadigen.

Zorg er daarom altijd voor dat:

1. Er wordt periodiek een back-up van uw databases gemaakt,
2. deze back-ups worden op een veilige plaats bewaard, en
3. je voert regelmatig hersteloefeningen uit.

Deze laatste activiteit mag niet over het hoofd worden gezien, omdat u niet tegen een groot probleem aan wilt lopen zonder te hebben geoefend wat er in een dergelijke situatie moet gebeuren.

In deze tutorial laten we u kennismaken met twee handige hulpprogramma's om respectievelijk een back-up te maken van MySQL/MariaDB en PostgreSQL databases: automysqlbackup en autopostgresqlbackup.

Omdat dit laatste gebaseerd is op het eerste, zullen we onze uitleg concentreren op automysqlbackup en eventuele verschillen met autopgsqlbackup benadrukken, als die er al zijn.

Het wordt ten zeerste aanbevolen om de back-ups op te slaan op een netwerkshare die in de back-upmap is geplaatst, zodat u in het geval van een systeembrede crash nog steeds gedekt bent.

Lees de volgende nuttige handleidingen over MySQL:

MySQL-/MariaDB-/PostgreSQL-databases installeren

1. In deze handleiding wordt ervan uitgegaan dat de instantie MySQL/MariaDB/PostgreSQL actief moet zijn. Als dit niet het geval is, installeer dan de installatie de volgende pakketten:

Op Fedora gebaseerde distributies:

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

Debian en derivaten:

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

2. U beschikt over een MySQL/MariaDB/PostgreSQL testdatabase die u kunt gebruiken (u wordt geadviseerd om < strong style="color:red">NIET automysqlbackup of autopostgresqlbackup gebruiken in een productieomgeving totdat u bekend bent met deze tools).

Maak anders twee voorbeelddatabases en vul deze met gegevens voordat u doorgaat. In dit artikel zal ik de volgende databases en tabellen gebruiken:

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 en autopgsqlbackup installeren in CentOS 7 en Debian 8

3. In Debian 8 zijn beide tools beschikbaar in de repositories, dus het installeren ervan is net zo eenvoudig als het uitvoeren ervan:

aptitude install automysqlbackup autopostgresqlbackup

Terwijl je in CentOS 7 de installatiescripts moet downloaden en uitvoeren. In de onderstaande secties zullen we ons uitsluitend concentreren op het installeren, configureren en testen van deze tools op CentOS 7, aangezien we voor Debian 8 – waar ze bijna out-of-the-box werken, verderop in dit artikel de nodige verduidelijkingen aanbrengen.

Automysqlbackup installeren en configureren in CentOS 7

4. Laten we beginnen met het maken van een werkmap binnen /opt om het installatiescript te downloaden en uit te voeren:

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. Het configuratiebestand voor automysqlbackup bevindt zich in /etc/automysqlbackup onder de naam myserver.conf. Laten we eens kijken naar de meest relevante configuratierichtlijnen:

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"

Zodra u automysqlbackup heeft geconfigureerd volgens uw behoeften, raden wij u ten zeerste aan om het README bestand te bekijken dat u kunt vinden in /etc/automysqlbackup/README.

MySQL-databaseback-up

6. Als je er klaar voor bent, voer je het programma uit, waarbij je het configuratiebestand als argument doorgeeft:

automysqlbackup /etc/automysqlbackup/myserver.conf

Een snelle inspectie van de map dagelijks zal aantonen dat automysqlbackup succesvol is uitgevoerd:

pwd
ls -lR daily

Natuurlijk kunt u een crontab-item toevoegen om automysqlbackup uit te voeren op een tijdstip dat het beste bij uw behoeften past (1:30 elke dag in het onderstaande voorbeeld):

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

Een MySQL-back-up herstellen

7. Laten we nu met opzet de database mariadb_db verwijderen:

Laten we het opnieuw maken en de back-up herstellen. Typ in de MariaDB-prompt:

CREATE DATABASE mariadb_db;
exit

Zoek vervolgens:

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

En herstel de back-up:

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 installeren en configureren in CentOS 7

8. Om ervoor te zorgen dat autopostgresql feilloos werkt in CentOS 7, moeten we eerst een aantal afhankelijkheden installeren:

yum install mutt sendmail

Laten we dan het proces herhalen zoals voorheen:

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

Laten we het script uitvoerbaar maken en de service starten/inschakelen:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Ten slotte zullen we de waarde van de back-upmapinstelling bewerken naar:

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

Nadat u het configuratiebestand van automysqlbackup heeft doorlopen, is het configureren van deze tool heel eenvoudig (dat deel van de taak wordt aan u overgelaten).

9. In CentOS 7, in tegenstelling tot Debian 8, kan autopostgresqlbackup het beste worden uitgevoerd als postgres systeemgebruiker, dus om dat te doen moet u naar dat account overschakelen of een cron-taak aan het crontab-bestand toevoegen:

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

De back-upmap moet trouwens worden aangemaakt en de rechten en groepseigendom moeten recursief worden ingesteld op 0770 en postgres (nogmaals, dit zal NIET nodig zijn in Debian):

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

Het resultaat:

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

10. Nu kunt u de bestanden indien nodig herstellen (vergeet niet dit te doen als gebruikerspostgres nadat u de lege database opnieuw hebt gemaakt):

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

Overwegingen in Debian 8

Zoals we eerder vermeldden, is niet alleen de installatie van deze tools in Debian eenvoudiger, maar ook hun respectieve configuraties. U vindt de configuratiebestanden in:

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

Samenvatting

In dit artikel hebben we uitgelegd hoe je automysqlbackup en autopostgresqlbackup installeert en gebruikt (als je leert hoe je de eerste gebruikt, kun je ook de tweede onder de knie krijgen), twee geweldige databaseback-ups tools die uw taken als DBA of systeembeheerder/engineer veel eenvoudiger kunnen maken.

Houd er rekening mee dat u dit onderwerp kunt uitbreiden door e-mailmeldingen in te stellen of back-upbestanden als bijlage via e-mail te verzenden. Dit is niet strikt vereist, maar kan soms van pas komen.

Als laatste opmerking: onthoud dat de rechten van configuratiebestanden op het minimum moeten worden ingesteld (in de meeste gevallen 0600). Wij zijn benieuwd wat u van dit artikel vindt. Laat het ons gerust weten via onderstaand formulier.