mysql数据库的备份和还原的总结

(来自一运维同事的总结)

1. 备份方式:

  1. 热备:数据库在线进行备份,不影响读和写的在线备份方式!
  2. 温备:数据库在线进行备份,对表备份时先锁定写操作,仅可以执行读操作的备份方式!
  3. 冷备:离线备份,也就是关闭mysql后备份数据库。

2. 备份策略:

  1. 完全备份:备份全部数据。(可能备份某一个库的数据,也可能备份N个库的数据)。
  2. 增量备份:仅备份上次完全备份或增量备份以后发生了变化的数据。
  3. 差异备份:第一次完全备份后,将后续发生变化的数据进行备份,时间长了,会很占磁盘空间。

3. 物理备份和逻辑备份及区别:

  1. 物理:直接复制数据文件,备份和恢复操作都比较简单,能k够跨mysql的版本,恢复速度快,属于文件系统级别。
  2. 逻辑:备份表中的数据和代码,将数据导出至文本文件中,必要时还原。# 备份或恢复都需要mysql服务器进程参与,速度慢,数据转换成文本字符时,丢失浮点数在精度方面使用文本处理工具直接对其处理,可移植性强,恢复简单、备份的结果为ASCII文件,可以编辑,与存储引擎无关,可以通过网络备份和恢复。

一、备份/还原表            # 语法:mysqldump [options] [db_name [tbl_name ...]]

a)     备份单个表:

Mysqldump -uroot -p db_1 tb_1 >/xxx/xxxtb.sql

#备份db_1库的tb_1表到/xx/目录下,并命名为xxtb.sql文件。

b)  备份多个表

Mysqldump -uroot -p db_1 tb_1 tb_2 tb_3 >/xxx/xxxtb.sql

#备份db_1库中的tb_1,tb_2,tb_3表。

c)  恢复表:                    # mysql [OPTIONS] [database]

1.  mysql -p yq_1 < /xxtb.sql  #此时,备份xxtb.sql中的语句将被执行,开始使用xxtb.sql恢复yq_1库中的表。

二、备份/还原数据库 

mysqldump [options] [db_name [tbl_name ...]]

1. 备份单个数据库:         示例:mysqldump -uusername -p yq_1 > /xxx/xxxdb.sql

2. 备份多个数据库:          示例:mysqldump -uusername -p --databases db_1 db_2 > db.sql

3. 备份整个数据库:          示例:mysqldump -uusername -p --all-databases > /root/db.sql

 

还原数据库

mysql -u root -p [dbname] < backup.sq

1. 还原单个数据库:          示例:mysql -uusername -p yq_1 < /db.sql

# 还原时必须要指定要还原的数据库yq_1且须存在(因为单个库备份不备份数据库信息,只备   份数据库中表的信息。),不存在则须手动创建后,才可进行还原。

2. 还原多个数据库:          示例:mysql -uusername -p < db.sql

#还原多个数据库时,无需指定要还原哪些数据库,因为备份中备份了数据库信息,有数据库不存在的话会自动创建,存在则将其覆盖。

3. 还原整个数据库:         示例:mysql -uusername -p < /db.sql

三、单表恢复

有时候会面临这样一些情况,备份了整个数据库,却只需要恢复其中的某个table或某几个tables。

1.备份整个数据库,恢复单张表。

比如备份一个库test,相当于将test库中的所有表备份。mysql也是这样做的,在查看整个sp2p库的备份时,可以发现,整个备份中全部为创建表结构和插入表数据的sql语句,其中对每个表的备份分为2部分,如下

#备份表结构

--

-- Table structure for table `t_banks`

--

......创建表结构语句........

#备份表数据

--

-- Dumping data for table `t_banks`

--

 

 

 

四、使用source命令恢复数据库和表

1. 恢复备份单个表的备份: mysql>source /tb.sql 

注意:使用source恢复单个表,则需要进入所在数据库中,且如果表不存在需手动创建。

  使用source恢复单个库,同理。

  使用source恢复多个库,也无需手动创建数据库。

注意:

1. mysqldump命令备份单个库时(也就是不使用--databases/--all-databases等系列的参数时),只备份单个库下的所有表,注意其备份不包括备份(创建/删除)数据库的操作。

 

例如:

备份好单个库后,还原时,如mysqldump -p db1 > /xxx/db.sql,备份单个库,msyqldump命令只备份db1数据库下的所有表,而不包括创建数据库的CREATE DATABASE语句,因此如果把db1删了使用db.sql还原时会出现:“No database selected”的错误信息,因此在还原前必须先创建db1(也可以自定义数据库名为db2、db3等)数据库,或者可以直接用mysqldump -u root -p --databases db_1>db.sql,这样不仅备份了所有数据库下的表结构,而且包括了创建数据库的语句。

mysql数据库的备份和还原的总结的更多相关文章

  1. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  2. mysql数据库的备份和还原

    mysql数据库的备份命令:mysqldump -u root  -p 要备份的现有数据库名  >  备份后的sql文件名.sql,例如:  mysqldump -u root -p  heal ...

  3. MySQL数据库的备份、还原、迁移

    一.单库备份与还原 1.远程连接MySQL数据库 D:\mysql-5.7.14-winx64\bin>mysql -h192.168.2.201 -uroot -pcnbi2018 参数说明: ...

  4. [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

    通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...

  5. Java代码实现MySQL数据库的备份与还原

    通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...

  6. 关于mysql数据库的备份和还原

    在搭建网站的过程中常遇到文件的备份与还原,以备下次再使用 备份: 图中蓝色画线处为备份命令,wordpress为要备份的数据库名,.">"可将结果输出到文件中,/opt/wo ...

  7. mysql 数据库的备份和还原

    1. 逻辑备份 (和存储引擎无关) mysqldump -uroot -p schoolDB TSubject > /mysqlbackup/schoolDB.TSubject.sql  (备份 ...

  8. Linux下MySQL数据库的备份与还原

    昨天对公司数据库进行备份.用了以下的方法一. 导出1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql 如果要导出数据库全部: mysqldump - ...

  9. mysql 数据库的备份与还原 at winows

    把cmd的当前目录切换到mysql安装目录; 备份数据库world mysqldump -u root -p  world < c:\all.sql 导入数据库 新建schema world 常 ...

随机推荐

  1. Request Body可以反复读取的方法

    org.springframework.web.filter.HiddenHttpMethodFilter:过滤器已经读取流了,因此想频繁读取流的话,自定义Filter必须在org.springfra ...

  2. 010_React-组件的生命周期详解

    ReactJS 的核心思想是组件化,即按功能封装成一个一个的组件,各个组件维护自己的状态和 UI,当状态发生变化时,会自定重新渲染整个组件,多个组件一起协作共同构成了 ReactJS 应用. 为了能够 ...

  3. mybatis 参数为list时,校验list是否为空, mybatis ${}与#{}的区别

    一.参数list时,先判断是否为空,否则会报错. 二.mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from tab ...

  4. Linux笔记-top命令和load average

    参考资料 top相关: http://blog.csdn.net/zhangchenglikecc/article/details/52103737参考资料 cpu核数: https://www.cn ...

  5. linux内存源码分析 - 内存池

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 内存池是用于预先申请一些内存用于备用,当系统内存不足无法从伙伴系统和slab中获取内存时,会从内存池中获取预留的 ...

  6. HBase篇(2)-数据模型与操作

    HBase其实就是一个数据库,无非就是存储和增删改查,那我们先从数据模型说起把 这里有一张表,是用关系型数据库的思维画出来的表,这样比较易于理解: 概念 Table(表格) 没啥说的,和关系型数据库一 ...

  7. 朱晔的互联网架构实践心得S1E1:Pilot

    朱晔的互联网架构实践心得S1E1:Pilot 最近几年写博客确实写得少了,初出茅庐的时候什么都愿意去写,现在写一点东西之前会反复斟酌是否有价值.工作十几年了,做了N多个互联网系统,业务涉及教育.游戏. ...

  8. js、jquery实现放大镜效果

    在一些电商网站的商品详情页面,都会有放大镜效果,实现起来并不是很困难,今天用了两个小时,写了一个放大镜效果的实例,来分享给大家! 实现的效果大概是这个样子的 预览 先来看一下效果吧,点击下面的链接预览 ...

  9. Maven 安装和配置

    一.Maven 简介 Maven 是一个强大的Java项目构建工具,类似.NET中的NuGet ,Node.js的NPM. 正如nuget.org ,Maven有一个中央仓库 maven.org,可以 ...

  10. 03-HTML之body标签

    body标签 HTML标签按作用主要分为两类:字体标签和排版标签 HTML标签按级别主要分为两类:文本级标签和容器级标签 文本级标签:p.span.a.b.i.u.em.文本标签里只能放文字.图片.表 ...