博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 数据备份与还原
阅读量:7245 次
发布时间:2019-06-29

本文共 2413 字,大约阅读时间需要 8 分钟。

hot3.png

使用mysqldump命令备份

         mysqldump 命令可以将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump 的工作原理:它先查询需要备份的表的结构,再在文本文件中生成一个CREATE 语句。然后,将表中的所有记录转换成一条INSERT语句。这些CREATE语句和INSERT语句都是还原时使用的。还原数据时就可以使用其中CREATE语句来创建表。使用其中的INSERT语句来还原数据。

 1. 备份一个数据库

   使用mysqldump命令备份一个数据库的基本语法如下:

mysqldump –u username –p dbname table1 table2 … >BackupName.sql

    其中,dbname参数表示数据库的名称;table1,table2参数表示表的名称,没有该参数时将备份整个数据库;BackupName.sql 参数表示备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据备份成一个后缀名为sql的文件。

例如:备份student数据库的所有表

mysqldump -u root -p student > stduentdb.sql

注意: 上面的student.sql文件中没有创建数据库的语句(若需要创建数据库的语句,可以使用添加'--databases'选项),因此,student.sql文件中的所有表和记录必须还原到一个已经存在的数据库中。还原数据时, CREATE TABLE 语句会在数据库中创建表,然后执行INSERT语句向表中插入记录。

   通过查看studentdb.sql 中的内容,可以看到student中表的创建语句和记录的插入语句。

    145223_ju2B_1475335.png

 备份student数据库中的score表,如下:

mysqldump -u root -p student score > studentscore.sql

    查看备份文件时,可以看出只有 socre表的创建和记录插入语句,而没有了student表相关信息。

  2.备份多个数据库

   mysqldump 命令备份多个数据库的语法如下:

mysqldmup -u root -p --databases dbname1 dbname2 ... > BackName.sql

    这里要加上"--databases"这个选项(主要是两个"-"),然后后面跟多个数据库的名称。

    备份一个数据库时,也是可以使用上面的命令的,

  例如:备份一个student数据库

mysqldump -u root -p --databases student > studentdb2.sql

    查看备份后的studentdb2文件,可以看出比没有加"--databases"参数时,备份文件中,多了创建数据库的语句,如下图所示:

   150936_nanN_1475335.png

 3.备份所有数据库

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

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

      使用 "--all-database"选项就可以备份所有数据库了。


数据还原:

         使用mysql命令还原

    备份文件中通常包含CREATE语句和INSERT语句。mysql命令可以执行备份文件中的CREATE语句和INSERT语句。通过CREATE 语句来创建数据库和表。通常INSERT 语句来插入备份的数据。mysql语句的基本语法如下:

mysql -u root -p [dataname] < backup.sql

‍‍‍其中,dbname参数表示数据的名称。该参数是可选参数,可以指定数据库名,也可以不指定。指定数据库时,表示还原该数据库下的表。不指定数据库名时,表示还原特定的一个数据库。而备份文件中有创建数据库的语句。

注意: 如果使用 –all-database 参数备份了所有的数据库,那么还原时不需要指定数据库。即如果备份文件里有了创建数据库的语句,就不需要指定数据库了。因为,其对应的sql文件包含有CREATE DATABASE 语句,可以通过该语句创建数据库。创建数据库之后,可以执行sql文件中的USE语句选择数据库,然后在数据库中创建表并且插入记录。


数据库的迁移:

    1.相同版本的MySQL数据库之间的迁移

相同版本的MySQL数据库之间的迁移就是在主版本号相同的MySQL数据库之间进行的数据库移动。最常用和最安全的方式是使用mysqldump 命令来备份数据库。然后使用mysql 命令将备份文件还原到新的MySQL 数据库中。这里可以将备份和迁移同时进行。假设从一个名为host1的机器中备份出所有的数据库,然后,将这些数据库迁移到名为host2的机器上。命令如下:

mysqldump –h name1 –u root –password=password1 –all-databases |mysql –h host2 –u root –password=password2

         其中, “|”符号表示管道,其作用是将mysqldump 备份的文件送给mysql命令;“—password=password1”是name1主机上root用户的密码。同理,password2name2主机上的root用户的密码。通过这种方式可以直接实现迁移。

    2.不同版本的MySQL数据库之间的迁移

    不同版本的MySQL数据库之间进行数据迁移前通常是MySQL升级的原因。

    高版本的MySQL数据库通常都会兼容低版本。但是,高版本的MySQL数据库很难迁移到低版本的MySQL数据库。数据库迁移时要特别的小心,最好使用mysqldump命令来进行备份,避免迁移时造成的数据丢失。

转载于:https://my.oschina.net/lvhuizhenblog/blog/482868

你可能感兴趣的文章
凯萨医疗机构的CIO分享数字化转型经验
查看>>
激光投影企业对会议市场发起魅力攻势
查看>>
WiFi万能钥匙首推WiFi行业安全险
查看>>
负载压力测试中监理的工作重点
查看>>
《拥抱变化——社交网络时代的企业转型之道》一信誉和风险管理
查看>>
09_EGIT插件的安装,Eclipse中克隆(clone),commit,push,pull操作演示
查看>>
《Scala机器学习》一一2.7 总结
查看>>
《编写高质量代码:改善c程序代码的125个建议》——第2章 保持严谨的程序设计,一切从表达式开始做起 建议12:尽量减少使用除法运算与求模运算...
查看>>
nginx error_log 错误日志配置说明
查看>>
编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第3章3.2节服务遍历
查看>>
Monkey 服务器项目开源授权协议更改
查看>>
《XSS跨站脚本攻击剖析与防御》—第6章6.5节利用Flash进行CSRF
查看>>
好的代码至少要修改两遍
查看>>
新零售时代的架构思考
查看>>
《Linux/UNIX系统编程手册(上、下册)》——第1章 历史和标准 1.1UNIX和C语言简史...
查看>>
《数据驱动安全:数据安全分析、可视化和仪表盘》一1.1 数据分析简史
查看>>
《大数据算法》一1.4 本书的内容
查看>>
《单片机串口通信及测控应用实战详解》——导读
查看>>
Chrome 将于 5 月底升级,届时大部分用户将不能使用 HTTP/2
查看>>