8.1 Behovet for en database backup
Du har lært, hvordan du opretter databaseskemaer, tabeller og ser dem. Fyld også disse tabeller med data og skift dem. Nu skal du lære det vigtigste - at lave sikkerhedskopier.
Databasen er meget nem at bryde. Faktum er, at databasen normalt er i en tilstand af konstant forandring: noget bliver konstant gemt og tilføjet til det.
Forestil dig, at du har en fane åben i din browser, og du ønsker ikke, at oplysningerne i den skal gå tabt. Enig, at hvis du bare beslutter dig for aldrig at lukke det, så vil dette ikke være den bedste mulighed. Når alt kommer til alt, kan browseren fryse, den kan lukkes ved et uheld, du kan miste lyset eller brænde din computer. Windows kan installere en anden opdatering, men du ved aldrig hvad.
Så din database er den samme fane. Og det er kun et spørgsmål om tid, hvornår noget går galt under den næste skrivning til disken. Derfor skal du helt sikkert lære at lave sikkerhedskopier.
At lave backup er som at børste tænder, normale virksomheder laver en backup af indholdet af hver database hver aften. Og da harddiske også kan svigte, og der er brande i datacentre, opbevares backups normalt i 2-3 kopier i datacentre i forskellige dele af verden.
Der er flere måder at oprette en sikkerhedskopi på.
Sikkerhedskopier filer. Da alle databasedata er gemt på disken som et sæt filer , er den nemmeste måde blot at kopiere disse filer et sted. Eller arkiver det først i ét arkiv, og kopier det derefter et sted.
Dette er den hurtigste måde at lave en backup på, men det kræver at filerne ikke ændres mens de kopieres/arkiveres. Databasen skal fryses mens kopien oprettes, ellers bliver kopien skæv. Der kan jo være en situation, at nogle af de nye data er registreret i databasen, og nogle endnu ikke.
Sikkerhedskopiering i form af SQL-forespørgsler . Som du allerede ved, er tilføjelse og ændring af data i SQL-serverdatabasen altid repræsenteret som SQL-forespørgsler. Så du kan bede SQL-serveren om at gemme indholdet af en bestemt tabel eller tabeller til en fil i form af SQL-forespørgsler.
Denne metode er langsommere end den forrige, men den kan bruges til at overføre data mellem SQL-servere fra forskellige producenter.
Det er heller ikke altid, at alle data skal gemmes. Ofte har du en masse service eller forældede oplysninger i dine tabeller, og du kan fortælle SQL-serveren om ikke at gemme dem.
For tabeller, der gemmer nogle begivenheder med reference til tid, kan du også blot vælge sådanne begivenheder for den sidste dag og kun gemme dem.
Forskellige hjælpeprogrammer . Virksomheder er villige til at betale mange penge for at få en garanti for, at deres data forbliver intakte og sikre. Derfor begyndte forskellige it-virksomheder at tilbyde løsninger til alle lejligheder. For eksempel findes der programmer, der kan lave backup-databaser i form af filer og samtidig ikke kræver, at disse filer ikke ændres.
Du kan for eksempel installere specielle drivere i styresystemet og holde styr på hvornår, hvad og hvor der er ændret.
8.2 Sikkerhedskopiering af databasen
Workbench er fremragende til at eksportere og importere data fra de databaser, den arbejder med. For at gøre dette skal du blot trykke på menupunktet: Server-> Data Export
. Og du vil se noget som dette:
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
Lad os nu tilføje en forklaring:
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
Rækkefølgen er denne:
- Først skal du vælge det eller de skemaer, der skal eksporteres.
- Så til højre angiver vi tabellerne til backup.
- Dernæst skal vi vælge, hvad vi præcist vil eksportere:
- kun data;
- kun struktur (tabeller vil være, men tomme);
- data og struktur.
- Vælg, hvordan du gemmer dataene:
- en fil for hver tabel;
- én fil til alle tabeller.
- Du kan også tilføje skemaoprettelseskoden til toppen af filen. Dette er nyttigt ved overførsel af data mellem forskellige DBMS.
8.3 Sikkerhedskopiering af tabelskemaet
Lad os kun sikkerhedskopiere skemaerne uden de faktiske data.
Jeg valgte Dump Structure Only og klikkede på Start eksport.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
Og dette er hvad jeg fandt i filen som Workbench lavede.
--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`level` int(11) DEFAULT NULL,
`created_date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
Det er rigtigt, dette er skemaet for vores tabeller, hvis jeg må sige det om en enkelt tabel.
8.4 Sikkerhedskopiering af data
Lad os nu kun sikkerhedskopiere dataene, men uden skemastrukturen.
Lad os vælge Dump Data Only og se, hvad de giver os:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
Og dette er hvad jeg fandt i filen som Workbench lavede.
--
-- Dumping data for table `user`
--
LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES
(1,'Ivanov Ivan',40,'2022-05-11'),
(2,'Petrov Nikola',1,'2021-05-01'),
(3,'Sidroov Vitaly',8,'2022-05-12');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
Ja, meget gerne sandheden. Vi ser også en særlig kode her, der låser brugerbordet. Dette gøres, så du simpelthen kan udføre dette SQL-script: det indeholder alle de instruktioner, der vil tillade enhver SQL-server at gendanne dataene korrekt.
8.5 Installation af en sikkerhedskopi
Og endelig er den sidste ting at gendanne databasen fra en sikkerhedskopi. Denne handling er meget enkel, men nyttig.
Lad os sige, at jeg ønsker, at alle mine elever skal have en specifik database, så du kan lære at skrive forespørgsler på den. Så vil jeg bare give dig et link til den fil, du installerer lokalt, og det er det.
Og selvom du ved et uheld sletter nogle data, tabeller eller endda hele skemaet, kan det altid gendannes fra en sikkerhedskopi.
For at importere data skal du klikke på punktet i menuen Server-> Data Import
. Så vil du se dette billede:
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
Som i tilfældet med eksport, bliver du først bedt om at vælge en datakilde: en gruppe filer eller alle data i én fil.
Derefter skal du vælge den ordning, som de angivne data vil blive uploadet til. Du kan vælge en eksisterende ordning eller oprette en ny.
Vigtig! Hvis din backup ikke kun indeholder data, men også en beskrivelse af tabelstrukturen, vil tabellerne blive genskabt (hvis der allerede er nogen i målskemaet).
GO TO FULL VERSION