Weboldal keresés

A MySQL/MariaDB és a PostgreSQL biztonsági mentése/visszaállítása az „Automysqlbackup” és „Autopostgresqlbackup” eszközök használatával


Ha Ön adatbázis-adminisztrátor (DBA), vagy felelős az adatbázisok karbantartásáért, biztonsági mentéséért és visszaállításáért, akkor tudja, hogy nem engedheti meg magának az adatok elvesztését. Az ok egyszerű: az adatvesztés nemcsak fontos információk elvesztését jelenti, hanem anyagi károkat is okozhat a vállalkozásában.

Emiatt mindig meg kell győződnie a következőkről:

1. adatbázisairól rendszeres időközönként biztonsági mentés készül,
2. ezeket a biztonsági másolatokat biztonságos helyen tárolja, és
3. rendszeresen végez helyreállítási gyakorlatokat.

Ez utóbbi tevékenységet nem szabad figyelmen kívül hagyni, mivel nem szeretne komolyabb problémába ütközni anélkül, hogy nem gyakorolta volna, mit kell tennie egy ilyen helyzetben.

Ebben az oktatóanyagban bemutatunk két hasznos segédprogramot a MySQL/MariaDB és a PostgreSQL adatbázisok biztonsági mentésére: automysqlbackup és autopostgresqlbackup.

Mivel az utóbbi az előbbire épül, magyarázatunkat az automysqlbackupra összpontosítjuk, és kiemeljük a különbségeket az autopgsqlbackup segítségével, ha vannak ilyenek.

Erősen ajánlott a biztonsági másolatokat a biztonsági mentési könyvtárba csatolt hálózati megosztáson tárolni, hogy rendszerszintű összeomlás esetén továbbra is védve legyen.

Olvassa el a következő hasznos útmutatókat a MySQL-ről:

MySQL/MariaDB/PostgreSQL adatbázisok telepítése

1. Ez az útmutató feltételezi, hogy futnia kell a MySQL/MariaDB/PostgreSQL példánynak. Ha nem, telepítse a következő csomagok:

Fedora alapú disztribúciók:

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

Debian és származékai:

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

2. Rendelkezik egy tesztelő MySQL/MariaDB/PostgreSQL adatbázissal, amelyet használhat (javasolt, hogy < strong style="color:red">NE használja sem az automysqlbackup-ot, sem az autopostgresqlbackup-ot éles környezetben, amíg meg nem ismeri ezeket az eszközöket).

Ellenkező esetben hozzon létre két mintaadatbázist, és töltse fel őket adatokkal a folytatás előtt. Ebben a cikkben a következő adatbázisokat és táblákat fogom használni:

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

Az automysqlbackup és az autopgsqlbackup telepítése CentOS 7 és Debian 8 rendszerben

3. A Debian 8 verzióban mindkét eszköz elérhető a tárolókban, így a telepítésük olyan egyszerű, mint a futtatás:

aptitude install automysqlbackup autopostgresqlbackup

Míg a CentOS 7 esetén le kell töltenie a telepítési szkripteket, és le kell futtatnia azokat. Az alábbi szakaszokban kizárólag ezeknek az eszközöknek a telepítésére, konfigurálására és tesztelésére összpontosítunk CentOS 7 rendszeren, mivel a Debian 8 esetében – ahol szinte már a dobozból kiindulva működnek, a cikk későbbi részében tegye meg a szükséges pontosításokat.

Az automysqlbackup telepítése és konfigurálása CentOS 7 rendszerben

4. Kezdjük azzal, hogy a /opt-ban hozzunk létre egy munkakönyvtárat a telepítőszkript letöltéséhez és futtatásához:

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. Az automysqlbackup konfigurációs fájlja az /etc/automysqlbackup mappában található myserver.conf néven. Nézzük meg a legfontosabb konfigurációs direktívákat:

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"

Miután konfigurálta az automysqlbackup szolgáltatást igényeinek megfelelően, erősen javasoljuk, hogy tekintse meg a README fájlt, amely a következő helyen található: /etc/automysqlbackup/README.

MySQL adatbázis biztonsági mentés

6. Ha készen áll, futtassa a programot, és argumentumként adja át a konfigurációs fájlt:

automysqlbackup /etc/automysqlbackup/myserver.conf

A napi könyvtár gyors ellenőrzése megmutatja, hogy az automysqlbackup sikeresen lefutott:

pwd
ls -lR daily

Természetesen hozzáadhat egy crontab bejegyzést az automysqlbackup futtatásához az igényeinek leginkább megfelelő napszakban (az alábbi példában minden nap 1:30):

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

MySQL biztonsági másolat visszaállítása

7. Most szándékosan dobjuk el a mariadb_db adatbázist:

Hozzuk létre újra, és állítsuk vissza a biztonsági másolatot. A MariaDB parancssorba írja be:

CREATE DATABASE mariadb_db;
exit

Ezután keresse meg:

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

És állítsa vissza a biztonsági másolatot:

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;

Az autopostgresqlbackup telepítése és konfigurálása a CentOS 7 rendszerben

8. Annak érdekében, hogy az autopostgresql hibátlanul működjön a CentOS 7 rendszerben, először telepítenünk kell néhány függőséget:

yum install mutt sendmail

Ezután ismételjük meg a folyamatot, mint korábban:

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

Tegyük végrehajthatóvá a szkriptet, és indítsuk el/engedélyezzük a szolgáltatást:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Végül szerkesztjük a biztonsági mentési könyvtár beállításának értékét a következőre:

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

Az automysqlbackup konfigurációs fájljának átfutása után az eszköz konfigurálása nagyon egyszerű (a feladatnak ezt a részét rád bízza).

9. A CentOS 7 rendszerben a Debian 8 helyett az autopostgresqlbackup a legjobb, mint postgres rendszerfelhasználó, ezért ehhez vagy váltson át erre a fiókra, vagy adjon hozzá egy cron feladatot a crontab fájljához:

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

A biztonsági mentési könyvtárat egyébként létre kell hozni, és a jogosultságait és a csoport tulajdonjogát rekurzív módon 0770-re és postgres-re kell állítani (ez is NEM lesz szükséges a következőben: Debian):

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

Az eredmény:

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

10. Mostantól szükség esetén visszaállíthatja a fájlokat (ne felejtse el ezt felhasználói postgresként megtenni, miután újra létrehozta az üres adatbázist):

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

Megfontolások a Debian 8-ban

Amint azt korábban említettük, nemcsak ezen eszközök telepítése a Debianban egyszerűbb, hanem a megfelelő konfigurációk is. A konfigurációs fájlokat itt találja:

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

Összegzés

Ebben a cikkben elmagyaráztuk, hogyan kell telepíteni és használni az automysqlbackup és az autopostgresqlbackup (az első használatának megtanulása segít elsajátítani a másodikat is), két nagyszerű adatbázis biztonsági mentést. eszközök, amelyek sokkal könnyebbé tehetik DBA-ként vagy rendszergazdaként/mérnökként végzett feladatait.

Kérjük, vegye figyelembe, hogy ezt a témát kibővítheti az e-mail értesítések beállításával vagy a biztonsági másolat fájlok e-mailben történő mellékletként történő elküldésével – ez nem feltétlenül kötelező, de néha hasznos lehet.

Utolsó megjegyzésként ne feledje, hogy a konfigurációs fájlok engedélyeit minimumra kell állítani (a legtöbb esetben 0600). Kíváncsian várjuk, mit gondol erről a cikkről. Nyugodtan írjon nekünk az alábbi űrlap segítségével.