MySQL adatbázisok mentése

Adatbázis kiszolgálók üzemeltetőjeként az egyik legfontosabb - ha nem a legfontosabb - feladatod az adatbázisok rendszeres mentése - és adott esetben azok visszaállítása - lesz. A cél eléréséhez természetesen többféle eszközt is hadrendbe állíthatsz. Az alábbiakban az AutoMySQLBackup nevű programot fogjuk felhasználni az adatbázisaink napi, heti és havi rendszerességgel történő elmentéséhez. A programot az előzőekben már felépített webszerverünkre fogjuk feltelepíteni, amely egy WordPress, egy Joomla! és egy Drupal tartalomkezelő rendszer, valamint egy ILIAS és egy Moodle e-learning keretrendszer adatbázisait is tartalmazza.

Telepítés

Először is töltsük le és tömörítsük ki a programot az alábbi módon:

cd /tmp
mkdir automysqlbackup
wget http://sourceforge.net/projects/automysqlbackup/files/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz/download -O automysqlbackup-v3.0_rc6.tar.gz
tar -xzvf ./automysqlbackup-v3.0_rc6.tar.gz -C ./automysqlbackup
cd automysqlbackup

A mappa az alábbi fájlokat tartalmazza:

drwxr-xr-x 2 root root  4096 Dec 21 11:52 .
drwxrwxrwt 9 root root  4096 Dec 21 11:52 ..
-rwx------ 1 root root 89097 Dec  3  2011 automysqlbackup
-rw------- 1 root root 11858 Nov 21  2011 automysqlbackup.conf
-rw------- 1 root root  9221 Nov 24  2011 CHANGELOG
-rwx------ 1 root root 21028 Dec  3  2011 install.sh
-rw------- 1 root root 18091 Aug 29  2011 LICENSE
-rw------- 1 root root  7016 Nov 19  2011 README

A README fájl tartalmaz minden szükséges információt a telepítésre vonatkozóan, így érdemes elolvasni. Ennek alapján a telepítés az alábbi lépésekből áll:

  1. Lefuttatjuk az install.sh szkriptet
  2. Testreszabjuk a /etc/automysqlbackup/myserver.conf fájlt
  3. Kipróbáljuk a mentés folyamatát
  4. A Cron szolgáltatás segítségével beütemezzük a szkript futását
  5. Örülünk...

Futtassuk le az install szkriptet:

/tmp/automysqlbackup/install.sh

A telepítés az alábbiak szerint történik:

### Checking archive files for existence, readability and integrity.
automysqlbackup ... exists and is readable ... md5sum okay :)
automysqlbackup.conf ... exists and is readable ... md5sum okay :)
README ... exists and is readable ... md5sum okay :)
LICENSE ... exists and is readable ... md5sum okay :)

Select the global configuration directory [/etc/automysqlbackup]:
Select directory for the executable [/usr/local/bin]:
### Creating global configuration directory /etc/automysqlbackup:

success

### Copying files.

if you are running automysqlbackup under the same user as you run this install script,
you should be able to access it by running 'automysqlbackup' from the command line.
if not, you have to check if 'echo $PATH' has /usr/local/bin in it

Setup Complete!

Konfigurálás

Készítsük el a mentésre szolgáló mappát (amit egyébként érdemes egy külön partícióra elhelyezni):

mkdir -p /backup/mariadb

Telepítsük fel az alábbi programokat, így a mentésnél a tömörítés több processzormagot is munkára foghat:

aptitude install pigz pbzip2

Itt az idő testre szabni a /etc/automysqlbackup/myserver.conf fájlt. A legfontosabb paraméterek:

CONFIG_mysql_dump_username = 'root'
CONFIG_mysql_dump_password = 'Pa$$w0rd'
CONFIG_mysql_dump_host = 'localhost'
CONFIG_mysql_dump_host_friendly = 'webserver.comega7.local'
CONFIG_backup_dir = '/backup/mariadb'
CONFIG_multicore = 'yes'
CONFIG_multicore_threads = 2
CONFIG_db_names = ()
CONFIG_db_month_names = ()
CONFIG_db_exclude=('information_schema' 'performance_schema')
CONFIG_do_monthly="01"
CONFIG_do_weekly="5"
CONFIG_rotation_daily=6
CONFIG_rotation_weekly=35
CONFIG_rotation_monthly=150
CONFIG_mysql_dump_socket='/var/run/mysqld/mysqld.sock'
CONFIG_mysql_dump_single_transaction = 'yes'
CONFIG_mysql_dump_full_schema = 'yes'
CONFIG_mysql_dump_dbstatus = 'yes'
CONFIG_mysql_dump_create_database = 'yes'
CONFIG_mysql_dump_use_separate_dirs = 'yes'
CONFIG_mysql_dump_compression = 'bzip2'
CONFIG_mysql_dump_latest = 'yes'
CONFIG_mysql_dump_latest_clean_filenames = 'yes'
CONFIG_mailcontent = 'log'
CONFIG_mail_address = 'root'
umask 0077

A fenti paraméterek csak iindulási pontként szolgálnak, amennyiben gyors megoldást szeretnél. A fájl gazdagon el van látva megjegyzésekkel, így mindenképpen olvasd végig ezeket, és az egyes paramétereket a saját igényeidet figyelembe véve állítsd be.

Próbáljuk ki!

Próbáljuk ki a szkriptet:

/usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

A képernyőn ez látható:

Parsed config file "/etc/automysqlbackup/automysqlbackup.conf"
# Checking for permissions to write to folders:
base folder /backup ... exists ... ok.
backup folder /backup/mariadb ... exists ... writable? yes. Proceeding.

Kicsit megtévesztő lehet, hogy az automysqlbackup.conf fájlra hivatkozik, de minden paramétert figyelembe vesz, amelyet a myserver.conf fájlban beállítottunk. A megadott e-mail címre pedig az alábbi levél érkezett:

checking directory "/backup/mariadb/daily" ... creating ... success.
checking directory "/backup/mariadb/weekly" ... creating ... success.
checking directory "/backup/mariadb/monthly" ... creating ... success.
checking directory "/backup/mariadb/latest" ... creating ... success.
checking directory "/backup/mariadb/tmp" ... creating ... success.
checking directory "/backup/mariadb/fullschema" ... creating ... success.
checking directory "/backup/mariadb/status" ... creating ... success.
Cleaning up latest directory ... success.

# Testing for installed programs
pbzip2 ... found.
mysql ... found.
mysqldump ... found.
mail ... found.

# Parsing databases ... done.
======================================================================
AutoMySQLBackup version 3.0
http://sourceforge.net/projects/automysqlbackup/

Backup of Database Server - webserver.comega7.local
Databases - drupal,ilias,joomla,moodle,mysql,wordpress
Databases (monthly) - drupal,ilias,joomla,moodle,mysql,wordpress
======================================================================
======================================================================
Dump full schema.

Rotating 4 month backups for

======================================================================

======================================================================
Dump status.

Rotating 4 month backups for

======================================================================

Backup Start Time Mon Dec 21 11:17:05 CET 2015
======================================================================
Daily Backup ...

Daily Backup of Database ( drupal )
Rotating 6 day backups for drupal
----------------------------------------------------------------------
Daily Backup of Database ( ilias )
Rotating 6 day backups for ilias
----------------------------------------------------------------------
Daily Backup of Database ( joomla )
Rotating 6 day backups for joomla
----------------------------------------------------------------------
Daily Backup of Database ( moodle )
Rotating 6 day backups for moodle
----------------------------------------------------------------------
Daily Backup of Database ( mysql )
Rotating 6 day backups for mysql
----------------------------------------------------------------------
Daily Backup of Database ( wordpress )
Rotating 6 day backups for wordpress
----------------------------------------------------------------------

Backup End Time Mon Dec 21 11:17:14 CET 2015
======================================================================
Total disk space used for backup storage...
Size - Location
1.7M /backup/mariadb

======================================================================

Azaz a program szemmel láthatóan teszi a dolgát. Érdemes belenézni a /backup/mariadb mappába is, hogy milyen mappastruktúrában készült el az adatbázisok mentése. Innentől pedig Rád van bízva, hogy az elmentett adatbázis-fájlokkal mit teszel a továbbiakban (például az rsync segítségével a teljes /backup/mariadb mappát átlövöd egy másik szerverre).

Időzítés

Végül a Cron segítségével időzítsük a szkript futását egy megfelelőnek tartott időpontra. A /etc/crontab fájlba illesszük be az alábbi sort:

25 0    * * *    root    /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Vagyis a szkript minden nap hajnali 0:25-kor lefut, és emailben értesít arról, hogy mit végzett el érted.