8.1 Behovet av en databassäkerhetskopiering

Du har lärt dig hur du skapar databasscheman, tabeller, visar dem. Fyll även dessa tabeller med data och ändra dem. Nu måste du lära dig det viktigaste - att göra säkerhetskopior.

Databasen är väldigt lätt att bryta. Faktum är att databasen vanligtvis är i ett tillstånd av ständig förändring: något sparas hela tiden och läggs till den.

Föreställ dig att du har en flik öppen i din webbläsare och du vill inte att informationen i den ska gå förlorad. Håll med om att om du bara bestämmer dig för att aldrig stänga den, kommer detta inte att vara det bästa alternativet. När allt kommer omkring kan webbläsaren frysa, den kan stängas av misstag, du kan tappa ljuset eller bränna din dator. Windows kan installera ytterligare en uppdatering, men du vet aldrig vad.

Så din databas är samma flik. Och det är bara en tidsfråga när något går fel under nästa skrivning till disken. Därför måste du definitivt lära dig hur man gör säkerhetskopior.

Att göra säkerhetskopior är som att borsta tänderna, vanliga företag gör en säkerhetskopia av innehållet i varje databas varje kväll. Och eftersom hårddiskar också kan gå sönder och det brinner i datacenter så lagras säkerhetskopior vanligtvis i 2-3 exemplar i datacenter i olika delar av världen.

Det finns flera sätt att skapa en säkerhetskopia.

Backup filer. Eftersom all databasdata lagras på disken som en uppsättning filer, är det enklaste sättet att helt enkelt kopiera dessa filer någonstans. Eller arkivera det först i ett arkiv och kopiera det sedan någonstans.

Detta är det snabbaste sättet att göra en säkerhetskopia, men det kräver att filerna inte ändras medan de kopieras/arkiveras. Databasen måste frysas medan kopian skapas, annars blir kopian sned. När allt kommer omkring kan det finnas en situation att en del av de nya uppgifterna registreras i databasen, och en del inte är det ännu.

Säkerhetskopiering i form av SQL-frågor . Som du redan vet, att lägga till och ändra data i SQL-serverdatabasen representeras alltid som SQL-frågor. Så du kan be SQL-servern att spara innehållet i en viss tabell eller tabeller till en fil i form av SQL-frågor.

Denna metod är långsammare än den tidigare, men den kan användas för att överföra data mellan SQL-servrar från olika tillverkare.

Dessutom behöver inte all data alltid sparas. Ofta har du en massa tjänster eller föråldrad information i dina tabeller och du kan säga till SQL-servern att inte spara den.

Dessutom, för tabeller som lagrar vissa händelser med hänvisning till tid, kan du helt enkelt välja sådana händelser för den sista dagen och bara lagra dem.

Olika verktyg . Företag är villiga att betala mycket pengar för att få en garanti för att deras data förblir intakt och säker. Därför började olika IT-företag erbjuda lösningar för alla tillfällen. Det finns till exempel program som kan göra backup-databaser i form av filer och samtidigt inte kräver att dessa filer inte ändras.

Du kan till exempel installera speciella drivrutiner i operativsystemet och hålla reda på när, vad och var har ändrats.

8.2 Säkerhetskopiera databasen

Workbench är utmärkt på att exportera och importera data från databaserna den arbetar med. För att göra detta behöver du bara trycka på menyalternativet: Server-> Data Export. Och du kommer att se något sånt här:

Låt oss nu lägga till en förklaring:

Ordningen är denna:

  1. Välj först det eller de scheman som ska exporteras.
  2. Sedan till höger anger vi tabellerna för backup.
  3. Därefter måste vi välja exakt vad vi ska exportera:
    • endast data;
    • endast struktur (tabeller kommer att vara, men tomma);
    • data och struktur.
  4. Välj hur du vill spara data:
    • en fil för varje tabell;
    • en fil för alla tabeller.
  5. Du kan också lägga till koden för att skapa schemat överst i filen. Detta är användbart vid överföring av data mellan olika DBMS.

8.3 Säkerhetskopiera tabellschemat

Låt oss endast säkerhetskopiera scheman, utan själva data.

Jag valde Endast dumpningsstruktur och klickade på Starta export.

Och det här är vad jag hittade i filen som Workbench gjorde.

--
-- 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 stämmer, det här är schemat för våra tabeller, om jag får säga så om en enskild tabell.

8.4 Säkerhetskopiera data

Låt oss nu bara säkerhetskopiera data, men utan schemastrukturen.

Låt oss välja Dump Data Only och se vad de ger oss:

Och det här är vad jag hittade i filen som Workbench gjorde.

--
-- 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, väldigt mycket som sanningen. Vi ser även här en speciell kod som låser användartabellen. Detta görs så att du helt enkelt kan köra detta SQL-skript: det innehåller alla instruktioner som gör det möjligt för alla SQL-server att återställa data korrekt.

8.5 Installera en säkerhetskopia

Och slutligen, det sista är att återställa databasen från en säkerhetskopia. Denna åtgärd är väldigt enkel men användbar.

Låt oss säga att jag vill att alla mina elever ska ha en specifik databas så att du kan lära dig hur man skriver frågor på den. Sedan ska jag bara ge dig en länk till filen som du distribuerar lokalt och det är allt.

Och även om du av misstag tar bort vissa data, tabeller eller till och med hela schemat, kan det alltid återställas från en säkerhetskopia.

För att importera data måste du klicka på objektet i menyn Server-> Data Import. Då får du se den här bilden:

Som vid export uppmanas du först att välja en datakälla: en grupp filer eller all data i en fil.

Sedan måste du välja det schema till vilket den angivna informationen ska laddas upp. Du kan välja ett befintligt schema eller skapa ett nytt.

Viktig! Om din säkerhetskopia inte bara innehåller data, utan också en beskrivning av tabellstrukturen, kommer tabellerna att återskapas (om det redan finns några i målschemat).