lut 1 2009
Prosty backup serwera MySQL
Potrzeba matką wynalazków, więc jak zwykle podczas mojej dziwnej pracy pojawił się problem robienia jakiegoś ładnego i prostego backupu całego serwera MySQL – oczywiście można zastosować mysql-dump, ale to nam zrzuca wszystko, zwykle potrzebne nam są poszczególne bazy danych, a zdrugiej strony wpisywanie każdego usera i hasła z palca mija się z celem.
Założenia są znane, chcemy mieć kopię wszystkich tabel w osobnych plikach, do tego znamy hasło roota MySQLa. Przykładowy skrypt który tutaj pokazuje, napisany jest w perlu bo, bo tak mi było najwygodniej. Nie jest optymalny, jest baaardzo prosty, ale doskonale się sprawdza. Backup tworzony jest w strukturze data_wykonania/nazwa_tabeli.sql.gz w zadanym katalogu.
Potrzebujemy dwoch bibliotek perlowych, MySQL i DateTime, w Debianie możemy je ściągnąc przez polecenia:
apt-get install libdbd-mysql-perl
apt-get install libdatetime-perl
We FreeBSD trzeba też dociągnąć sobie odpowiednie biblioteki.
/usr/ports/databases/p5-Mysql
Sam skrypt znajduje się poniżej, celowo nie zrobiłem go jako załacznik bo wymaga kilku linijek konfiguracji:
#!/usr/bin/perl -w
use strict;
use Mysql;
use DateTime;
# troche zmiennych
$conf_host = „127.0.0.1″;
$conf_user = „root”;
$conf_pw = „”;
$conf_database = ‘mysql’;
# troche sciezek
$conf_backup_dir = „/mnt/mysql/”;
$conf_mysqldump = ‘/usr/local/bin/mysqldump’;
$conf_gzup = ‘/bin/gzip’;
# laczymy sie z baza
$db = Mysql->connect($conf_host, $conf_database, $conf_user, $conf_pw);
# sprawdzamy polaczenie
if (!$db) {
print „Nie udalo sie polaczyc z baza”;
die();
}
# pobieram dzisiejsza date i robie katalog
$dt = DateTime->now;
$data = $dt->ymd(‘-’);
#sklejamy sciezke
$backup_dir = $conf_backup_dir . $data;
mkdir($backup_dir);
# listuje bazy danych i robie dump
$execute = $db->query(„SHOW DATABASES;”);
while (@results = $execute->fetchrow()) {
$baza = $results[0];
print „Baza: $baza\n”;
print system($conf_mysqldump . ” -u $user -p$pw $baza > $backup_dir/$baza.sql”);
print system($conf_gzip . ” $backup_dir/$baza.sql”);
}



Ostatnie komentarze