Kuinka varmuuskopioida/palauttaa MySQL/MariaDB ja PostgreSQL Automysqlbackup- ja Autopostgresqlbackup-työkaluilla


Jos olet tietokannan järjestelmänvalvoja (DBA) tai olet vastuussa tietokantojen ylläpidosta, varmuuskopioinnista ja palauttamisesta, tiedät, ettei sinulla ole varaa menettää tietoja. Syy on yksinkertainen: tietojen menettäminen ei tarkoita vain tärkeiden tietojen menettämistä, vaan se voi myös vahingoittaa liiketoimintaasi taloudellisesti.

Tästä syystä sinun on aina varmistettava, että:

1. tietokantoistasi tehdään varmuuskopiot säännöllisesti,
2. nämä varmuuskopiot säilytetään turvallisessa paikassa ja
3. suoritat kunnostusharjoituksia säännöllisesti.

Tätä viimeistä toimintaa ei pidä jättää huomiotta, koska et halua törmätä suureen ongelmaan ilman, että olet harjoitellut, mitä tällaisessa tilanteessa on tehtävä.

Tässä opetusohjelmassa esittelemme sinulle kaksi mukavaa apuohjelmaa MySQL/MariaDB- ja PostgreSQL-tietokantojen varmuuskopiointiin: automysqlbackup ja autopostgresqlbackup.

Koska jälkimmäinen perustuu edelliseen, keskitymme selityksemme automysqlbackupiin ja korostamme eroja autopgsqlbackup -sovelluksella, jos sellaisia on.

On erittäin suositeltavaa tallentaa varmuuskopiot verkko-osuuteen, joka on asennettu varmuuskopiohakemistoon, jotta järjestelmän laajuisen kaatumisen sattuessa olet silti suojassa.

Lue seuraavat hyödylliset MySQL-oppaat:

MySQL/MariaDB/PostgreSQL-tietokantojen asentaminen

1. Tässä oppaassa oletetaan, että sinulla on oltava MySQL/MariaDB/PostgreSQL -esiintymä käynnissä. Jos ei, asenna seuraavat paketit:

Fedora-pohjaiset jakelut:

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

Debian ja johdannaiset:

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

2. Sinulla on testattava MySQL/MariaDB/PostgreSQL-tietokanta, jota voit käyttää (sinun on suositeltavaa < strong style="color:red">ÄLÄ käytä joko automysqlbackupia tai autopostgresqlbackupia tuotantoympäristössä ennen kuin olet tutustunut näihin työkaluihin).

Muussa tapauksessa luo kaksi esimerkkitietokantaa ja täytä ne tiedoilla ennen kuin jatkat. Tässä artikkelissa käytän seuraavia tietokantoja ja taulukoita:

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

Automysqlbackupin ja autopgsqlbackupin asentaminen CentOS 7:ään ja Debian 8:aan

3. Debian 8:ssa molemmat työkalut ovat saatavilla arkistoissa, joten niiden asentaminen on yhtä helppoa kuin suorittaminen:

aptitude install automysqlbackup autopostgresqlbackup

Sen sijaan CentOS 7:ssä sinun on ladattava asennusskriptit ja suoritettava ne. Seuraavissa osioissa keskitymme yksinomaan näiden työkalujen asentamiseen, määrittämiseen ja testaamiseen CentOS 7 -käyttöjärjestelmässä, sillä Debian 8 -käyttöjärjestelmässä, jossa ne toimivat melkein heti, Tee tarvittavat selvennykset myöhemmin tässä artikkelissa.

Automysqlbackupin asentaminen ja määrittäminen CentOS 7:ssä

4. Aloitetaan luomalla työhakemisto kohtaan /opt asennusohjelman lataamista ja suorittamista varten:

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. automysqlbackupin määritystiedosto sijaitsee kohdassa /etc/automysqlbackup nimellä myserver.conf. Katsotaanpa tärkeimpiä konfigurointiohjeita:

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"

Kun olet määrittänyt automysqlbackupin tarpeidesi mukaan, sinun kannattaa tutustua README-tiedostoon, joka löytyy osoitteesta /etc/automysqlbackup/README.

MySQL-tietokannan varmuuskopiointi

6. Kun olet valmis, suorita ohjelma ja välitä määritystiedosto argumenttina:

automysqlbackup /etc/automysqlbackup/myserver.conf

Nopea tarkastus päivittäiseen hakemistoon osoittaa, että automysqlbackup on suoritettu onnistuneesti:

pwd
ls -lR daily

Voit tietysti lisätä crontab-merkinnän suorittaaksesi automysqlbackupin tarpeitasi parhaiten vastaavaan aikaan (1:30 joka päivä alla olevassa esimerkissä):

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

MySQL-varmuuskopion palauttaminen

7. Pudotetaan nyt mariadb_db tietokanta tarkoituksella:

Luodaan se uudelleen ja palautetaan varmuuskopio. Kirjoita MariaDB-kehotteeseen:

CREATE DATABASE mariadb_db;
exit

Etsi sitten:

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

Ja palauta varmuuskopio:

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;

Autopostgresqlbackupin asentaminen ja määrittäminen CentOS 7:ssä

8. Jotta autopostgresql toimisi virheettömästi CentOS 7:ssä, meidän on ensin asennettava joitain riippuvuuksia:

yum install mutt sendmail

Toistetaan sitten prosessi kuten ennen:

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

Tehdään komentosarjasta suoritettava ja käynnistetään/otetaan käyttöön palvelu:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Lopuksi muokkaamme varmuuskopiohakemistoasetuksen arvoksi:

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

Kun olet käynyt läpi automysqlbackup-määritystiedoston, tämän työkalun määrittäminen on erittäin helppoa (se osa tehtävästä on sinun tehtäväsi).

9. CentOS 7:ssä, toisin kuin Debian 8:ssa, autopostgresqlbackup toimii parhaiten postgres-muodossa. järjestelmän käyttäjä, joten sen tekemiseksi sinun tulee joko vaihtaa kyseiselle tilille tai lisätä cron-työ sen crontab-tiedostoon:

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

Varmuuskopiohakemisto on muuten luotava ja sen käyttöoikeudet ja ryhmän omistajuus on asetettava rekursiivisesti arvoihin 0770 ja postgres (tätä EI tarvita taas Debian):

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

Lopputulos:

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

10. Nyt voit palauttaa tiedostot tarvittaessa (muista tehdä tämä käyttäjän postgres-tilassa tyhjän tietokannan uudelleenluonnin jälkeen):

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

Huomioitavaa Debian 8:ssa

Kuten aiemmin mainitsimme, ei vain näiden työkalujen asentaminen Debianiin ole yksinkertaisempaa, vaan myös niiden vastaavat kokoonpanot. Löydät asetustiedostot osoitteesta:

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

Yhteenveto

Tässä artikkelissa olemme selostaneet, kuinka asentaa ja käyttää automysqlbackupia ja autopostgresqlbackupia (ensimmäisen käytön oppiminen auttaa hallitsemaan myös toisen). työkaluja, jotka voivat tehdä tehtävistäsi DBA- tai järjestelmänvalvojana/insinöörinä paljon helpompaa.

Huomaa, että voit laajentaa tätä aihetta määrittämällä sähköposti-ilmoituksia tai lähettämällä varmuuskopiotiedostoja sähköpostin liitteinä – se ei ole ehdottoman välttämätöntä, mutta voi joskus olla hyödyllistä.

Viimeisenä huomautuksena muista, että määritystiedostojen käyttöoikeudet tulee asettaa minimiin (0600 useimmissa tapauksissa). Odotamme innolla, mitä mieltä olet tästä artikkelista. Voit vapaasti jättää meille huomautuksen alla olevalla lomakkeella.