[MySQL] Kopie zapasowe baz danych

0

Mam zainstalowaną bazę MySQL 5.0. Musze w programie który pisze w Delphi dodać moduł exportu/importu kopi zapasowych.

Czy można same pliki z dysku kopiować w inne miejsce, a operacja przywracania będzie się ograniczać do przekopiowania wcześniej skopiowanych plików?
Czy trzeba pisać własnych mechanizm eksportu?

0

Kopie w MySQL możesz tworzyć przez:

• Zastosowanie skrypty mysqldump (bywa że są problemy jeżeli używasz poskich znaków)
mysqldump –opt -u nazwa_uzytkownika – p haslo baza_danych > kopia.sql

• Zastosowanie skryptu mysqlhotcopy – który kopiuje plik z wybranej bazy danych
mysqlhotcopy –u nazwa_uzytkownika nazwa_bazydanych polozenie_kopii

• Samodzielne skopiowanie plików danych. Podobne do mysqlhotcopy, ale pliki kopiujesz ręcznie. Przy tej opcji jednak musisz zamknąć całą bazę danych, albo zamknąć wszystkie tabele i opróżnić bufor zapytań a następnie zablokować tabele przed kopiowaniem.

0

Mam zainstalowana baza danych na systemie Vista. Kiedy probuje wykonac polecenie mysqldump, otrzymuje komunikat Access is denied. Myslalem ze to wina składni polecenia, szukalem w googlach i probowalem roznych wariantow. Login podaje root, sprawdzalem dla pewnosci haslo i z konsoli mozna sie zalogowac do mysql'a.
Wiec wykluczyc trzeba bledne haslo oraz nieprawidlowo skaldnie polecenia. Co jeszcze moze byc przyczyna?

Wygląda na to, że to wina braku uprawnień zapisu do katalogu gdzie ma zostac zapisany plik wysciowy backup.sql.

0

Próboje wykonać mysqldump z poziomu Delphi poprzez ShellExecute. Mysqldump odpala sie poprawnie, przyjmuje hasło i login, jednak, wyrzuca komunikat Coudn't find table: ">" . > nie jest tabelą, > ma za zadanie przekierować wynik działania mysqldumpa do pliku.

tresc:=DumpFile.sciezka;
 tresc2:='--user=' + config.uzytkownik + ' --password=' + config.haslo + ' --opt ' + Form1.ComboBox1.Text + ' > "'+GetCurrentDir+'\Backup\' + Form1.ComboBox1.Text + '_' + FormatDateTime('dd.mm.yyyy', Today) + '.sql"';
ShellExecute(Form1.Handle, nil, PChar(tresc), PChar(tresc2),nil ,SW_SHOW);

Jak przekierować dane wyjściowe do pliku?

0

co jest pod Form1.ComboBox1.Text
i co to jest --opt?

ja robię to tak:
mysqldump --host=HOST --user=USER --password=PASS DBNAME > DBNAME.ext

0

--opt nazwabazy - tworzy kopię bazy nazwabazy wraz z rozszerzonymi informacjami MySQL, blokowaniem tabel, itd. Chyba najczęściej stosowana opcja przy robieniu kopii zapasowych.

Pod Form1.ComboBox1.Text znajduje się nazwa bazy danych.
Wpisanie takiego polecenia w CMD mysqldump --host=HOST --user=USER --password=PASS DBNAME > DBNAME.ext działa poprawnie. Ale jak to wywołać z poiomu ShellExecute?

0

Doszedłem do wnionie da się przekierować danych wyjściowych za pomocą ShellExecute inaczej niż poprzez pliki *.bat.
Najpierw zapisujemy polecenie w bat a następnie za pomocą ShellExecute wykonujemy bata. Rozwiązanie trochę mało oszczędne w ilości operacji wykanych przez procesor, ale innego wyjścia nie widzę.

0

Po prostu nie ShellExecute, a CreateProcess i przekazywanie wyników jakoś tam się robi (deus na forum to pisał, sam dzisiaj widziałem).

  • nie deus, a adf88: http:*4programmers.net/Forum/viewtopic.php?id=117836

1 użytkowników online, w tym zalogowanych: 0, gości: 1