MySQL数据库备份学习篇(一)

MySQL数据库备份学习篇(一)

1.物理备份与逻辑备份

1.1 物理备份

1.1.1 理解

备份数据文件,转储数据库物理文件到某一目录

1.1.2 特点

恢复速度比较快,但占用空间比较大

1.1.3 相关工具

mysql中可以使用xtrabackup进行物理备份

1.2 逻辑备份

1.2.1 理解

对数据库对象进行导出工作,汇总入备份文件中
**本质就是备份sql语句**

1.2.2 特点

占用空间小,更加灵活,通过执行备份的sql语句实现数据库数据的重现

1.2.3 相关工具

mysql中可以使用mysqldump进行物理备份
其中mysqldump是mysql安装时自带的工具

2 逻辑备份数据库

2.0 创建一个数据库DumpTest,里面有一张表users,其sql语句如下所示:

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, '张三', '123');
INSERT INTO `users` VALUES (2, '李四', '456');

SET FOREIGN_KEY_CHECKS = 1;

2.1 备份一个数据库

2.1.1 基本语法

mysqldump -P端口号 -u用户名 -h主机名称 -p密码 --ssl-mode DISABLED 数据库名称>备份的位置
mysql数据库端口号默认是3306

2.1.2 示例代码

mysqldump -uroot -P3305 -proot --ssl-mode DISABLED DumpTest>D:\test.sql

2.1.3 过程演示

a 运行截图

在这里插入图片描述

b 用记事本查看test.sql的内容
-- MySQL dump 10.13  Distrib 5.7.27, for Win64 (x86_64)
--
-- Host: localhost    Database: DumpTest
-- ------------------------------------------------------
-- Server version	8.0.30

/*!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 */;
/*!40101 SET NAMES utf8 */;
/*!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 `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` VALUES (1,'张三','123'),(2,'李四','456');
/*!40000 ALTER TABLE `users` 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 2023-03-12 10:22:54

2.2 备份部分数据库(>1)

2.2.1 基本语法

mysqldump -P端口号 -u用户名 -h主机名称 -p密码 --ssl-mode DISABLED --databases 数据库1 数据库2...数据库n>备份的位置
mysql数据库端口号默认是3306

2.2.2 示例代码

mysqldump -uroot -P3305 -proot --ssl-mode DISABLED --databases test01 dumptest>D:\test.sql
-- 笔者这里更改的mysql数据库的端口号,因此是3305,没有更改的话就是3306

2.2.3 过程演示

a 运行截图

在这里插入图片描述

b 用记事本查看test.sql文件的内容
-- MySQL dump 10.13  Distrib 5.7.27, for Win64 (x86_64)
--
-- Host: localhost    Database: test01
-- ------------------------------------------------------
-- Server version	8.0.30

/*!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 */;
/*!40101 SET NAMES utf8 */;
/*!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 */;

--
-- Current Database: `test01`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test01` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `test01`;

--
-- Table structure for table `cmployee`
--

DROP TABLE IF EXISTS `cmployee`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cmployee` (
  `cmployee_id` varchar(15) NOT NULL,
  `cmployee_name` varchar(10) DEFAULT NULL,
  `dep_id` int NOT NULL,
  `cmployee_age` int NOT NULL,
  PRIMARY KEY (`cmployee_id`),
  KEY `iddi` (`dep_id`),
  CONSTRAINT `iddi` FOREIGN KEY (`dep_id`) REFERENCES `department` (`department_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `cmployee`
--

LOCK TABLES `cmployee` WRITE;
/*!40000 ALTER TABLE `cmployee` DISABLE KEYS */;
INSERT INTO `cmployee` VALUES ('17011234','张三',1,30),('17011235','李四',1,41),('17011236','王五',2,25),('17011237','赵六',2,45);
/*!40000 ALTER TABLE `cmployee` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `department`
--

DROP TABLE IF EXISTS `department`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `department` (
  `department_id` int NOT NULL,
  `department_name` varchar(20) DEFAULT NULL,
  `department_grade` varchar(20) NOT NULL,
  PRIMARY KEY (`department_id`),
  UNIQUE KEY `department_name` (`department_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `department`
--

LOCK TABLES `department` WRITE;
/*!40000 ALTER TABLE `department` DISABLE KEYS */;
INSERT INTO `department` VALUES (1,'科技部','一级部门'),(2,'人力资源部','一级部门'),(3,'后勤部门','二级部门');
/*!40000 ALTER TABLE `department` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Current Database: `dumptest`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dumptest` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `dumptest`;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` VALUES (1,'张三','123'),(2,'李四','456');
/*!40000 ALTER TABLE `users` 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 2023-03-12 10:54:55

2.3 备份所有的数据库

2.3.1 基本语法

mysqldump -P端口号 -u用户名 -h主机名称 -p密码 --ssl-mode DISABLED --all-databases>备份的位置
mysql数据库端口号默认是3306

2.3.2 示例代码

mysqldump -uroot -P3305 -proot --ssl-mode DISABLED --all-databases>D:\test.sql
-- 笔者这里更改的mysql数据库的端口号,因此是3305,没有更改的话就是3306

2.3.3 过程演示

a 运行截图

在这里插入图片描述

b 用idea查看文件(因为文件很大,记事本打开不了)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SSS4362/article/details/129473273