AI智能
改变未来

MySQL-数据库数据的备份与恢复

• 逻辑备份工具 mysqldump
• 使用mysql 恢复数据库

步骤一:使用mysqldump进行逻辑备份

1)备份MySQL服务器上的所有库
将所有的库备份为mysql-all.sql文件:

[root@zhangyx ~]# mysqldump -u root -p --all-databases > /root/alldb.sqlEnter password:           //验证口令[root@zhangyx ~]# file /root/alldb.sql       //确认备份文件类型/root/alldb.sql: UTF-8 Unicode text, with very long lines

查看备份文件alldb.sql的部分内容:

[root@zhangyx ~]# grep -vE \'^/|^-|^$\' /root/alldb.sql | head -15CREATE DATABASE /*!32312 IF NOT EXISTS*/ `home` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `home`;DROP TABLE IF EXISTS `biao01`;CREATE TABLE `biao01` (`id` int(2) NOT NULL,`name` varchar(8) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;LOCK TABLES `biao01` WRITE;UNLOCK TABLES;DROP TABLE IF EXISTS `biao02`;CREATE TABLE `biao02` (`id` int(4) NOT NULL,`name` varchar(8) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

注意:若数据库都使用MyISAM存储引擎,可以采用冷备份的方式,直接复制对应的数据库目录即可;恢复时重新复制回来就行。

2)只备份指定的某一个库
将userdb库备份为userdb.sql文件:

[root@zhangyx ~]# mysqldump -u root -p userdb > userdb.sqlEnter password:                                  //验证口令

查看备份文件userdb.sql的部分内容:

[root@zhangyx ~]# grep -vE \'^/|^-|^$\' /root/userdb.sqlDROP TABLE IF EXISTS `stu_info`;CREATE TABLE `stu_info` (`name` varchar(12) NOT NULL,`gender` enum(\'boy\',\'girl\') DEFAULT \'boy\',`age` int(3) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;LOCK TABLES `stu_info` WRITE;.. ..

3)同时备份指定的多个库
同时备份mysql、userdb库,保存为mysql+userdb.sql文件:

[root@zhangyx ~]# mysqldump -u root -p -B mysql  userdb > mysql+test+userdb.sqlEnter password:                                  //验证口令

查看备份文件userdb.sql的部分内容:

[root@zhangyx ~]# grep \'^CREATE DATA\' /root/mysql+userdb.sqlCREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET latin1 */;CREATE DATABASE /*!32312 IF NOT EXISTS*/ `userdb` /*!40100 DEFAULT CHARACTER SET latin1 */;
步骤二:使用mysql命令从备份中恢复数据库、表

以恢复userdb库为例,可参考下列操作。通常不建议直接覆盖旧库,而是采用建立新库并导入逻辑备份的方式执行恢复,待新库正常后即可废弃或删除旧库。

1)创建名为userdb2的新库

mysql> CREATE DATABASE userdb2;Query OK, 1 row affected (0.00 sec)

2)导入备份文件,在新库中重建表及数据

[root@zhangyx ~]# mysql -u root -p userdb2 < /root/userdb.sqlEnter password:                                  //验证口令

3)确认新库正常,启用新库

mysql> USE userdb2;                              //切换到新库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> SELECT sn,username,uid,gid,homedir          //查询数据,确认可用-> FROM userlist LIMIT 10;+----+----------+-----+-----+-----------------+| sn | username | uid | gid | homedir         |+----+----------+-----+-----+-----------------+|  1 | root     |   0 |   0 | /root           ||  2 | bin      |   1 |   1 | /bin            ||  3 | daemon   |   2 |   2 | /sbin           ||  4 | adm      |   3 |   4 | /var/adm        ||  5 | lp       |   4 |   7 | /var/spool/lpd  ||  6 | sync     |   5 |   0 | /sbin           ||  7 | shutdown |   6 |   0 | /sbin           ||  8 | halt     |   7 |   0 | /sbin           ||  9 | mail     |   8 |  12 | /var/spool/mail || 10 | operator |  11 |   0 | /root           |+----+----------+-----+-----+-----------------+10 rows in set (0.00 sec)

4)废弃或删除旧库

mysql> DROP DATABASE userdb;Query OK, 2 rows affected (0.09 sec)
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL-数据库数据的备份与恢复