【赵渝强老师】使用mysqldump备份MySQL

发布于:2025-06-22 ⋅ 阅读:(21) ⋅ 点赞:(0)

在这里插入图片描述

mysqldump 是MySQL自带的逻辑备份工具。它的备份原理是通过协议连接到MySQL数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时,只要执行这些insert语句,即可将对应的数据还原。下面语句可以列出mysqldump的帮助信息。

mysqldump --help

# 输出的信息如下:

mysqldump  Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. 
All rights reserved.

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
......
视频讲解如下

【赵渝强老师】使用mysqldump备份MySQL

下面通过几个例子来说明如何使用mysqldump进行备份与恢复。
(1)创建mysqldump备份存储的目录

mkdir -p /databackup/mysqldump

(2)备份所有数据库

mysqldump -uroot -pWelcome_1 --all-databases > /databackup/mysqldump/all.db

《MySQL数据库从零开始》

(3)查看文件/databackup/mysqldump/all.db的内容

more /databackup/mysqldump/all.db

# 输出的信息如下:
......
--
-- Current Database: `demo1`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `demo1` 
/*!40100 DEFAULT CHARACTER SET utf8 */ 
/*!80016 DEFAULT ENCRYPTION='N' */;
USE `demo1`;
--
-- Table structure for table `audit_message`
--
DROP TABLE IF EXISTS `dept`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `dept` (
  `deptno` int NOT NULL,
  `dname` varchar(10) DEFAULT NULL,
  `loc` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `dept`
--
LOCK TABLES `dept` WRITE;
/*!40000 ALTER TABLE `dept` DISABLE KEYS */;
INSERT INTO `dept` VALUES (10,'ACCOUNTING','NEW YORK'),
(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),
(40,'OPERATIONS','BOSTON');
/*!40000 ALTER TABLE `dept` ENABLE KEYS */;
UNLOCK TABLES;
......

# 提示:从all.db的内容可以看出mysqldump备份将备份的数据转换成了SQL语句。

(4)备份指定数据库

mysqldump -uroot -pWelcome_1 demo1 > /databackup/mysqldump/demo1.db

(5)备份指定数据库指定表(多个表以空格间隔)

mysqldump -uroot -pWelcome_1  demo1 test2 test3 emp \
> /databackup/mysqldump/multi_tables.db

(6)备份指定数据库排除某些表不进行备份

mysqldump -uroot -pWelcome_1 demo1 --ignore-table=demo1.test2 \
--ignore-table=demo1.test3 > /databackup/mysqldump/demo2.db

(7)删除demo1数据库

mysqladmin -uroot -pWelcome_1 drop demo1

# 输出的信息如下:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'demo1' database [y/N] y
Database "demo1" dropped

(8)执行恢复数据库demo1

mysqladmin -uroot -pWelcome_1 create demo1 

mysql -uroot -pWelcome_1  demo1 < /databackup/mysqldump/demo1.db

# 提示:在导入备份数据库前,demo1如果没有,则需要事先创建。

(9)检查数据是否恢复
《MySQL数据库从零开始》


网站公告

今日签到

点亮在社区的每一天
去签到