MySQL备份与恢复(2)mysqldump多个命令参数

时间:2019-10-09
本文章向大家介绍MySQL备份与恢复(2)mysqldump多个命令参数,主要包括MySQL备份与恢复(2)mysqldump多个命令参数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、备份单个数据库练习多种参数使用

    mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下:

    语法:mysqldump -u 用户名 -p 数据库名 >备份的文件名

mysql> select * from test;
+----+---------+
| id | name    |
+----+---------+
|  1 | oldboy  |
|  2 | oldgirl |
|  3 | inca    |
|  4 | zuma    |
|  5 | kaka    |
+----+---------+
5 rows in set (0.00 sec)
[root@localhost ~]# mysqldump -uroot -pdubin oldboy >/opt/mysql_bak.sql
[root@localhost ~]# egrep -v "#|\*|--|^$" /opt/mysql_bak.sql 
DROP TABLE IF EXISTS `SC`;
CREATE TABLE `SC` (
  `SCid` int(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `Cno` int(10) NOT NULL COMMENT '课程号',
  `Sno` int(10) NOT NULL COMMENT '学号',
  `Grade` tinyint(2) NOT NULL COMMENT '学生成绩',
  PRIMARY KEY (`SCid`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
LOCK TABLES `SC` WRITE;
INSERT INTO `SC` VALUES (1,1001,1,4),(2,1002,1,3),(3,1003,1,1),(4,1004,1,6),(5,1001,2,3),(6,1002,2,2),(7,1003,2,2),(8,1004,2,8),(9,1001,3,4),(10,1002,3,4),(11,1003,3,2),(12,1004,3,8),(13,1001,4,1),(14,1002,4,1),(15,1003,4,2),(16,1004,4,3),(17,1001,5,5),(18,1002,5,3),(19,1003,5,2),(20,1004,5,9);
UNLOCK TABLES;
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `Cno` int(10) NOT NULL COMMENT '课程号',
  `Cname` varchar(64) NOT NULL COMMENT '课程名',
  `Ccredit` tinyint(2) NOT NULL COMMENT '学分',
  PRIMARY KEY (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `course` WRITE;
INSERT INTO `course` VALUES (1001,'Linux中高级运维',3),(1002,'Linux高级架构师',5),(1003,'MySQL高级DBA',4),(1004,'Python运维开发',4),(1005,'Java web 开发',3);
UNLOCK TABLES;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_inde_name` (`name`),
  KEY `index_dept` (`dept`(8)),
  KEY `ind_name_dept` (`name`(8),`dept`(10))
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES `student` WRITE;
UNLOCK TABLES;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
LOCK TABLES `test` WRITE;
INSERT INTO `test` VALUES (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');
UNLOCK TABLES;
#备份就是以sql语句的形式导出
[root@localhost ~]# mysql -uroot -pdubin -e "use oldboy;drop table test;"
[root@localhost ~]# mysql -uroot -pdubin -e "select * from oldboy.test"
ERROR 1146 (42S02) at line 1: Table 'oldboy.test' doesn't exist
[root@localhost ~]# mysql -uroot -pdubin oldboy </opt/mysql_bak.sql
[root@localhost ~]# mysql -uroot -pdubin -e "select * from oldboy.test"
+----+---------+
| id | name    |
+----+---------+
|  1 | oldboy  |
|  2 | oldgirl |
|  3 | inca    |
|  4 | zuma    |
|  5 | kaka    |
+----+---------+

[root@localhost ~]# mysqldump -uroot -pdubin -B oldboy >/opt/mysql_bak_B.sql
[root@localhost ~]# ll /opt/
总用量 28
-rw-r--r--. 1 root root 4651 9月  21 08:43 mysql_bak_B.sql
-rw-r--r--. 1 root root 4508 9月  21 08:43 mysql_bak.sql
-rw-r-----. 1 root root  498 9月  20 22:17 mysqlbin_oldboy.000001
-rw-r--r--. 1 root root  203 9月  20 08:46 oldboy_bak1.sql
-rw-r--r--. 1 root root 2826 9月  20 08:46 oldboy_bak.sql
[root@localhost
~]# mysqldump -uroot -pdubin -B oldboy >/opt/mysql_bak_B.sql [root@localhost ~]# mysqldump -uroot -pdubin --compact -B oldboy >/opt/mysql_bak_B_compact.sql [root@localhost ~]# ll /opt/ 总用量 32 -rw-r--r--. 1 root root 2371 9月 21 08:45 mysql_bak_B_compact.sql -rw-r--r--. 1 root root 4651 9月 21 08:45 mysql_bak_B.sql -rw-r--r--. 1 root root 4508 9月 21 08:43 mysql_bak.sql -rw-r-----. 1 root root 498 9月 20 22:17 mysqlbin_oldboy.000001 -rw-r--r--. 1 root root 203 9月 20 08:46 oldboy_bak1.sql -rw-r--r--. 1 root root 2826 9月 20 08:46 oldboy_bak.sql
[root@localhost
~]# mysqldump -uroot -pdubin -B oldboy|gzip >/opt/mysql_bak.sql.gz [root@localhost ~]# ll /opt/ 总用量 36 -rw-r--r--. 1 root root 2371 9月 21 08:45 mysql_bak_B_compact.sql -rw-r--r--. 1 root root 4651 9月 21 08:45 mysql_bak_B.sql -rw-r--r--. 1 root root 4508 9月 21 08:43 mysql_bak.sql -rw-r--r--. 1 root root 1355 9月 21 08:47 mysql_bak.sql.gz -rw-r-----. 1 root root 498 9月 20 22:17 mysqlbin_oldboy.000001 -rw-r--r--. 1 root root 203 9月 20 08:46 oldboy_bak1.sql -rw-r--r--. 1 root root 2826 9月 20 08:46 oldboy_bak.sql

-B 恢复的时候如果没有数据库,不用创建
--compact 以简单的形式呈现,通常用于debugging

 压缩效率将近三倍。

通过以上例子可以得出什么结论?

1、导出数据用 -B 参数

2、用gzip对备份的数据压缩

原文地址:https://www.cnblogs.com/cnxy168/p/11643096.html