学习目标

  • 数据备份
  • 数据恢复
  • 数据库迁移
  • 导入和导出

数据备份

系统意外崩溃或者服务器硬件损坏都有可能导致数据库丢失,因此生产环境中数据备份非常重要。

MySQLdump命令备份

该命令可以将数据库备份成一个文件文件,该文件包含了数据定义语句和数据操纵语句,可以执行重新创建数据库表并插入数据。

语法格式:

mysqldump -u User -h Host -pPassword DBname[TableName,[TableName...]] > [dump file.sql]  

示例:备份myschool数据库

备份文本文件:

--
-- Dumping data for table `subject`
-- LOCK TABLES `subject` WRITE;
/*!40000 ALTER TABLE `subject` DISABLE KEYS */;
INSERT INTO `subject` VALUES (1,'数据库基础',1,20),(2,'Java逻辑基础',1,18),(3,'SQL基础',1,15),(4,'HTML',1,20),(5,'Control+Ajax',2,20),
(6,'项目管理',4,40),(7,'软件工程',3,28),(8,'算法与数据结构',2,15),(9,'C语言',1,25),(10,'邓小平理论',1,18),(11,'C#面向对象',2,16),
(12,'JavaWeb',3,40),(13,'数据挖掘',4,20),(14,'英语',1,10),(15,'JavaScript',1,15),(16,'软件分层架构',3,20);
/*!40000 ALTER TABLE `subject` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

  

其中:

--:表示注释内容。

/*!......*/:表示可执行注释,在MySQL中可执行,在其他数据库被当成注释。

40101:表示mysql版本,表明此语句只有在4.01.01版本或者更高版本的MySQL中才能执行。

示例:备份myschool.student表

warning:在命令行中输入密码是不安全的。忽略。

示例:备份多个数据库

备份多个数据库需要添加“--databases”参数,之后跟随多个数据库名字

如果要备份全部数据库,使用参数:--all-databases

 mysqldump的选项

复制数据库目录

备份之前需要LOCK TABLES,然后对表执行FLUSH TABLES。也可以停止mysql服务进行备份。

缺点:1、InnoDB引擎表不支持;2、不同版本MySQL不支持。

MySQLhotcopy快速恢复

只能备份MyISAM引擎表。

示例:备份mysql到d:/目录下

mysqlhotcopy -u root -p123 myschool d:/db.sql

  

数据恢复

将备份的数据进行恢复。

使用MySQL命令恢复

mysql命令的语法格式

mysql -u user -pPassword [DBName] < backdbfilename.sql

  

如果backdbfilename.sql是mysqldump命令创建的包含数据库语句的文件,执行的时候不需要指定数据库名。

示例:恢复myschool数据库

注意:需要先手动创建myschool数据库并指定。

直接复制到数据库目录

执行前停止mysql服务,拷贝后重启mysql服务。

缺点:不支持InnoDB引擎表。

使用mysqlhotcopy快速恢复

将mysqlhotcopy导出的数据拷贝到mysql数据库文件目录下,重启mysql服务即可。Linux中需要指定数据库文件的所有者,使用chown命令。

如果恢复的数据库已经存在,需要使用DROP命令删除,再进行恢复。

数据库迁移

将数据从一个数据库系统移动到另一个数据库系统上。

相同版本MySQL数据迁移

主版本号相同的数据库迁移,本质是源数据库的备份和目标数据库的恢复过程。

(注意:复制数据库文件只适合于MyISAM类型数据库,不支持InnoDB类型数据库)

示例:将A主机上的MySQL数据库全部迁移到B主机上

mysqldump -h www.a.com -uUser -pPassword DBName | mysql -h www.b.com -uUser -pPassword

"|":管道连接符。

如果要全部迁移,使用--all-databases参数。

不同版本的迁移

建议导出SQL,在目标数据库上执行SQL。

表的导出和导入

数据表可以导出为sql、xml或者html文件,同时支持导入。

使用select导出表

语法格式

SELECT  字段 FROM 表名 WHERE 条件 INTO OUTFILE  '文件路径'  [选项]

  

注意实现:需要修改my.ini的“secure-file-priv=路径名”,MySQL只支持导出到指定目录。

使用MySQL命令导出文本文件

语法格式

mysql -uUser -pPassword --execute="SELECT 语句" DBName >FileName.txt

  

使用LOAD DATA INFILE导入文本文件

语法格式

LOAD DATA INFILE 'filename.txt' INTO TABLE TableName

  

使用MySQLimport命令导入文本文件

语法格式

mysqlimport -uUser -pPassword DBName fileName.txt

  

综合练习

需求说明

  1. 使用mysqldump导出myschool数据库
  2. 删除myschool数据
  3. 使用mysql命令恢复myschool数据库

MySQL-06 数据备份和恢复的更多相关文章

  1. 涂抹mysql笔记-数据备份和恢复

    <>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...

  2. Mysql大数据备份及恢复

    <p>[引自攀岩人生的博客]MySQL备份一般采取全库备份.日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日 ...

  3. 从MySQL全库备份中恢复某个库和某张表【转】

    从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [root@mha2 backup]#mysqldump -uroot -p123456 --default-character-set=u ...

  4. MySQL的数据备份以及pymysql的使用

    一.MySQL的数据备份 语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 ...

  5. mysql数据库的备份和恢复

    Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...

  6. innobackupex不停库的数据备份并恢复到别的服务器上【转】

    1.innobackupex原理: 备份原理 1).首先会开启一个后台检测进程,实时检测myql redo的变化,一旦发现redo中有新日志写入,立即将日志记入后台日志文件xtrabackup_log ...

  7. 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)

    一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...

  8. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

  9. redis入门(15)redis的数据备份和恢复

    redis入门(15)redis的数据备份和恢复

  10. Salesforce 数据备份和恢复小知识

    数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...

随机推荐

  1. hibernate的基础学习

    工具类: public class H3Util { private static final SessionFactory sessionFactory = buildSessionFactory( ...

  2. E20170414-ms

    collapse v/n 奔溃,垮台 constraint  n 约束,限制 adaptive  adj 适应的; 有适应能力的; exhausitive adj. 详尽的; store n 商店,仓 ...

  3. React的深入浅出

    react组件重新渲染有两种途径:1.自身调用setState:2.父组件传入新的props.3.但这两种途径都不会必然调用render而引起重新渲染, 都会先经过shouldComponentUpd ...

  4. 用CSS绘制三角形

    其实用HTML CSS绘制三角行 是非常简单的 ,我在网上看了不少人写的博客,里面写的好复杂样子,反正我是看的云里雾里的,说实话是挺简单的. 首先提出一段代码: <!DOCTYPE html&g ...

  5. CF662 C. Binary Table

    题目传送门:CF 题目大意: 给定一个\(n\times m\)的表格\((n\leqslant 20,m\leqslant 10^5)\) 每个表格中有\(0/1\),每次可以将一行或者一列翻转,问 ...

  6. 喵哈哈村的魔法考试 Round #3 (Div.2) ABCDE

    官方题解:http://www.cnblogs.com/qscqesze/p/6480284.html 哗啦啦村的刁难(1) 描述 哗啦啦村作为喵哈哈村的对头,于是他们准备给喵哈哈村一个好看. 哗啦啦 ...

  7. matplotlib 绘图实例01:正弦余弦曲线

    该讲的实例结果如下图所示: 第01步:导入模块,并设置显示中文和负号的属性: import matplotlib.pyplot as plt import numpy as np plt.rcPara ...

  8. 对protected修饰符的范围用代码说明(同时说明用protected修饰的属性,在继承时,一定程度上破坏了封装)

    目录结构: 本类: 本包: 子孙类: 其他包:

  9. RAID 0、1、5、1+0总结

    RAID(Redundant Array Of Independent Disk,独立磁盘冗余阵列),可以提供比普通磁盘更快的速度.更高的安全性,生产环境中服务器在安装时一般都会做RAID,RAID的 ...

  10. Solr打分排序规则自定义【转】

    在搭建好solrCloud搜索集群后,通过编写基本的查询显示语句已经能够通过输入关键字查询到相应结果进行显示,但是在显示结果排序上以及不相关信息过滤问题上,如何制定合理的打分规则得到理想的结果集确实比 ...