MySQL 数据备份与还原

2023-05-16

转载自:https://www.cnblogs.com/kissdodog/p/4174421.html

一、数据备份

  1、使用mysqldump命令备份

  mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

  mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。

  1、备份一个数据库

  mysqldump基本语法:

  mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql

  其中:

  • dbname参数表示数据库的名称;
  • table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
  • BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;

  使用root用户备份test数据库下的person表


mysqldump -u root -p test person > D:\backup.sql  

  

  其生成的脚本如下:

  

  文件的开头会记录MySQL的版本、备份的主机名和数据库名。

  文件中以“--”开头的都是SQL语言的注释,以"/*!40101"等形式开头的是与MySQL有关的注释。40101是MySQL数据库的版本号,如果MySQL的版本比1.11高,则/*!40101和*/之间的内容就被当做SQL命令来执行,如果比4.1.1低就会被当做注释。

  2、备份多个数据库

  语法:


mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql  

  加上了--databases选项,然后后面跟多个数据库


mysqldump -u root -p --databases test mysql > D:\backup.sql  

  3、备份所有数据库

  mysqldump命令备份所有数据库的语法如下:


mysqldump -u username -p -all-databases > BackupName.sql  

  示例:


mysqldump -u -root -p -all-databases > D:\all.sql  

  2、直接复制整个数据库目录

  MySQL有一种非常简单的备份方法,就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。

不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。

  注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同。

  3、使用mysqlhotcopy工具快速备份

  一看名字就知道是热备份。因此,mysqlhotcopy支持不停止MySQL服务器备份。而且,mysqlhotcopy的备份方式比mysqldump快。mysqlhotcopy是一个perl脚本,主要在Linux系统下使用。其使用LOCK TABLES、FLUSH TABLES和cp来进行快速备份。

  原理:先将需要备份的数据库加上一个读锁,然后用FLUSH TABLES将内存中的数据写回到硬盘上的数据库,最后,把需要备份的数据库文件复制到目标目录。

  命令格式如下:


[root@localhost ~]# mysqlhotcopy [option] dbname1 dbname2 backupDir/  
  • dbname:数据库名称;
  • backupDir:备份到哪个文件夹下;

  常用选项:

  • --help:查看mysqlhotcopy帮助;
  • --allowold:如果备份目录下存在相同的备份文件,将旧的备份文件加上_old;
  • --keepold:如果备份目录下存在相同的备份文件,不删除旧的备份文件,而是将旧的文件更名;
  • --flushlog:本次辈分之后,将对数据库的更新记录到日志中;
  • --noindices:只备份数据文件,不备份索引文件;
  • --user=用户名:用来指定用户名,可以用-u代替;
  • --password=密码:用来指定密码,可以用-p代替。使用-p时,密码与-p之间没有空格;
  • --port=端口号:用来指定访问端口,可以用-P代替;
  • --socket=socket文件:用来指定socket文件,可以用-S代替;

  mysqlhotcopy并非mysql自带,需要安装Perl的数据库接口包;下载地址为:http://dev.mysql.com/downloads/dbi.html

  目前,该工具也仅仅能够备份MyISAM类型的表。

二、数据还原

  1、还原使用mysqldump命令备份的数据库的语法如下:

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

  示例:


mysql -u root -p < C:\backup.sql  

  2、还原直接复制目录的备份

  通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 数据备份与还原 的相关文章

  • 使用 Hibernate 在 MySQL 中存储字节数组

    我正在尝试保存带有字节数组字段的实体 我在 MySQL 数据库之上使用 Hibernate 和 JPA 这是字段定义 对于嵌入式 H2 数据库来说效果很好 Entity name blob public class Blob Lob Bas
  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • MySQL有两个不同的密码?

    我确信它们是不同事物的密码 但我不确定是什么 当在终端连接到 MySQL 时 我输入 usr LOCAL mysql BIN mysql h host u username p然后系统会提示我输入密码 密码是 但是当使用 PHP 连接到 M
  • SQL 检查一组日期是否在指定的日期范围内

    我有一个表 其中保存架构中房间不可用的日期 ROOM ID DATE UNAVAILABLE 我需要一个 sql 查询来检查两个日期范围内是否有可用房间 类似于 Select All rooms that are constantly av
  • MySQL用户创建的临时表已满

    我使用内存引擎创建了一个临时表 如下所示 CREATE TEMPORARY TABLE IF NOT EXISTS some text id INT DEFAULT 0 string varchar 400 DEFAULT engine m
  • 如何使PHP中的激活链接过期?

    我有一个 php 脚本 它通过电子邮件向用户发送激活链接 以便他们可以激活他们的帐户 链接是这样的 mysite com activation phpid id 20 如何创建 24 小时后过期的链接 我还没有尝试过任何东西 因为我找不到任
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl

随机推荐

  • 姿态篇:四.非线性最小二乘与飞控传感器校准

    深入浅出多旋翼飞控开发 姿态篇 四 非线性最小二乘与飞控传感器校准 Github 作者 xff1a Sky 前言 搞好了传感器 xff0c 那意味着飞控已经完成了一半 不用猜了 xff0c 这句话正是鄙人说的 飞控的软硬件相关工作 xff0
  • 概述篇:二.多旋翼飞控技术综述

    深入浅出多旋翼飞控开发 概述篇 二 多旋翼飞控技术综述 Github 作者 xff1a Sky 要学习多旋翼飞控 xff0c 第一步得先弄清楚飞控的整体框架和大致工作流程 xff0c 对飞控有了一个整体的认识之后 xff0c 我们再逐步去学
  • 【深入浅出多旋翼飞控开发】系列教程

    针对飞控初学者编写的一系列教程 xff0c 可配合开源飞控项目 xff1a 天穹飞控一起学习 xff0c 效率更高 目录 概述篇 一 多旋翼飞控发展史 二 多旋翼飞控技术综述 预备篇 一 元器件选型及飞控电路设计 二 飞控代码下载与编译 三
  • Cortex-M4和Cortex-M7中的SIMD指令

    SIMD指令简介 单指令多数据流 xff0c 即SIMD xff08 Single Instruction xff0c Multiple Data xff09 指一类能够在单个指令周期内同时处理多个数据元素的指令集 xff0c 利用的是数据
  • 天穹地面站——专为飞控研发而生

    一 简介 天穹地面站是本人为开源飞控项目 天穹飞控专门开发的一个上位机软件 xff0c 针对飞控的研发与调试而设计 一直以来 xff0c 我都为没有一个适合飞控开发的上位机软件而发愁 xff0c 国内大部分爱好者们所使用的相关软件 xff0
  • 预备篇:二.飞控代码下载与编译

    深入浅出多旋翼飞控开发 预备篇 二 飞控代码下载与编译 开源飞控交流 xff1a 562983648 Github 因论坛关闭 xff0c 迁移该文章至博客 系统环境 xff1a WIN7 WIN8 WIN10 编译工具 xff1a Kei
  • 预备篇:一.元器件选型及飞控电路设计

    深入浅出多旋翼飞控开发 预备篇 一 元器件选型及飞控电路设计 Github 要让飞控程序跑起来 xff0c 首先我们得要有一个硬件实体 xff0c 也就是我们的飞控板 说实话 xff0c 飞控电路可以很简单 xff0c 单纯由几个简单的元器
  • 使用VSCode打造APM飞控的编译+烧录+调试一体的终极开发环境

    日期 xff1a 2019 05 08 前言 APM xff08 Ardupilot xff09 和PX4是当今世界上最为流行和活跃的两大开源飞控软件项目 xff0c 它们均在Linux下基于gcc编译工具链开发 xff0c 对于那些习惯与
  • “做好大数据测试,我是认真的!”

    阿里妹导读 xff1a 大数据已然是当下的重要课题 xff0c 大大小小的企业在重视大数据的同时 xff0c 也渐渐重视大数据质量的问题 阿里巴巴测试开发专家小郅 xff0c 今天会分享他对数据测试的系统性思考 文章内容架构清晰 xff0c
  • Docker(一)虚拟机安装Docker

    一 安装Docker 官方镜像 Docker现在的版本分为Docker CE 社区版 和Docker EE 企业版 由于历史版本的原因 在我们安装现在版本Docker的时候 如果之前的Linux已经安装了Docker 那么最好先删除了之后再
  • linux Ubuntu 连不上新Putty 连接出错解决办法

    1 首先检验linux系统是否安装了ssh server 在终端中输入 xff1a ssh localhost 若出现 xff1a ssh connect to host localhost port 22 Connection refus
  • git子仓库管理使用(添加子仓库,删除子仓库,更新子仓库)

    背景 项目中经常使用别人维护的模块 xff0c 在git中使用子模块的功能能够大大提高开发效率 使用子模块后 xff0c 不必负责子模块的维护 xff0c 只需要在必要的时候同步更新子模块即可 例如一个使用了子仓库的代码库 xff0c 如何
  • 串口发送数据,只接收到00的原因之一

    1 环境 xff1a STM32F103RCT6 KEIL 5 2 现象 xff1a 不管我发送任何类型的数据 xff0c 在串口助手上显示接收到的都是00 xff0c 我头很大 xff0c 去网上找了别人的代码对比检查 终于 xff0c
  • Eclipse常用技巧总结

    关于eclipse的使用方面 xff0c 其实有些东西都是小技巧的东西 xff0c 知道了后 xff0c 对编程会带来很大的方便 一 老是使用鼠标操作 xff0c 有的功能要点好多次鼠标 xff0c eclipse都有哪些热键呢 xff1f
  • 新学期flag-适合每个人的专业课

    在果壳上看了各学科入门书籍推荐这个帖子 xff0c 决定自己好好扩展一下自己的眼界 xff0c 开启一个伟大的阅读计划 xff1a 1 师从天才 作者 美 罗伯特 卡尼格尔 出版社 上海科技教育出版社 评语 sunfield推荐 xff08
  • Android指纹识别,看这一篇就够了

    在Android6 0 xff08 Api23 xff09 的时候 xff0c Android系统加入了指纹识别的api接口 xff0c 即FingerprintManager xff0c 定义了最基础的指纹识别接口 不过 xff0c 在A
  • 集成学习——机器学习(周志华)

    集成学习 目录 xff1a 个体和集成BoostingBagging与随机森林 Bagging随机森林 综合策略 平均法投票法学习法 多样性 误差 分歧分解多样性度量多样性增强 内容 xff1a 个体和集成 集成学习是通过构建并结合多个学习
  • 15-[LVI-SAM]分析总结

    2021SC 64 SDUSC LVI SAM分析总结 这是我的LVI SAM代码分析的最后一篇 在这一篇 xff0c 我会做一个总结 xff0c 对我前面的Blog做一个综述 xff0c 分享在分析的过程中 xff0c 我的收获 文章目录
  • Java编程思想个人读后感

    今天又拿起了Java编程思想啃了起来 xff0c 前段时间看了二十来章 xff0c 但感觉心静不下来 xff0c 有许多知识没有消化 xff0c 所以昨天又从第一章开始学起 xff0c 这次也不强加自己一天要学一两章 xff0c 也觉得那样
  • MySQL 数据备份与还原

    转载自 xff1a https www cnblogs com kissdodog p 4174421 html 一 数据备份 1 使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件 表的结构和表中的数