sql >> Databasteknik >  >> RDS >> Mysql

Hur säkerhetskopierar och återställer jag MySQL-databas?

När du arbetar med MySQL kan du behöva säkerhetskopiera och återställa MySQL-databas regelbundet. Det hjälper till att återhämta sig vid olyckor. Så här kan du säkerhetskopiera och återställa MySQL-databas.

mysqldump är ett enkelt sätt att säkerhetskopiera MySQL-databas. Den levereras tillsammans med MySQL-installationsfiler. Det installeras på din dator när du installerar MySQL. Den skapar en *.sql-fil med DROP-tabell , SKAPA tabell och INSERT i SQL-satser för din databas. För att återställa MySQL-databasen, kör *.sql-filen på destinationsdatabasen.

Du kan använda mysqldump för att säkerhetskopiera enstaka eller flera databaser. Du kan till och med säkerhetskopiera specifika tabeller i en databas.

Här är syntaxen för kommandon för att säkerhetskopiera och återställa MySQL-databas:

backup: # mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

restore:# mysql -u root -p[root_password] [database_name] < dumpfilename.sql

Hur man säkerhetskopierar MySQL-databas

1. Säkerhetskopiera en enda databas:

Låt oss säga att du vill ha en säkerhetskopia av databasen sample_db. Till exempel är ditt root-lösenord 'passwd'

# mysqldump -u root -ppasswd sample_db > sample_db.sql

Detta kommando tar backup och dumpar utdata från databasen i sample_db.sql. Sales_db.sql kommer att innehålla drop table, create table och insert kommandot för alla tabeller i sales_db databasen. Följande är en partiell utdata av sales_db.sql, som visar dumpinformationen:

--
-- 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. Säkerhetskopiera flera databaser:

Välj de databaser du vill säkerhetskopiera. Så här kan du få en lista över alla databaser:

# mysql -u root -ppasswd

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| sample_db          |
| mysql              |
| sample_sales_db    |
+--------------------+
4 rows in set (0.00 sec)

Låt oss säga att du vill ta backup av databasen sample_db och sample_sales_db. Kör mysqldump som visas:

# mysqldump -u root -ppasswd --databases sample_db sample_sales_db > multi_databases.sql

3. Säkerhetskopiera alla databaser:

Så här säkerhetskopierar du alla databaser i din MySQL-instans.

# mysqldump -u root -ppasswd --all-databases > all-database.sql

4. Säkerhetskopiera en specifik tabell:

Låt oss säga att vi bara vill säkerhetskopiera tabellen user_table från databasen sample_db.

# mysqldump -u root -ppasswd sample_db user_table > sample_db_user_table.sql

Hur man återställer MySQL-databas

För att återställa sample_db-databasen, kör mysql med

  1. Partiförhållandemönster. Hur man modellerar relationer

  2. Hur man beräknar median i MySQL

  3. PL/SQL otillräckliga privilegier inom en fråga manuellt möjligt

  4. Vilken är den rekommenderade batchstorleken för SqlBulkCopy?