8.1 La necessità di un backup del database
Hai imparato come creare schemi di database, tabelle, visualizzarli. Riempi anche queste tabelle con i dati e modificale. Ora devi imparare la cosa più importante: eseguire i backup.
Il database è molto facile da decifrare. Il fatto è che il database è solitamente in uno stato di costante cambiamento: qualcosa viene costantemente salvato e aggiunto ad esso.
Immagina di avere una scheda aperta nel tuo browser e non vuoi che le informazioni in essa contenute vadano perse. Concordo sul fatto che se decidi di non chiuderlo mai, questa non sarà l'opzione migliore. Dopotutto, il browser può bloccarsi, può essere chiuso per sbaglio, puoi perdere la luce o bruciare il tuo computer. Windows può installare un altro aggiornamento, ma non sai mai cosa.
Quindi, il tuo database è la stessa scheda. Ed è solo una questione di tempo quando qualcosa va storto durante la prossima scrittura sul disco. Pertanto, devi assolutamente imparare come eseguire i backup.
Fare backup è come lavarsi i denti, le normali aziende effettuano ogni notte un backup del contenuto di ogni database. E poiché anche i dischi rigidi possono guastarsi e ci sono incendi nei data center, i backup vengono solitamente archiviati in 2-3 copie nei data center in diverse parti del mondo.
Esistono diversi approcci alla creazione di un backup.
File di backup. Poiché tutti i dati del database sono archiviati su disco come un insieme di file , il modo più semplice è semplicemente copiare questi file da qualche parte. Oppure prima archivialo in un archivio e poi copialo da qualche parte.
Questo è il modo più rapido per eseguire un backup, ma richiede che i file non vengano modificati mentre vengono copiati/archiviati. Il database deve essere congelato durante la creazione della copia, altrimenti la copia verrà distorta. Dopotutto, potrebbe esserci una situazione in cui alcuni dei nuovi dati sono registrati nel database e altri non lo sono ancora.
Backup sotto forma di query SQL . Come già saprai, l'aggiunta e la modifica dei dati nel database del server SQL è sempre rappresentata come query SQL. Quindi puoi chiedere al server SQL di salvare il contenuto di una particolare tabella o tabelle in un file come query SQL.
Questo metodo è più lento del precedente, ma può essere utilizzato per trasferire dati tra server SQL di produttori diversi.
Inoltre, non è sempre necessario salvare tutti i dati. Spesso hai un sacco di servizi o informazioni obsolete nelle tue tabelle e puoi dire al server SQL di non salvarlo.
Inoltre, per le tabelle che memorizzano alcuni eventi con riferimento all'ora, è sufficiente selezionare tali eventi per l'ultimo giorno e memorizzare solo quelli.
Utilità varie . Le aziende sono disposte a pagare un sacco di soldi per ottenere la garanzia che i loro dati rimarranno intatti e al sicuro. Pertanto, varie società IT hanno iniziato a offrire soluzioni per tutte le occasioni. Ad esempio, esistono programmi che possono eseguire il backup dei database sotto forma di file e allo stesso tempo non richiedono che questi file non vengano modificati.
Ad esempio, puoi installare driver speciali nel sistema operativo e tenere traccia di quando, cosa e dove è cambiato.
8.2 Backup del database
Workbench è eccellente per esportare e importare dati dai database con cui lavora. Per fare ciò, devi solo premere la voce di menu: Server-> Data Export
. E vedrai qualcosa del genere:
![](https://cdn.codegym.cc/images/article/3bc1564d-b5cb-4378-9968-570697e9603a/1024.jpeg)
Ora aggiungiamo qualche spiegazione:
![](https://cdn.codegym.cc/images/article/821a37d4-c6f3-4ccf-80bf-4873f3d8d061/1024.jpeg)
L'ordine è questo:
- Innanzitutto, seleziona lo schema o gli schemi che verranno esportati.
- Quindi a destra specifichiamo le tabelle per il backup.
- Successivamente, dobbiamo scegliere esattamente cosa esporteremo:
- solo dati;
- solo struttura (le tabelle saranno, ma vuote);
- dati e struttura.
- Scegli come salvare i dati:
- un file per ogni tabella;
- un file per tutte le tabelle.
- Puoi anche aggiungere il codice di creazione dello schema all'inizio del file. Questo è utile quando si trasferiscono dati tra diversi DBMS.
8.3 Backup dello schema della tabella
Eseguiamo il backup solo degli schemi, senza i dati effettivi.
Ho selezionato Scarica solo struttura e ho fatto clic su Avvia esportazione.
![](https://cdn.codegym.cc/images/article/18f4743c-0edb-468b-8408-52f59c75a20f/1024.jpeg)
E questo è quello che ho trovato nel file creato da Workbench.
--
-- 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 */;
Esatto, questo è lo schema dei nostri tavoli, se così si può dire di un solo tavolo.
8.4 Backup dei dati
Ora eseguiamo il backup solo dei dati, ma senza la struttura dello schema.
Selezioniamo Dump Data Only e vediamo cosa ci danno:
![](https://cdn.codegym.cc/images/article/b81bb769-5767-4f8a-9a45-bf36e59746e2/1024.jpeg)
E questo è quello che ho trovato nel file creato da Workbench.
--
-- 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 */;
Sì, molto simile alla verità. Qui vediamo anche un codice speciale che blocca la tabella utente. Questo viene fatto in modo che tu possa semplicemente eseguire questo script SQL: contiene tutte le istruzioni che consentiranno a qualsiasi server SQL di ripristinare correttamente i dati.
8.5 Distribuzione di un backup
E infine, l'ultima cosa è ripristinare il database da un backup. Questa azione è molto semplice ma utile.
Diciamo che voglio che tutti i miei studenti dispongano di un database specifico in modo che tu possa imparare a scrivere query su di esso. Quindi ti fornirò solo un collegamento al file che distribuisci localmente e il gioco è fatto.
E anche se elimini accidentalmente alcuni dati, tabelle o persino l'intero schema, può sempre essere ripristinato da un backup.
Per importare i dati è necessario cliccare sulla voce del menu Server-> Data Import
. Quindi vedrai questa immagine:
![](https://cdn.codegym.cc/images/article/3e3e48d4-9f99-4fa1-a2cb-121920583570/1024.jpeg)
Come nel caso dell'esportazione, viene prima richiesto di selezionare un'origine dati: un gruppo di file o tutti i dati in un file.
Quindi è necessario selezionare lo schema in cui verranno caricati i dati specificati. È possibile selezionare uno schema esistente o crearne uno nuovo.
Importante! Se il backup contiene non solo dati, ma anche una descrizione della struttura della tabella, le tabelle verranno ricreate (se ne sono già presenti nello schema di destinazione).
GO TO FULL VERSION