Vyhledávání na webu

Jak zálohovat/obnovit MySQL/MariaDB a PostgreSQL pomocí nástrojů „Automysqlbackup“ a „Autopostgresqlbackup“


Pokud jste správce databáze (DBA) nebo odpovídáte za údržbu, zálohování a obnovu databází, víte, že si nemůžete dovolit přijít o data. Důvod je jednoduchý: ztráta dat znamená nejen ztrátu důležitých informací, ale může také finančně poškodit vaše podnikání.

Z toho důvodu se musíte vždy ujistit, že:

1. vaše databáze jsou pravidelně zálohovány,
2. tyto zálohy jsou uloženy na bezpečném místě a
3. pravidelně provádíte restaurátorské vrtání.

Tuto poslední aktivitu byste neměli přehlížet, protože nechcete narazit na zásadní problém, aniž byste si nacvičili, co je v takové situaci potřeba udělat.

V tomto tutoriálu vám představíme dva pěkné nástroje pro zálohování databází MySQL/MariaDB a PostgreSQL: automysqlbackup a autopostgresqlbackup.

Protože druhý je založen na prvním, zaměříme se v našem vysvětlení na automysqlbackup a zdůrazníme rozdíly s autopgsqlbackup, pokud vůbec nějaké jsou.

Důrazně se doporučuje ukládat zálohy do síťové sdílené složky připojené v adresáři záloh, abyste v případě selhání celého systému byli stále chráněni.

Přečtěte si následující užitečné průvodce MySQL:

Instalace databází MySQL/MariaDB/PostgreSQL

1. Tato příručka předpokládá, že musíte mít spuštěnou instanci MySQL/MariaDB/PostgreSQL. Pokud ne, nainstalujte následující balíčky:

Distribuce založené na Fedoře:

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

Debian a odvozeniny:

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

2. Máte testovací databázi MySQL/MariaDB/PostgreSQL, kterou můžete použít (doporučujeme < strong style="color:red">NEPOUŽÍVEJTE v produkčním prostředí automysqlbackup ani autopostgresqlbackup, dokud se s těmito nástroji neseznámíte).

V opačném případě vytvořte dvě vzorové databáze a naplňte je daty, než budete pokračovat. V tomto článku budu používat následující databáze a tabulky:

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

Instalace automysqlbackup a autopgsqlbackup v CentOS 7 a Debian 8

3. V Debianu 8 jsou oba nástroje dostupné v repozitářích, takže jejich instalace je stejně jednoduchá jako spuštění:

aptitude install automysqlbackup autopostgresqlbackup

Zatímco v CentOS 7 si budete muset stáhnout instalační skripty a spustit je. V níže uvedených částech se zaměříme výhradně na instalaci, konfiguraci a testování těchto nástrojů na CentOS 7, protože pro Debian 8 – kde fungují téměř ihned po vybalení udělejte potřebná vysvětlení dále v tomto článku.

Instalace a konfigurace automysqlbackup v CentOS 7

4. Začněme vytvořením pracovního adresáře v /opt, kde si stáhneme instalační skript a spustíme jej:

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. Konfigurační soubor pro automysqlbackup se nachází v /etc/automysqlbackup pod názvem myserver.conf. Podívejme se na nejrelevantnější konfigurační směrnice:

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"

Jakmile nakonfigurujete automysqlbackup podle svých potřeb, důrazně vám doporučujeme podívat se na soubor README, který najdete v /etc/automysqlbackup/README.

Zálohování databáze MySQL

6. Až budete připraveni, spusťte program a předejte konfigurační soubor jako argument:

automysqlbackup /etc/automysqlbackup/myserver.conf

Rychlá kontrola denního adresáře ukáže, že automysqlbackup proběhl úspěšně:

pwd
ls -lR daily

Samozřejmě můžete přidat položku crontab pro spuštění automysqlbackup v denní dobu, která nejlépe vyhovuje vašim potřebám (1:30 každý den v níže uvedeném příkladu):

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

Obnovení zálohy MySQL

7. Nyní schválně vynechme databázi mariadb_db:

Vytvoříme jej znovu a obnovíme zálohu. Do řádku MariaDB zadejte:

CREATE DATABASE mariadb_db;
exit

Poté vyhledejte:

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

A obnovit zálohu:

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;

Instalace a konfigurace autopostgresqlbackup v CentOS 7

8. Aby autopostgresql v CentOS 7 bezchybně fungoval, budeme muset nejprve nainstalovat některé závislosti:

yum install mutt sendmail

Poté zopakujeme postup jako dříve:

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

Udělejme skript spustitelným a spusťte/povolte službu:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Nakonec upravíme hodnotu nastavení záložního adresáře na:

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

Po prostudování konfiguračního souboru automysqlbackup je konfigurace tohoto nástroje velmi snadná (tato část úkolu je ponechána na vás).

9. V CentOS 7, na rozdíl od Debianu 8, je autopostgresqlbackup nejlépe spouštět jako postgres systémového uživatele, takže abyste to mohli udělat, měli byste se buď přepnout na tento účet, nebo přidat úlohu cron do jeho souboru crontab:

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

Záložní adresář je mimochodem potřeba vytvořit a jeho oprávnění a vlastnictví skupiny musí být nastaveno rekurzivně na 0770 a postgres (opět to NEBUDE nutné v Debian):

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

Výsledek:

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

10. Nyní můžete v případě potřeby obnovit soubory (nezapomeňte to udělat jako uživatel postgres po opětovném vytvoření prázdné databáze):

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

Úvahy v Debianu 8

Jak jsme již uvedli dříve, nejen instalace těchto nástrojů v Debianu je jednodušší, ale také jejich příslušné konfigurace. Konfigurační soubory najdete v:

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

souhrn

V tomto článku jsme vysvětlili, jak nainstalovat a používat automysqlbackup a autopostgresqlbackup (naučení se, jak používat první, vám pomůže zvládnout i druhé), dvě skvělé zálohy databáze nástroje, které vám mohou výrazně usnadnit úkoly jako DBA nebo správce/inženýr systému.

Upozorňujeme, že toto téma můžete rozšířit nastavením e-mailových upozornění nebo odesláním záložních souborů jako příloh e-mailem – není to nezbytně nutné, ale někdy se může hodit.

Jako poslední poznámku nezapomeňte, že oprávnění konfiguračních souborů by měla být nastavena na minimum (ve většině případů 0600). Těšíme se na váš názor na tento článek. Neváhejte nám napsat poznámku pomocí formuláře níže.