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

匿名 (未验证) 提交于 2019-12-02 22:06:11

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

    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对备份的数据压缩

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!