8.1 De noodzaak van een databaseback-up
U hebt geleerd hoe u databaseschema's en tabellen kunt maken en deze kunt bekijken. Vul ook deze tabellen met gegevens en verander ze. Nu moet u het belangrijkste leren: back-ups maken.
De database is heel gemakkelijk te doorbreken. Feit is dat de database meestal in een staat van constante verandering verkeert: er wordt constant iets opgeslagen en aan toegevoegd.
Stel je voor dat je een tabblad open hebt staan in je browser en je wilt niet dat de informatie erin verloren gaat. Mee eens dat als je besluit om het nooit te sluiten, dit niet de beste optie is. De browser kan immers vastlopen, per ongeluk worden gesloten, u kunt het licht kwijtraken of uw computer verbranden. Windows kan nog een update installeren, maar je weet nooit wat.
Uw database is dus hetzelfde tabblad. En het is slechts een kwestie van tijd dat er iets misgaat tijdens het volgende schrijven naar de schijf. Daarom moet u zeker leren hoe u back-ups maakt.
Back-ups maken is als tandenpoetsen, normale bedrijven maken elke nacht een back-up van de inhoud van elke database. En aangezien harde schijven ook kunnen uitvallen en er branden zijn in datacenters, worden back-ups meestal in 2-3 exemplaren opgeslagen in datacenters in verschillende delen van de wereld.
Er zijn verschillende manieren om een back-up te maken.
Backup bestanden. Aangezien alle databasegegevens als een set bestanden op schijf worden opgeslagen , is de gemakkelijkste manier om deze bestanden gewoon ergens heen te kopiëren. Of archiveer het eerst in één archief en kopieer het dan ergens.
Dit is de snelste manier om een back-up te maken, maar het vereist dat de bestanden niet veranderen tijdens het kopiëren/archiveren. De database moet worden bevroren terwijl de kopie wordt gemaakt, anders wordt de kopie krom. Het kan immers voorkomen dat een deel van de nieuwe gegevens in de database is vastgelegd en een deel nog niet.
Back-up in de vorm van SQL-query's . Zoals u al weet, wordt het toevoegen en wijzigen van gegevens in de SQL Server-database altijd weergegeven als SQL-query's. U kunt de SQL-server dus vragen om de inhoud van een bepaalde tabel of tabellen op te slaan in een bestand in de vorm van SQL-query's.
Deze methode is langzamer dan de vorige, maar kan worden gebruikt om gegevens over te dragen tussen SQL-servers van verschillende fabrikanten.
Ook hoeven niet altijd alle gegevens bewaard te worden. Vaak heb je een heleboel service- of verouderde informatie in je tabellen en kun je de SQL-server vertellen deze niet op te slaan.
Ook kunt u voor tabellen die bepaalde gebeurtenissen met betrekking tot tijd opslaan eenvoudig dergelijke gebeurtenissen voor de laatste dag selecteren en alleen deze opslaan.
Diverse nutsvoorzieningen . Bedrijven zijn bereid veel geld te betalen om de garantie te krijgen dat hun gegevens intact en veilig blijven. Daarom begonnen verschillende IT-bedrijven oplossingen voor alle gelegenheden aan te bieden. Zo zijn er programma's die back-up databases kunnen maken in de vorm van bestanden en tegelijkertijd niet eisen dat deze bestanden niet veranderen.
U kunt bijvoorbeeld speciale stuurprogramma's in het besturingssysteem installeren en bijhouden wanneer, wat en waar is gewijzigd.
8.2 Back-up van de database
Workbench is uitstekend in het exporteren en importeren van gegevens uit de databases waarmee het werkt. Om dit te doen, hoeft u alleen maar op het menu-item te drukken: Server-> Data Export
. En je zult zoiets als dit zien:
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
Laten we nu wat uitleg toevoegen:
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
De volgorde is deze:
- Selecteer eerst het schema of de schema's die geëxporteerd zullen worden.
- Vervolgens specificeren we aan de rechterkant de tabellen voor back-up.
- Vervolgens moeten we kiezen wat we precies zullen exporteren:
- alleen gegevens;
- alleen structuur (tabellen zijn, maar leeg);
- gegevens en structuur.
- Kies hoe u de gegevens wilt opslaan:
- één bestand voor elke tabel;
- één bestand voor alle tabellen.
- U kunt ook de code voor het maken van het schema bovenaan het bestand toevoegen. Dit is handig bij het overdragen van gegevens tussen verschillende DBMS.
8.3 Een back-up maken van het tabelschema
Laten we alleen een back-up maken van de schema's, zonder de daadwerkelijke gegevens.
Ik heb alleen Dump Structure geselecteerd en op Start Export geklikt.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
En dit is wat ik vond in het bestand dat Workbench maakte.
--
-- 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 */;
Dat klopt, dit is het schema van onze tabellen, als ik het zo mag zeggen over een enkele tabel.
8.4 Back-up van gegevens
Laten we nu alleen een back-up maken van de gegevens, maar zonder de schemastructuur.
Laten we Dump Data Only selecteren en kijken wat ze ons geven:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
En dit is wat ik vond in het bestand dat Workbench maakte.
--
-- 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, lijkt erg op de waarheid. We zien hier ook een speciale code die de gebruikerstabel vergrendelt. Dit wordt gedaan zodat u dit SQL-script eenvoudig kunt uitvoeren: het bevat alle instructies waarmee elke SQL-server de gegevens correct kan herstellen.
8.5 Een back-up implementeren
En tot slot, het laatste is het herstellen van de database vanaf een back-up. Deze actie is heel eenvoudig maar nuttig.
Laten we zeggen dat ik wil dat al mijn studenten een specifieke database hebben, zodat je kunt leren hoe je er query's op schrijft. Dan geef ik je gewoon een link naar het bestand dat je lokaal implementeert en dat is alles.
En zelfs als u per ongeluk enkele gegevens, tabellen of zelfs het hele schema verwijdert, kan dit altijd worden hersteld vanaf een back-up.
Om gegevens te importeren, moet u op het item in het menu klikken Server-> Data Import
. Dan zie je dit plaatje:
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
Net als bij exporteren wordt u eerst gevraagd een gegevensbron te selecteren: een groep bestanden of alle gegevens in één bestand.
Vervolgens moet u het schema selecteren waarin de opgegeven gegevens worden geüpload. U kunt een bestaand schema selecteren of een nieuw schema maken.
Belangrijk! Als uw back-up niet alleen gegevens bevat, maar ook een beschrijving van de tabelstructuur, dan worden de tabellen opnieuw gemaakt (als die al in het doelschema staan).
GO TO FULL VERSION