一、备份单个数据库练习多种参数使用
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对备份的数据压缩