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


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

Siksi sinun on aina varmistettava, että:

1. tietokannoista tehdään varmuuskopiot säännöllisin väliajoin,
2. nämä varmuuskopiot tallennetaan turvalliseen paikkaan ja
3. teet palautusharjoituksia säännöllisesti.

Tätä viimeistä toimintaa ei pidä unohtaa, koska et halua törmätä tärkeään ongelmaan ilman, että olet harjoittanut mitä on tehtävä tällaisessa tilanteessa.

Tässä opetusohjelmassa esitellään sinulle kaksi mukavaa apuohjelmaa MySQL/MariaDB- ja PostgreSQL-tietokantojen varmuuskopioimiseksi: automysqlbackup ja autopostgresqlbackup.

Koska jälkimmäinen perustuu edelliseen, keskitymme selityksemme automysqlbackupiin ja korostamme mahdollisia eroja autopgsqlbackupin kanssa.

On erittäin suositeltavaa tallentaa varmuuskopiot varmuuskopiohakemistoon asennettuun verkko-osaan, jotta koko järjestelmän kaatumisen sattuessa sinut katetaan.

Lue seuraavat hyödylliset oppaat MySQL: stä:

MySQL/MariaDB/PostgreSQL-tietokantojen asentaminen

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

# 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. Sinulla on testattava MySQL/MariaDB/PostgreSQL-tietokanta, jota voit käyttää (sinua kehotetaan ÄLÄ käyttämään 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 jatkamista. 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: een ja Debian 8: een

3. Debian 8: ssa molemmat työkalut ovat käytettävissä arkistoissa, joten niiden asentaminen on yhtä helppoa kuin ajaminen:

# aptitude install automysqlbackup autopostgresqlbackup

CentOS 7: ssä sinun on ladattava asennusohjelmat ja suoritettava ne. Seuraavissa osioissa keskitymme yksinomaan näiden työkalujen asentamiseen, konfigurointiin ja testaamiseen CentOS 7: ssä, koska Debian 8: lle - missä ne melkein toimivat alusta alkaen, teemme tarvittavat selvitykset myöhemmin tässä artikkelissa.

4. Aloitetaan luomalla työhakemisto /opt -sivulle lataamaan asennusohjelma ja suorittamalla se:

# 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. Automysqlbackup-määritystiedosto sijaitsee/etc/automysqlbackup -kohdassa nimellä myserver.conf. Katsotaanpa tärkeimmät määritysdirektiivit:

# 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 automaattisen varmuuskopioinnin tarpeidesi mukaan, suosittelemme tarkistamaan README-tiedoston, joka löytyy tiedostosta/etc/automysqlbackup/README.

6. Kun olet valmis, mene eteenpäin ja suorita ohjelma, välittämällä määritystiedosto argumenttina:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Päivittäisen hakemiston nopea tarkastus osoittaa, että automysqlbackup on onnistunut:

# pwd
# ls -lR daily

Tietenkin voit lisätä crontab-merkinnän automaattisen varmuuskopioinnin suorittamiseksi kellonaikaan, joka sopii parhaiten tarpeisiisi (alla olevassa esimerkissä kello 1.30 joka päivä):

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

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 moitteettomasti CentOS 7: ssä, meidän on ensin asennettava joitain riippuvuuksia:

# yum install mutt sendmail

Toistetaan sitten prosessi kuten aiemmin:

# 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

Antaa komentosarjan suorittaa suoritettavaksi ja käynnistää/ottaa palvelun käyttöön:

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

Lopuksi muokkaamme varmuuskopiohakemiston asetuksen arvoksi:

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

Kun olet käynyt läpi automysqlbackupin määritystiedoston, tämän työkalun määrittäminen on erittäin helppoa (osa tehtävästä jätetään sinulle).

9. CentOS 7: ssä, toisin kuin Debian 8, autopostgresqlbackup on parasta suorittaa postgres-järjestelmän käyttäjänä, joten sinun on joko vaihdettava kyseiselle tilille tai lisättävä cron-työ sen crontab-tiedostoon:

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

Varmuuskopiohakemisto on muuten luotava ja sen käyttöoikeuksiksi ja ryhmän omistajuudeksi on asetettava rekursiivisesti arvoksi 0770 ja postgres (tämä ei taaskään ole tarpeen Debianissa):

# 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 postgreinä tyhjän tietokannan luomisen jälkeen):

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

Huomioita Debianissa 8

Kuten aiemmin mainitsimme, näiden työkalujen asentaminen Debianissa on suoraviivaisempaa, mutta myös niiden kokoonpanot. Konfigurointitiedostot ovat:

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

Yhteenveto

Tässä artikkelissa olemme selittäneet kuinka asentaa ja käyttää automysqlbackup ja autopostgresqlbackup (ensimmäisen käyttämisen oppiminen auttaa sinua hallitsemaan myös toisen), kaksi upeaa tietokannan varmuuskopiointityökalua, jotka voivat tehdä tehtävistäsi DBA: n tai järjestelmänvalvojan/insinöörin paljon helpompi.

Huomaa, että voit laajentaa tätä aihetta määrittämällä sähköposti-ilmoituksia tai lähettämällä varmuuskopiotiedostoja liitteinä sähköpostitse - ei ehdottomasti vaadita, mutta se voi olla hyödyllistä joskus.

Viimeisenä huomautuksena, muista, että määritystiedostojen käyttöoikeudet tulisi asettaa minimiin (useimmissa tapauksissa 0600). Odotamme mielellämme, mitä mieltä olet tästä artikkelista. Voit vapaasti pudottaa meille muistiinpanon alla olevan lomakkeen avulla.