Wéi Backup/Restauréieren MySQL/MariaDB a PostgreSQL Mat Automysqlbackup an Autopostgresqlbackup Tools


Wann Dir en Datebankadministrator (DBA) sidd oder verantwortlech sidd fir Datenbanken z'erhalen, ze backen an ze restauréieren, wësst Dir datt Dir Iech net leeschte kënnt Daten ze verléieren. De Grond ass einfach: Date verléieren heescht net nëmmen de Verloscht vu wichtegen Informatioun, mee kann och Äre Betrib finanziell beschiedegen.

Aus deem Grond musst Dir ëmmer sécher sinn datt:

1. Är Datenbanken ginn op enger periodescher Basis gebackupt,
2. déi Backupe ginn op enger sécherer Plaz gespäichert, an
3. Dir maacht regelméisseg Restauratiounsübungen.

Dës lescht Aktivitéit däerf net iwwersinn, well Dir wëllt net an e gréissert Thema lafen ouni geübt ze hunn wat an esou enger Situatioun gemaach muss ginn.

An dësem Tutorial wäerte mir Iech zwee flott Utilities virstellen fir MySQL/MariaDB an PostgreSQL Datenbanken ze backen, respektiv: automysqlbackup an autopostgresqlbackup.

Well déi lescht op der fréierer baséiert, fokusséiere mir eis Erklärung op automysqlbackup an Highlight Differenzen mat autopgsqlbackup, wann iwwerhaapt.

Et ass staark recommandéiert d'Backups an engem Netzdeel ze späicheren, deen am Backup-Verzeichnis montéiert ass, sou datt Dir am Fall vun engem Systembreet Crash nach ëmmer ofgedeckt sidd.

Liest folgend nëtzlech Guiden op MySQL:

MySQL/MariaDB/PostgreSQL Datebanken installéieren

1. Dëse Guide gëtt ugeholl datt Dir MySQL/MariaDB/PostgreSQL Instanz muss lafen, Wann net, installéiere w.e.g. déi folgend Packagen:

# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Dir hutt eng Test MySQL/MariaDB/PostgreSQL Datebank datt Dir benotze kënnt (Dir sidd ugeroden NET entweder automysqlbackup oder autopostgresqlbackup an engem Produktiounsëmfeld ze benotzen bis Dir mat dësen Tools vertraut hutt).

Soss, erstellt zwou Probe Datenbanken a populéiert se mat Daten ier Dir weider geet. An dësem Artikel wäert ech déi folgend Datenbanken an Dëscher benotzen:

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);

Installéiert automysqlbackup an autopgsqlbackup an CentOS 7 an Debian 8

3. Am Debian 8 si béid Tools an de Repositories verfügbar, sou datt se installéiert ass sou einfach wéi lafen:

# aptitude install automysqlbackup autopostgresqlbackup

Wou am CentOS 7 Dir musst d'Installatiounsskripter eroflueden an se ausféieren. An de Sektiounen hei drënner konzentréiere mir eis exklusiv op d'Installatioun, d'Konfiguratioun an d'Test vun dësen Tools op CentOS 7 well fir Debian 8 - wou se bal aus der Këscht funktionnéieren, wäerte mir déi néideg Erklärungen méi spéit an dësem Artikel maachen.

4. Loosst eis ufänken mat engem Aarbechtsverzeichnis bannent /opt ze kreéieren fir den Installatiounsskript erofzelueden an et auszeféieren:

# 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. D'Konfiguratiounsdatei fir automysqlbackup ass bannent /etc/automysqlbackup ënner dem Numm myserver.conf. Loosst eis déi relevantst Konfiguratiounsdirektive kucken:

# 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"

Wann Dir automysqlbackup no Äre Bedierfnesser konfiguréiert hutt, sidd Dir staark berode fir d'README Datei ze kucken, déi an /etc/automysqlbackup/README fonnt gëtt.

6. Wann Dir prett sidd, gitt vir a lafen de Programm, andeems Dir d'Konfiguratiounsdatei als Argument passéiert:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Eng séier Inspektioun vum deegleche Verzeechnes weist datt automysqlbackup erfollegräich gelaf ass:

# pwd
# ls -lR daily

Natierlech kënnt Dir e Crontab-Entrée derbäi fir Automysqlbackup zu enger Zäit vum Dag ze lafen, déi Äre Besoinen am Beschten entsprécht (1:30 all Dag am Beispill hei ënnen):

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

7. Loosst eis elo d'Mariadb_db Datebank op Zweck falen:

Loosst eis et erëm erstellen an de Backup restauréieren. An der MariaDB Prompt, gitt:

CREATE DATABASE mariadb_db;
exit

Dann lokaliséieren:

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

A restauréiert de Backup:

# 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 an CentOS 7 installéieren an konfiguréieren

8. Fir datt Autopostgresql flawless am CentOS 7 funktionnéiert, musse mir als éischt e puer Ofhängegkeeten installéieren:

# yum install mutt sendmail

Da loosst de Prozess widderhuelen wéi virdrun:

# 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

Loosst eis de Skript ausféierbar maachen an de Service starten/aktivéieren:

# chmod 755 autopostgresqlbackup.sh
# systemctl start postgresql
# systemctl enable postgresql

Endlech wäerte mir de Wäert vun der Backup-Verzeichnis-Astellung änneren op:

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

Nodeems Dir d'Konfiguratiounsdatei vun automysqlbackup duerchgefouert hutt, ass dëst Tool ganz einfach ze konfiguréieren (deen Deel vun der Aufgab ass un Iech iwwerlooss).

9. Am CentOS 7, am Géigesaz zum Debian 8, ass autopostgresqlbackup am beschten als de Postgres System Benotzer ausgeführt, also fir dat ze maachen, sollt Dir entweder op dee Kont wiesselen oder eng Cron Job op seng Crontab Datei addéieren:

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

De Backup-Verzeichnis muss iwwregens erstallt ginn a seng Permissiounen a Gruppebesëtzer musse rekursiv op 0770 a postgres gesat ginn (erëm, dëst wäert NET an Debian néideg sinn):

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

D'Resultat:

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

10. Elo kënnt Dir d'Fichier'en restauréieren wann néideg (erënnert Iech dëst als Benotzer postgres ze maachen nodeems Dir déi eidel Datebank nei erstallt hutt):

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

Iwwerleeungen am Debian 8

Wéi mir virdru scho gesot hunn, ass net nëmmen d'Installatioun vun dësen Tools an Debian méi einfach, awer och hir jeeweileg Konfiguratiounen. Dir fannt d'Konfiguratiounsdateien an:

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

Resumé

An dësem Artikel hu mir erkläert wéi Dir Automysqlbackup an Autopostgresqlbackup installéiere a benotzt (léiere wéi Dir déi éischt benotzt hëlleft Iech och déi zweet ze beherrschen), zwee super Datebank Backup Tools déi Är Aufgaben als DBA oder Systemadministrator/Ingenieur maachen kënnen vill méi einfach.

Notéiert w.e.g. datt Dir dëst Thema ausbaue kënnt andeems Dir E-Mail Notifikatiounen opstellt oder Backupdateien als Uschlëss per E-Mail schéckt - net strikt erfuerderlech, awer kann heiansdo praktesch kommen.

Als lescht Notiz, erënnert datt d'Permissiounen vun de Konfiguratiounsdateien op de Minimum gesat ginn (0600 an de meeschte Fäll). Mir freeën eis ze héieren wat Dir iwwer dësen Artikel denkt. Fillt eis gratis eng Notiz mat dem Formulaire hei drënner ze schécken.