Kuidas varundada/taastada MySQL/MariaDB ja PostgreSQL, kasutades Automysqlbackup ja Autopostgresqlbackup Tools


Kui olete andmebaasi administraator (DBA) või olete vastutav andmebaaside hooldamise, varundamise ja taastamise eest, teate, et teil pole andmete kaotamise võimalust. Põhjus on lihtne: andmete kaotamine ei tähenda mitte ainult olulise teabe kadu, vaid võib ka teie äri rahaliselt kahjustada.

Sel põhjusel peate alati veenduma, et:

1. teie andmebaasidest tehakse regulaarselt varukoopiaid,
2. need varukoopiad on salvestatud kindlasse kohta ja
3. teete regulaarselt taastamisõppusi.

Seda viimast tegevust ei tohiks tähelepanuta jätta, sest te ei soovi sattuda suurte probleemide juurde ilma, et oleksite harjutanud, mida sellises olukorras tuleb teha.

Selles õpetuses tutvustame teile kahte toredat utiliiti vastavalt MySQL/MariaDB ja PostgreSQL andmebaaside varundamiseks: automysqlbackup ja autopostgresqlbackup.

Kuna viimane põhineb esimesel, keskendume oma selgituses automysqlbackupile ja toome välja erinevused autopgsqlbackupiga, kui neid üldse on.

On tungivalt soovitatav varukoopiad salvestada varukataloogi paigaldatud võrgujaoskonda, nii et kogu süsteemi krahhi korral oleksite ikkagi kaetud.

Lugege MySQL-ist järgmisi kasulikke juhendeid:

MySQL/MariaDB/PostgreSQL andmebaaside installimine

1. Selles juhendis eeldatakse, et teil peab olema MySQL/MariaDB/PostgreSQL eksemplar. Kui ei, installige palun järgmised paketid:

# 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. Teil on testitav MySQL/MariaDB/PostgreSQL andmebaas, mida saate kasutada (soovitatakse EI kasuta tootmiskeskkonnas kas automysqlbackup ega autopostgresqlbackup, kuni olete nende tööriistadega tutvunud).

Muul juhul looge enne jätkamist kaks näidisandmebaasi ja täitke need andmetega. Selles artiklis kasutan järgmisi andmebaase ja tabeleid:

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 ja autopgsqlbackup installimine CentOS 7 ja Debian 8

3. Debian 8-s on mõlemad tööriistad hoidlates saadaval, nii et nende installimine on sama lihtne kui käivitamine:

# aptitude install automysqlbackup autopostgresqlbackup

CentOS 7-s peate installikriptid alla laadima ja neid käivitama. Allpool olevates jaotistes keskendume eranditult nende tööriistade installimisele, seadistamisele ja testimisele CentOS 7-s, kuna Debian 8 puhul - kus need peaaegu toimivad kastist väljas, teeme vajalikud selgitused selles artiklis hiljem.

4. Alustame sellest, et loome töökoodi /opt sisse töökataloogi, et installiprogramm alla laadida ja see käivitada:

# 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. Automysqlbackupi konfiguratsioonifail asub/etc/automysqlbackup-is nime all myserver.conf. Vaatame kõige asjakohasemaid seadistamisdirektiive:

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

Kui olete Automysqlbackupi vastavalt oma vajadustele konfigureerinud, soovitame tungivalt vaadata faili README, mis asub kataloogis/etc/automysqlbackup/README.

6. Kui olete valmis, käivitage programm ja edastage argument konfiguratsioonifail:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Igapäevase kataloogi kiire kontroll näitab, et automysqlbackup on edukalt töötanud:

# pwd
# ls -lR daily

Muidugi saate lisada crontab-kirje, et käivitada automysqlbackup teie vajadustele kõige paremini vastaval kellaajal (allpool toodud näites iga päev kell 1:30 hommikul):

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

7. Nüüd loobume mariadb_db andmebaasist tahtlikult:

Looge see uuesti ja taastage varukoopia. Tippige MariaDB viipasse:

CREATE DATABASE mariadb_db;
exit

Seejärel leidke:

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

Ja taastage varukoopia:

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

Autopostgresqlbackupi installimine ja konfigureerimine CentOS 7-s

8. Selleks, et autopostgresql CentOS 7-s laitmatult töötaks, peame kõigepealt installima mõned sõltuvused:

# yum install mutt sendmail

Seejärel laseb protsessi korrata nagu varem:

# 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

Võimaldab skripti käivitatavaks muuta ja teenust käivitada/lubada:

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

Lõpuks muudame varukataloogi sätte väärtuseks:

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

Pärast automysqlbackupi konfiguratsioonifaili läbimist on selle tööriista konfigureerimine väga lihtne (see osa ülesandest jääb teie otsustada).

9. CentOS 7-s, erinevalt Debian 8-st, on autopostgresqlbackup kõige parem käivitada postgres-süsteemi kasutajana, nii et selleks peaksite kas sellele kontole üle minema või lisama cron-faili selle crontab-faili:

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

Varukataloog, muide, tuleb luua ja selle õigused ning rühma omandiõigus peavad olema rekursiivselt seatud väärtusele 0770 ja postgres (jällegi pole see Debianis vajalik):

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

Tulemus:

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

10. Nüüd saate failid vajadusel taastada (pidage meeles, et pärast tühja andmebaasi taastamist tehke seda kasutaja postgres):

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

Kaalutlused Debianis 8

Nagu me varem mainisime, pole nende tööriistade installimine Debianis lihtsam, vaid ka nende vastavad seadistused. Konfiguratsioonifailid leiate:

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

Kokkuvõte

Selles artiklis oleme selgitanud, kuidas installida ja kasutada automysqlbackupi ja autopostgresqlbackupi (esimese kasutamise õppimine aitab teil õppida ka teist), kahte suurepärast andmebaasi varundamise tööriista, mis aitavad teie ülesandeid teha DBA või süsteemiadministraatori/insenerina palju lihtsam.

Pange tähele, et saate seda teemat laiendada, seadistades e-posti teatised või saates varundusfailid manusena e-posti teel - see pole rangelt nõutav, kuid võib mõnikord olla kasulik.

Viimase märkusena pidage meeles, et konfiguratsioonifailide õigused peaksid olema minimaalsed (enamikul juhtudel 0600). Ootame huviga, mida arvate sellest artiklist. Heitke meile julgelt märge, kasutades allolevat vormi.