Copierea și restaurarea unei baze de date în interbază

Se recomandă ca baza de date să fie copiată în mod regulat (copie de rezervă) și restaurată (restaurare). În acest caz, există o reordonare a indexurilor, colectarea gunoiului, utilizarea mai compactă a spațiului pe disc. În procesul de restaurare a unei baze de date dintr-o copie de rezervă, puteți modifica dimensiunea paginii, numărul și dimensiunea fișierelor bazei de date. În aceste scopuri, puteți utiliza atât utilitarul liniei de comandă gbak, cât și programul GUI, de exemplu: IBExpert sau BlazeTop (de asemenea, SQLHammer). De asemenea, puteți scrie propriul program pentru a copia și restabili baza de date.

Doar proprietarul bazei de date sau utilizatorul SYSDBA poate copia baza de date.

Orice utilizator poate restaura baza de date dintr-o copie de rezervă, dar numai proprietarul bazei de date sau utilizatorul SYSDBA poate restaura o copie în partea de sus a bazei de date existente. Acest lucru este menționat în documentație, dar experiența arată că orice utilizator poate restaura o copie peste baza de date existentă.

Dacă o bază de date este utilizată într-o rețea de mai mulți clienți, ar putea fi util să închideți baza de date înainte de recuperare, pentru a evita coruperea datelor, pentru a bloca accesul clienților la baza de date pentru durata operației. După efectuarea acțiunilor necesare, baza de date poate fi din nou tradusă în starea on-line.

Crearea unei copii de rezervă

Pentru a efectua o copie a bazei de date a utilitarului gbak, trebuie să apelați fereastra liniei de comandă și să accesați directorul \ Bin din directorul rădăcină al instalării serverului de bază de date, de exemplu:

Rulați utilitarul gbak:

Comutatoarele utilitarului pentru crearea unei copii de rezervă sunt afișate în Tabelul. 1.

Atenție, vă rog. Documentația pentru InterBase 6 indică incorect abrevieri pentru unele comutatoare de utilități.

Tabelul 1. Întreruperile utilitarului gbak. utilizat atunci când creați o copie de rezervă

Copiază baza de date la aparat în rețeaua locală unde este localizată baza de date. În acest caz, se folosește Managerul de servicii.

Ultimele argumente din linia de comandă specifică calea către fișierul bază de date primară și calea către fișierele de rezervă. Dacă fișierele de copiere există deja, acestea vor fi înlocuite cu altele noi.

Trebuie reamintit că numai proprietarul (utilizatorul care a creat baza de date) sau utilizatorul SYSDBA pot copia baza de date.

Dacă doriți să creați o copie multi-fișier, apoi la sfârșitul liniei de comandă, fișierele de copiere cu mărimea acestora sunt listate:

Fișierul este calea completă la fișier și numele fișierului.

Atenție, vă rog. Sistemele de operare permit utilizarea literelor chirilice în nume de fișiere și directoare. Cu toate acestea, acest lucru poate duce la mari probleme atunci când creați, modificați, copiați și restaurați baza de date. De exemplu, dacă utilizați utilitarul isql, nu puteți crea baza de date, specificând calea care conține caracterele chirilice. În alte programe, puteți obține mesaje de eroare complet criptice, de exemplu, că aveți un nume de utilizator sau o parolă nevalidă.

Acest lucru se datorează particularităților implementării serverului de baze de date.

Dimensiunea este dimensiunea fișierului de copiere. Poate fi specificată în octeți (fără sufix), în kilobytes (sufix k), megabytes (m) sau gigabytes (g). Dimensiunea minimă este 2048 octeți.

Pentru a face o copie a bazei de date în două fișiere, exemplul anterior ar trebui să fie rescris ca:

Aici dimensiunea primului fișier copiat este setată la 2K, pentru cea de-a doua este specificată aceeași mărime, însă mărimea reală va fi extinsă la valoarea necesară pentru stocarea tuturor datelor copiate.

Pentru ultimul fișier, nu se poate specifica o dimensiune a copiei, dar sarcina nu duce la o eroare.

Este în regulă dacă alți utilizatori lucrează cu el în timp ce copiază baza de date. Copiile vor fi confirmate doar modificările datelor existente la momentul copierii.

Oprirea și rularea bazei de date

Cel mai prost lucru la care vă puteți gândi este restaurarea unei baze de date dintr-o copie de rezervă deasupra unei baze de date existente într-un moment în care alți utilizatori lucrează cu aceasta. Acest lucru este garantat pentru a duce la distrugerea bazei de date. Din acest motiv, înainte de a restaura baza de date dintr-o copie de rezervă, trebuie să opriți baza de date - puneți-o în starea de închidere, - efectuați restaurarea și apoi faceți accesibilă baza de date pentru utilizatori.

Puteți opri baza de date utilizând utilitarul gfix. Opriți sintaxa:

Comutatorul - atașați previne conexiunile noi la baza de date.

  • tran previne lansarea de noi tranzacții.
  • Forța oprește baza de date după numărul de secunde specificat.

Șirul trebuie să includă și numele de utilizator (comutator - utilizator), parola (- pa [ssword]) și calea completă la fișierul de bază de date primar. De exemplu:

Creează o bază de date recuperabilă pe aparat în rețeaua locală unde este localizată copia de rezervă. În acest caz, se folosește Managerul de servicii.

Ultimele argumente din linia de comandă specifică calea către fișierele de rezervă și calea către fișierele bazei de date. Dacă restaurați baza de date pe un alt computer din rețea, fișierele de rezervă trebuie să fie amplasate pe o unitate autorizată. Pentru fiecare fișier din baza de date care urmează să fie restaurat (cu excepția ultimului), specificați dimensiunea fișierului în paginile bazei de date. Dimensiunea minimă este de 200 de pagini. Dacă specificați un număr mai mic, utilitarul va avertiza despre el și va efectua în continuare restaurarea, setând dimensiunea fișierului la 200 de pagini.

Când restaurați o bază de date dintr-o copie compusă din mai multe fișiere, trebuie să specificați toate fișierele de copiere în ordinea în care a fost creată copia.

Următorul exemplu restabilește o bază de date formată din două fișiere. Copia include trei fișiere:

Când este setată restaurarea, dimensiunea paginii este de 1024 octeți, dimensiunea fișierului primar este setată la 200 de pagini.

Dacă o copie a bazei de date se află pe o altă mașină din rețeaua locală, puteți utiliza comutatorul - service, după care puteți specifica numele Managerului de servicii. Dacă utilizați protocolul TCP / IP pentru a restaura o copie pe aceeași mașină din rețea, puteți seta următoarele:

Serverul aici este numele altei mașini din rețeaua în care este localizată copia și unde doriți să restaurați baza de date.

Utilizarea Service Manager este singura modalitate de a crea o copie a bazei de date pe un disc cu acces interzis prin intermediul gbak. În IBExpert, totul este mult mai simplu.

Crearea unei copii de rezervă

Pentru a efectua o copie a bazei de date, executați IBExpert. Baza de date trebuie înregistrată în program. În fereastra Database Explorer, faceți clic pe linia bazei dvs. de date:

Copierea și restaurarea unei baze de date în interbază

Figura 1. Fereastra Explorer. Selectarea unei baze de date

În meniul Servicii, faceți clic pe Baza de date de rezervă. Se afișează fereastra Backup de bază de date, în care sunt deja setate unele valori necesare în fila Backup Files (Fișiere de rezervă). Puteți schimba numele fișierului de copiere și dimensiunea acestuia.

Copierea și restaurarea unei baze de date în interbază

Fig. 2. Fereastra Backup de baze de date

În partea de jos a ecranului din secțiunea Ieșire din lista derulantă, selectați Pe ecran, astfel încât protocolul de copiere să fie afișat în fila Ieșire.

Faceți clic pe butonul Start Backup. Se va afișa fila Output în care vor fi afișate toate mesajele de copiere.

Restaurarea bazei de date dintr-o copie de rezervă

Pentru a restaura baza de date, din meniul Servicii, faceți clic pe Restaurare bază de date. Se va afișa fereastra Restaurare bază de date. Fila Fișiere are deja toate setările necesare. În câmpul Restabilire în este specificat baza de date existentă.

Copierea și restaurarea unei baze de date în interbază

Fig. 3. Fereastră de restaurare a bazei de date

Faceți clic pe linia Nume fișier. Un buton cu trei puncte apare în partea dreaptă a câmpului. Faceți clic pe acest buton și, în fereastra deschisă a fișierului, selectați fișierul de copiere. Bifați caseta de selectare Înlocuire bază de date existentă. De asemenea, puteți schimba dimensiunea paginii bazei de date selectând-o din lista derulantă Page Size (Dimensiune pagină).

Faceți clic pe butonul Start Restore. Va apărea o fereastră pentru introducerea numelui de utilizator și a parolei. Puteți efectua restaurarea ca utilizator SYSDBA. Baza de date va fi restaurată dintr-o copie de rezervă.

Dacă doriți să restaurați o copie de rezervă a bazei de date cu un alt nume, apoi, în meniul drop-down Restore în selectați Bază de date nouă, în câmpul Fișier bază de date, introduceți calea completă la noul (sau existent) fișierul bază de date în câmpul File Name, introduceți calea către copiați fișierul de rezervă sau utilizați butonul Răsfoiți pentru a selecta acest fișier.

Din păcate, nu am fost în măsură să dau seama dacă programul vă permite să restaurați o copie a bazei de date multi-fișier, prin urmare, trebuie să scrie aplicații care va efectua toate acțiunile necesare pentru a copia și a restabili bazele de date.

Crearea propriilor programe pentru copierea și restaurarea unei baze de date utilizând componente FIBPlus

Programul de backup al bazei de date

În Delphi sau în C ++ Builder, creăm un formular prin plasarea componentelor necesare pe el. Puneți componenta ListBox pe formular. În acesta vom pune date despre fișierele de copiere. În partea de jos a formularului, plasăm componenta Memo. Acesta va afișa mesaje despre procesul de copiere.

Copierea și restaurarea unei baze de date în interbază

Fig. 4. Program de copiere a bazei de date

Componenta TpFIBErrorHandler ne va permite să raportăm mesaje de eroare în timpul procesului de backup. Pentru o componentă din proprietatea Opțiuni, setați valorile tuturor subproperităților la True. Scrieți următoarea problemă de gestionare a erorilor în baza de date.

Când utilizați această componentă, trebuie să specificați în mod explicit includerea modulului FIB în program. Pentru Delphi, trebuie să o specificați în clauza de utilizare.

Ar trebui să fie posibilă eliminarea unei copii din lista fișierelor individuale. Pentru a face acest lucru, trebuie să scrieți un handler de evenimente pentru clic pentru butonul Ștergere copie de rezervă:

Aici setați proprietățile componentei TpFIBBabkupService: numele fișierului bazei de date primare, tipul protocolului, parametrii conexiunii bazei de date (numele de utilizator și parola). O listă de fișiere de copiere este creată în proprietatea BackupFile, care este un obiect al clasei TStrings.

Procesul de copiere începe când este apelată metoda ServiceStart a componentei TpFIBBabkupService. Mesajele de informare despre programul care este copiat sunt plasate în câmpul Memo. Următoarea linie este obținută utilizând metoda GetNextLine a componentei TpFIBBabkupService. Când procesul este finalizat, proprietatea Eof este setată la True.

Când lucrați la o rețea locală utilizând acest program, puteți copia baza de date localizată pe dispozitivele care nu au acces la alte calculatoare din rețea. În mod similar, fișierele de copiere pot fi localizate pe discuri cu acces refuzat. Acest lucru este posibil deoarece componentele FIBPlus sunt utilizate la copierea și la restaurarea bazelor de date ale Managerului de servicii.

Restabilirea bazei de date dintr-o copie de rezervă

În Delphi sau în C ++ Builder, creați un nou formular. Puneți componenta PageControl cu ​​două file pe formular. În cea de-a doua filă, punem doar componenta Memo, unde vom afișa mesaje despre procesul de recuperare. În prima filă, puneți două componente ListBox. În ele vom pune date despre fișierele de copiere și fișierele bazei de date.

Copierea și restaurarea unei baze de date în interbază

Fig. 5. Program de recuperare a bazei de date

Manageri pentru diferite evenimente de formă și componentele sale sunt similare cu ceea ce a fost în programul anterior. Lucrarea principală efectuează recuperarea:

Componenta TpFIBRestoreService conține proprietățile BackupFile și DatabaseName care sunt instanțe ale clasei TString și sunt destinate pentru stocarea listelor de fișiere de copiere și fișiere de bază de date, respectiv. În program, aceste proprietăți sunt populate cu datele introduse de utilizator (și stocate în componentele ListBox). Rețineți că spre deosebire de IBExpert, aici putem restabili o copie într-o bază de date cu mai multe fișiere.

Repornirea începe când accesați metoda ServiceStart.

Când lucrați la o rețea locală, copierea fișierelor și a fișierelor bazei de date poate fi localizată și pe dispozitivele pe discuri cărora li se refuză accesul de la alte computere din rețea.

Am învățat cum să copiem și să restaurăm baza de date folosind utilitarul gbak și programul IBExpert GUI. Am scris, de asemenea, fragmente destul de decente ale programelor care pot fi utilizate cu succes în dezvoltarea industrială.

Înainte de a restaura o bază de date în partea de sus a unei baze de date existente, ar trebui să opriți baza de date - puneți-o în starea de închidere și apoi să o faceți din nou la toți clienții. Cu toate acestea, cea mai bună soluție este să ștergeți baza de date înainte de ao restaura.

În numele fișierelor, atât baza de date cât și fișierele de copiere, nu utilizați litere chirilice.

Pentru o descriere a instrumentelor pentru crearea și modificarea bazelor de date, consultați articolul de pe site-ul nostru web: "Crearea și modificarea unei baze de date în InterBase / Firebird".

Articole similare