Zamknięcie bazy SQL

0

Witam

Nie wiem czy to jest odpowiedni dział na moje pytanie, ale mam nadzieję że tak. Potrzebuję napisać program(Delphi lub C++) który będzie działał lokalnie i będzie robił cykliczną kopię plików bazy danych SQL na dysku wymiennym. Wymaga to jednak wyłączenia serwera(w tym przypadku będzie to Apache lub Krasnal). Teraz pytanie: w jaki sposób bezpiecznie zastopować serwer a potem go włączyć?

0
  1. Krasnal nie jest serwerem, ktora usluge w tym wypadku konkretnie chcesz wylaczac?
  2. Co rozumiesz przez 'bezpiecznie'?
  3. Czemu w ogole trzeba wylaczac Apache'a, przeciez backup bazy mozesz zrobic w locie chyba na kazdej bazie.

Skoro Krasnal to pewnie MySQL, tak? Rzuc okiem na mysqldump, o ile dobrze pamietam.

0

Z tym krasnalem mi się trochę pomieszało;) No nie wiem czy da się zrobić w locie. Próbowałem kiedyś skopiować pliki bazy(chodzi mi po prostu o skopiowanie całego foldera z bazą na inny dysk) kiedy była włączona i się nie dało, trzeba było zastopować serwer (tam był MSSQL Server). Kopiowanie kilkudziesięciu czy kilkuset MB może trwać chwilę, a przecież w tym czasie ktoś może zmodyfikować zawartość bazy więc trzeba ją zablokować dla klientów. Przez słowo 'bezpieczne' rozumiem sposób który nie powoduje ryzyka wykrzaczenia się serwera. Korzysta z niego kilka firm(serwer z fakturami) i gdyby coś padło to po prostu będzie problem na dużą skalę. Wiem że można to wszystko zrobić ręcznie ale chciałbym żeby to się odbywało automatycznie żeby nikt się tym nie musiał bawić codziennie.

0

kto Ci powiedział, że kopia bazy danych polega na skopiowaniu całego jej katalogu!!??? Słyszałeś kiedyś o czymś takim jak backup i restore, ewentualnie o backup'ie przyrostowym czy o hot backup

0

Właśnie chodzi o to że słabo znam się na bazach i sprawach z nimi związanych :( , dlatego pytam o radę. Spróbuję może użyć polecenia ShellExecute które wywoła skrypt z mysqldump(wspominał o tym johny_bravo).

0

Generalnie wykonujesz backup bazy z poziomu sql'a (polecenie backup) i juz. Nie potrzebujesz nic wylaczac, nic stopowac, itp. Co wiecej - skopiowanie samych plikow bazodanowych to rozwiazanie troche hardcorowe, bo przywrocenie takiej bazy to wiecej zachodu niz to jest warte (dane o bazie przechowane sa tez w bazie systemowej, a tej przeciez nie kopiujesz). Luknij na mysqldump, o ile pamietam to wlasnie robi odpowiedni backup 'dzialajacej' bazy tam gdzie chcesz. Nie musisz tego pisac w Delphi ani w C++, wystarczy cron (czy tez harmonogram zadan w win).

0

generalnie to by trzeba zacząć od podania nazwy SZBD bo gdybać to można i do przyszłego roku

0

Muszę napisać program, bo chcę jeszcze żeby prowadził jakieś statsy dotyczące backupu (czas, rozmiar bazy itd.) i żeby można go było wygodnie włączyć/wyłączyć przez ikonkę w trayu(często ten komputer obsługuje kobieta więc musi to być bardzo proste w obsłudze ;) ) Dzięki za naprowadzenie na dobrą drogę :-)

0

Właśnie sprawdziłem dokładnie co jest zainstalowane na tym kompie. Jest to MSSQL server, a więc niestety odpada mysqldump :( Jest jakiś odpowiednik tego na MSSQL?

0

Laczysz sie z baza, wykonujesz

backup database nazwa_bazy to disk='sciezka'

i juz.

0

Rozumiem to tak:

Łączę się z bazą za pomocą jakiegoś komponentu do obsługi baz danych, np. dbExpress. Za pomocą polecenia np. SqlQuery wydaję opisane wyżej polecenie dla serwera. Ścieżka typu "x:\cośtam" przejdzie bez problemu nawet jeżeli zaloguję się zdalnie z innego komputera?

0

Przejdzie (oczywiscie lokalna sciezka), zakladajac, ze proces mssqla ma dostep do tej lokalizacji - pamietaj, ze np. w XP mssql rusza na odrebnym koncie uzytkownika.

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