MySQL-06 数据备份和恢复

学习目标

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

数据备份

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

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 [email protected]_TIME_ZONE */;

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
/*!40111 SET [email protected]_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数据库

原文地址:https://www.cnblogs.com/rask/p/9191735.html

时间: 2024-10-12 17:37:35

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

mysql大数据备份及恢复(一)

Mysql大数据备份和恢复一 MySQL备份一般采取全库备份.日志备份:MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间:mysql的二进制日志记录着该数据库的所有增删改的操作日志还包括了这些操作的执行时间 Binlog的用途:主从同步.恢复数据库 使用binlog工具备份 查看binlog是否开启,因为默认是关闭的 从上图可知off为关闭状态,一般logbin为只读,在/etc/my.cnf下开启 重启数据库 重启后在目录下查看是否生成bin日志

【windows】环境下mysql的数据备份以及恢复

[windows]环境下mysql的数据备份以及恢复 无论是刚刚入行的'猿友'还是入行很久的'老猿',我相信都会遇到过因为各种原因(很多情况下是自己误删了数据库)的操作.drop databases xxxxx 而误删了线上项目的数据库是一件很恐怖的事情,那么如果大家遇到这种情况怎么办呢?首先不要着急(我感觉说了也白说-,-),先看一看自己的mysql是否开启了binlog日志功能,如果没有???game over !!! 关于查看binlog日志有没有开启,请到自己的Mysql文件下找my.i

Mysql大数据备份及恢复

<p>[引自攀岩人生的博客]MySQL备份一般采取全库备份.日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日志记录着该数据库的所有增删改的操作日志还包括了这些操作的执行时间</p> Binlog的用途:主从同步.恢复数据库 使用binlog工具备份 查看binlog是否开启,因为默认是关闭的 从上图可知off为关闭状态,一般logbin为只读,在/etc/my.cnf下开启 重启数据库 重启后在目录下查

MySQL数据库数据备份和恢复详解(上)

本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM和Innodb,文中设计的 MySQL 版本为 5.0.22. 目前 MySQL 支持的免费备份工具有:mysqldump.mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几

MySQL的数据备份和恢复

用mysqldump命令导出数据,用mysql命令导入数据. 导出: shell>mysqldump -h host -uroot -proot srcdbname(数据库名) [tables(表名)] > data.sql 导入: shell>mysql -h host -uroot -proot destdbname < data.sql 上述方式,库需要先建好:如果想自动建库,利用--database参数即可,例子: mysqldump -h localhost --port

MySQL数据库-完全备份及恢复

MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑角度: 对数据库的对象的备份,例如数据表,及数据表中的一些sql语句等 备份策略角度: 完全备份:每次对数据进行整体的备份 差异备份:在第一次完整备份a数据后,以后的每次的备份是a+b,b就是针对于a数据发生变化的数据,称之为'差异数据'.缺点:b的数据内存会越来越大b+=b,导致数据恢复缓慢.恢复

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

一.MySQL的数据备份 语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 db1 > db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql #多库备份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db

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

从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [[email protected] backup]#mysqldump -uroot -p123456 --default-character-set=utf8 --single-transaction --extended-insert=false --hex-blob --master-data=2 --log-error=/tmp/test.err --routines --triggers --events --quick -

mysql大数据备份与还原(二)

mysql大数据备份和增量备份及还原 Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup :ibbackup是需要授权价格昂贵,而xtrabackup功能比ibbackup强大而且是开源的 Xtrabackup提供了两种命令行工具: xtrabackup:专用于备份InnoDB和XtraDB引擎的数据: innobackupex:这是一个perl脚本,在执行过程中会调用xtrabackup命令可以实现备份InnoDB,

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

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI