Możliwości wykonywania kopii zapasowych baz danych MySQL jest wiele. To w jaki sposób robimy backupy zależy w dużej mierze od rodzaju bazy danych, której używamy – Oracle MySQL, Percona, etc, jej architektury – standalone, cluster, replikacja, a nawet od rodzaju tabel – myisam, innodb, etc. Jako że na co dzień pracuję z bazami Percona, w różnych konfiguracjach, najczęściej posługuję się mechanizmami dostarczonymi przez tą właśnie firmę, czyli głównie skryptem innobackupex, który de-facto jest nakładką na program xtrabackup.
Xtrabackup to bardzo fajne narzędzie o ogromnych możliwościach, ale nie o tym jest ten wpis. Aby zrobić poprawny backup (taki, z którego łatwo będzie przywrócić dane) przy użyciu xtrabackup, trzeba się wczytać w dokumentację i trochę nagimnastykować. Dlatego też sama Percona udostępniła nakładkę w postaci skryptu innobackupex. Skrypt ten ułatwia niezmiernie wykonywanie kopii zapasowych. Jeśli wykonujesz za każdym razem pełną kopię zapasową – innobackupex jest dokładnie tym co powinieneś użyć. Jeśli jednak chcesz robić kopie przyrostowe, i tylko co jakiś czas pełną kopię, a do tego chcesz cały proces zautomatyzować – najlepiej jednym wpisem w cronie, to innobackupex też wymaga trochę zabawy.
Dla tego przygotowałem nakładkę na innobackupex, skrypt o nazwie backupex.php, który wywołuje się podając tylko ścieżkę do katalogu z backupami, login i hasło do bazy, a skrypt sam tworzy pełny backup w cyklach dziennych i przyrostowe backupy w ciągu dnia. Częstotliwość przyrostowych backupów w ciągu dnia zależy tylko od częstotliwości wywołania skryptu w cronie.
Skrypt w podanej ścieżce tworzy katalog o nazwie zawierającej bieżącą datę w postaci: yyyy-mm-dd, a następnie w nim katalog „full”, który zawiera pełny backup i katalogi „inc1”, „inc2”, „incX”, które zawierają kolejne backupy przyrostowe. Skrypt wywołuje się zawsze tak samo:
php backupex.php --path=FULL/BACKUP/PATH --dbuser=DBUSERNAME --dbpass=DBPASSWORD
a on automatycznie sprawdza, czy pełny backup istnieje (i ewentualnie go robi) i tworzy sobie kolejne backupy przyrostowe względem najnowszego – pełna automatyzacja :).
Pobierz backupex.zip