Als u met MySQL werkt, moet u mogelijk regelmatig een back-up maken van de MySQL-database en deze herstellen. Het helpt herstellen bij ongevallen. Hier leest u hoe u een MySQL-database kunt back-uppen en herstellen.
mysqldump is een gemakkelijke manier om een MySQL-database te back-uppen. Het wordt geleverd samen met MySQL-installatiebestanden. Het wordt op uw computer geïnstalleerd wanneer u MySQL installeert. Het maakt een *.sql-bestand aan met DROP-tabel , TABEL MAKEN en INSERT in SQL-statements van uw database. Om de MySQL-database te herstellen, voert u het *.sql-bestand uit op de doeldatabase.
U kunt mysqldump gebruiken om een back-up te maken van enkele of meerdere databases. U kunt zelfs een back-up maken van specifieke tabellen in een database.
Hier is de syntaxis van opdrachten om een back-up te maken en de MySQL-database te herstellen:
backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql restore:# mysql -u root -p[root_password] [database_name] < dumpfilename.sql
Hoe een MySQL-database te back-uppen
1. Back-up van een enkele database:
Stel dat u een back-up wilt van de sample_db-database. Uw root-wachtwoord is bijvoorbeeld 'passwd'
# mysqldump -u root -ppasswd sample_db > sample_db.sql
Deze opdracht maakt een back-up en dumpt de uitvoer van de database in sample_db.sql. De sales_db.sql zal drop table, create table en insert commando bevatten voor alle tabellen in de sales_db database. Hieronder volgt een gedeeltelijke uitvoer van sales_db.sql, met de dumpinformatie:
-- -- Table structure for table `user_table` -- DROP TABLE IF EXISTS `user_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `user_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(75) DEFAULT NULL, `email` varchar(75) NOT NULL, `password` varchar(128) NOT NULL, `date_joined` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `user_table` -- LOCK TABLES `user_table` WRITE; /*!40000 ALTER TABLE `user_table` DISABLE KEYS */; INSERT INTO `user_table` VALUES (1,'test_user','[email protected]','sha1$96e28$effdf3bfe8d0477','2012-12-12 23:17:10'),(7,'[email protected]','[email protected]','sha1$5e05960cede8','2013-02-05 14:56:04'),(8,'[email protected]','[email protected]','sha1$c2497b6420379ac76','2013-02-05 14:57:01'); /*!40000 ALTER TABLE `user_table` ENABLE KEYS */; UNLOCK TABLES;
2. Back-up van meerdere databases:
Selecteer de databases waarvan u een back-up wilt maken. Zo krijgt u een lijst van alle databases:
# mysql -u root -ppasswd mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | sample_db | | mysql | | sample_sales_db | +--------------------+ 4 rows in set (0.00 sec)
Stel dat u een back-up wilt maken van zowel de sample_db- als de sample_sales_db-database. Voer mysqldump uit zoals weergegeven:
# mysqldump -u root -ppasswd --databases sample_db sample_sales_db > multi_databases.sql
3. Maak een back-up van alle databases:
Zo maakt u een back-up van alle databases van uw MySQL-instantie.
# mysqldump -u root -ppasswd --all-databases > all-database.sql
4. Back-up van een specifieke tabel:
Laten we zeggen dat we alleen een back-up willen maken van de tabel user_table uit de sample_db-database.
# mysqldump -u root -ppasswd sample_db user_table > sample_db_user_table.sql
Hoe MySQL-database herstellen
Om de sample_db-database te herstellen, voert u mysql uit met