您的位置:首页 > 数据库 > MySQL

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

2020-07-25 11:32 225 查看

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

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

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

[root@zhangyx ~]# mysqldump -u root -p --all-databases > /root/alldb.sql
Enter 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 -15
CREATE 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.sql
Enter password:                                  //验证口令

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

[root@zhangyx ~]# grep -vE '^/|^-|^$' /root/userdb.sql
DROP 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.sql
Enter password:                                  //验证口令

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

[root@zhangyx ~]# grep '^CREATE DATA' /root/mysql+userdb.sql
CREATE 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.sql
Enter password:                                  //验证口令

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

mysql> USE userdb2;                              //切换到新库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: