8.1 Behovet for en database backup
Du har lært hvordan du lager databaseskjemaer, tabeller og viser dem. Fyll også disse tabellene med data og endre dem. Nå må du lære det viktigste - å ta sikkerhetskopier.
Databasen er veldig enkel å bryte. Faktum er at databasen vanligvis er i en tilstand av konstant endring: noe blir stadig lagret og lagt til den.
Tenk deg at du har en fane åpen i nettleseren din og du vil ikke at informasjonen i den skal gå tapt. Enig at hvis du bare bestemmer deg for å aldri lukke den, så vil ikke dette være det beste alternativet. Tross alt kan nettleseren fryse, den kan lukkes ved et uhell, du kan miste lyset eller brenne datamaskinen. Windows kan installere en annen oppdatering, men du vet aldri hva.
Så databasen din er den samme fanen. Og det er bare et spørsmål om tid når noe går galt under neste skriving til disken. Derfor må du definitivt lære å lage sikkerhetskopier.
Å ta sikkerhetskopi er som å pusse tennene, vanlige selskaper tar en sikkerhetskopi av innholdet i hver database hver natt. Og siden harddisker også kan svikte og det er branner i datasentre, lagres sikkerhetskopier vanligvis i 2-3 kopier i datasentre i ulike deler av verden.
Det er flere måter å lage en sikkerhetskopi på.
Backup filer. Siden alle databasedata er lagret på disken som et sett med filer , er den enkleste måten å kopiere disse filene et sted. Eller arkiver det først i ett arkiv, og kopier det deretter et sted.
Dette er den raskeste måten å ta sikkerhetskopi på, men det krever at filene ikke endres mens de kopieres/arkiveres. Databasen må fryses mens kopien lages, ellers blir kopien skjev. Tross alt kan det være en situasjon at noen av de nye dataene er registrert i databasen, og noen ikke er det ennå.
Sikkerhetskopiering i form av SQL-spørringer . Som du allerede vet, er å legge til og endre data i SQL-serverdatabasen alltid representert som SQL-spørringer. Så du kan be SQL-serveren om å lagre innholdet i en bestemt tabell eller tabeller til en fil i form av SQL-spørringer.
Denne metoden er tregere enn den forrige, men den kan brukes til å overføre data mellom SQL-servere fra forskjellige produsenter.
Dessuten må ikke alle data alltid lagres. Ofte har du en haug med tjenester eller foreldet informasjon i tabellene dine, og du kan fortelle SQL-serveren om ikke å lagre den.
Dessuten, for tabeller som lagrer noen hendelser med referanse til tid, kan du ganske enkelt velge slike hendelser for den siste dagen og bare lagre dem.
Ulike verktøy . Selskaper er villige til å betale mye penger for å få en garanti for at dataene deres forblir intakte og trygge. Derfor begynte ulike IT-selskaper å tilby løsninger for alle anledninger. Det finnes for eksempel programmer som kan lage backup-databaser i form av filer og samtidig ikke krever at disse filene ikke endres.
Du kan for eksempel installere spesielle drivere i operativsystemet og holde styr på når, hva og hvor har endret seg.
8.2 Sikkerhetskopiere databasen
Workbench er utmerket til å eksportere og importere data fra databasene den jobber med. For å gjøre dette trenger du bare å trykke på menypunktet: Server-> Data Export
. Og du vil se noe slikt:
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
La oss nå legge til en forklaring:
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
Rekkefølgen er denne:
- Først velger du skjemaet eller skjemaene som skal eksporteres.
- Så til høyre spesifiserer vi tabellene for sikkerhetskopiering.
- Deretter må vi velge nøyaktig hva vi skal eksportere:
- kun data;
- bare struktur (tabeller vil være, men tomme);
- data og struktur.
- Velg hvordan du vil lagre dataene:
- én fil for hver tabell;
- én fil for alle tabeller.
- Du kan også legge til skjemaopprettingskoden øverst i filen. Dette er nyttig når du overfører data mellom ulike DBMS.
8.3 Sikkerhetskopiering av tabellskjemaet
La oss bare sikkerhetskopiere skjemaene, uten de faktiske dataene.
Jeg valgte Dump Structure Only og klikket Start Export.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
Og dette er hva jeg fant i filen som Workbench laget.
--
-- 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 stemmer, dette er skjemaet til tabellene våre, om jeg kan si det om en enkelt tabell.
8.4 Sikkerhetskopiere data
La oss nå sikkerhetskopiere bare dataene, men uten skjemastrukturen.
La oss velge Dump Data Only og se hva de gir oss:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
Og dette er hva jeg fant i filen som Workbench laget.
--
-- 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, veldig mye som sannheten. Vi ser også en spesiell kode her som låser brukertabellen. Dette gjøres slik at du ganske enkelt kan utføre dette SQL-skriptet: det inneholder alle instruksjonene som lar enhver SQL-server gjenopprette dataene på riktig måte.
8.5 Distribuere en sikkerhetskopi
Og til slutt, den siste tingen er å gjenopprette databasen fra en sikkerhetskopi. Denne handlingen er veldig enkel, men nyttig.
La oss si at jeg vil at alle elevene mine skal ha en spesifikk database slik at du kan lære hvordan du skriver spørringer på den. Så vil jeg bare gi deg en lenke til filen du distribuerer lokalt, og det er det.
Og selv om du ved et uhell sletter noen data, tabeller eller til og med hele skjemaet, kan det alltid gjenopprettes fra en sikkerhetskopi.
For å importere data må du klikke på elementet i menyen Server-> Data Import
. Da får du se dette bildet:
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
Som ved eksport, blir du først bedt om å velge en datakilde: en gruppe filer eller alle data i én fil.
Deretter må du velge skjemaet som de angitte dataene skal lastes opp til. Du kan velge et eksisterende opplegg eller opprette et nytt.
Viktig! Hvis sikkerhetskopien ikke bare inneholder data, men også en beskrivelse av tabellstrukturen, vil tabellene bli gjenskapt (hvis det allerede er noen i målskjemaet).