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
(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如果没有,则需要事先创建。