在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作。
数据备份
指令基本结构如下:
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
默认不带参数的导出,导出文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表。
-- MySQL dump 10.13 Distrib 8.0.17, for Win64 (x86_64)
--
-- Host: localhost Database: test
-- ------------------------------------------------------
-- Server version 8.0.17
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- 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) DEFAULT NULL,
`name` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`age` smallint(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `user`
--
LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (1,'我是大牛逼',12);
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2022-01-05 14:46:36
常用参数列表:
参数名 | 缩写 | 含义 |
---|---|---|
--host | -h | 备份主机IP,默认为localhost |
--port | -P | 备份主机端口,默认为3306 |
--user | -u | 用户名 |
--password | -p | 密码 |
--databases | -B | 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。 |
--all-databases | -A | 备份mysql服务器上的所有数据库 |
--tables | 覆盖 --databases or -B选项,后面所跟参数被视作表名 | |
--no-data | -d | 只导出表结构 |
--force | -f | 即使发现sql错误,仍然继续备份 |
--quick | -q | 快速导出。不要缓冲查询,直接转储到标准输出。(默认为 on;使用 --skip-quick 禁用。) |
--xml | -X | 导出为xml文件 |
--no-create-info | -t | 不输出表的创建信息 |
语句示例:
1.备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A > F:\all.sql
2.备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d > F:\all_struct.sql
3.备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t > F:\all_data.sql
4.备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot-p123456 mydb > F:\mydb.sql
5.备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d > F:\mydb.sql
6.备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t > F:\mydb.sql
7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 > f:\multables.sql
8.一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2>f:\muldbs.sql
数据还原
有2种方法:
- mysql命令行source方法
- 系统命令行方法
1.还原全部数据库:
(1) mysql命令行:
mysql>source f:\all.sql;
(2) 系统命令行:
mysql -uroot -p123456 < f:\all.sql
2.还原单个数据库(需指定数据库)
(1) mysql命令行:
mysql>use mydb;
mysql>source f:\mydb.sql;
(2) 系统命令行:
mysql -uroot -p123456 mydb < f:\mydb.sql
3.还原单个数据库的多个表(需指定数据库)
(1) mysql命令行:
mysql>use mydb;
mysql>source f:\multables.sql;
(2) 系统命令行:
mysql -uroot -p123456 mydb < f:\multables.sql
4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
(1) mysql命令行:
mysql>source f:\muldbs.sql
(2) 系统命令行:
mysql -uroot -p123456 < f:\muldbs.sql
评论区