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)
相关文章推荐
- [数据库] Navicat for MySQL定时备份数据库及数据恢复
- Navicat for MySQL定时备份数据库及数据恢复
- mysql恢复删除的数据库和自动备份数据
- 关系型数据库RDBMS -MySQL基础入门(五)数据备份与恢复
- 数据库备份和恢复--数据的导入导出 (mysql)
- 【mysql】数据库定时备份、数据恢复
- Navicat for MySQL定时备份数据库及数据恢复
- mysql从只有一个备份文件(多个数据库的备份)中恢复数据到指定数据库
- 使用Navicat for MySQL设置定时备份数据库和数据恢复
- Navicat for MySQL定时备份数据库及数据恢复详解
- MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)
- MySQL 数据库的备份和恢复
- mysql之数据库备份与恢复
- MySQL 数据库备份与恢复
- mysql命令(数据库备份与恢复)
- 使用mysql自带工具mysqldump进行全库备份以及source命令恢复数据库
- 触发器、mysql权限问题、数据库的备份和恢复
- 没备份数据库,只有原始的文件夹,如何恢复数据
- mysql:数据备份和恢复
- 恢复云数据库MySQL的备份文件到自建数据库