mysql 5.5 mysqldump_mysql 5.5 mysqldump 原文翻译

根据mysql 5.5第6.4章节理解和自己翻译水平有限如有纰漏请指教,原文如下.

6.4 使用mysqldump备份(Using mysqldump for Backups)

首先多余的不用说了备份用来干什么大家都清楚。

mysqldump备份分两种输出形式:

1. 无--tab选项,输出标准的SQL格式。输出包含CREATE语句(databases,tables,stored routines,and so forth),INSERT语句插入数据到表。输出可以保存成一个文件,之后可以用mysql再次创建。选项可以控制输出SQL语句格式,文件类型。

2. 含--tab选项,每个表对应两个备份文件。一个文件为由tab分割的文本,一行对应一条数据记录,在目录中这个文件输出名为tb1_name.txt。同样会创建一个含有CREATE TABLE语句,名为tb1_name.sql的文件。

6.4.1 使用mysqldump备份SQL数据(Dumping Data in SQL Format with mysqldump)

默认语法

shell>mysqldump [arguments] > file_name

备份所有数据库

shell>mysqldump --all-databases > dump.sql

如果你数据库有密码上面那样当然是不行的加上用用户密码选项

shell>mysqldump -uroot -p --all-databases > dump.sql

选择性的备份数据库

shell>mysqldump --databases db1 db2 db3 > dump.sql

--databases选项会把后面几个名称作为数据库名。没有这个选项mysqldump会把第一个当成数据库名,后面的当成表名。

--all-databases或--databases,mysqldump会为每一个数据库写入CREATE DATABASE和USE。以确保当备份文件被再次载入的时候,如果数据库不存在则创建数据库,然后设置为当前数据库(USE DATABASES),当INSERT的时候数据库的内容均会加载到同一个数据库中。

如果想要备份文件载入时强制删除数据库,可以使用--add-drop-database。这样mysqldump会在CREATE DATABASE前写入DROP DATABASE。

备份单个数据库

shell>mysqldump --databases test > dump.sql

在单个数据库时可以这样简写

shell>mysqldump test > dump.sql

省略--databases时备份文件没有CREATE DATABASE,USE。有下面几方面含义。

1.当你导入备份文件时,你必须选择一个默认数据库名这样程序才知道要导入到哪个数据库。

2.当导入到时候你可以选择一个不同的数据库名。

3.如果要导入到数据库不存在,你必须提前创建。

4.因为输出文件没有CREATE DATABASE,所以--add-drop-database选项没有效果,如果你使用也没有DROP DATABASE。

选择表备份,表名跟在数据库名之后

shell>mysqldump test t1 t3 t7 > dump.sql

6.4.2 导入SQL备份文件(Reloading SQL-Format Backups)

导入由mysqldump备份的文件,如果使用了--all-databases或--databases选项,包含CREATE DATABASE和USE。且不需要导入到不同的数据库中,可以这样写。

shell>mysql < dump.sql

另外在mysql内部你可以这样写

mysql>source dump.sql;

如果是简写单个数据库导出没有CREATE DATABASE和USE,如果需要则先创建数据库。

shell>mysqladmin create db1

接着选择具体的数据库

shell>mysql db1 < dump.sql

另外在mysql内部创建数据库,选择数据库,导入备份:

mysql>CREATE DATABASE IF NOT EXISTS db1;

mysql>USE db1;

mysql>source dump.sql

6.4.3 使用mysqldump以分割文本方式备份(Dumping Data in Delimited-Text Format with mysqldump)

mysqldump备份时使用--tab=dir_name,使用dir_name作为备份文件输出目录,每一个表对应两个文件,文件名为表名。例如表名为t1,文件名则为t1.sql和t1.txt。.sql文件含表的CREATE TABLE语句。.txt文件含表的数据,一行对应一条数据记录。

例如备份数据库db1到/tmp目录

shell>mysqldump --tab=/tmp db1

.txt文件被服务器创建其中包含表数据,为系统用户所有。当程序运行SELECT ... INTO OUTFILE写入文件时你必须拥有相应权限,.txt存在时会发生错误。

服务器发送创建CREATE备份表命令给mysqldump写入.sql,因此文件是mysqldump所有。

--tab最好的用法是本地备份。如果你用来备份远程服务器,--tab的目录必须本地和远程服务器都存在,.txt文件将会写入到远程服务器(on the server host)目录中,.sql文件将会写入到本地目录中(on the client host)。

对于mysql --tab,默认情况下服务器将表数据写入.txt一行一条记录两个值之间tab分割,没有引号,新的一行在行的末尾。(这些都为相同的默认值SELECT ... INTO OUTFILE)

通过选项输出不同的格式,mysqldump支持如下:

--fields-terminated-by=str

字段值之间的分隔符默认为tab

--fields-enclosed-by=char

字段值两边的分隔符默认为空

(PS这个翻译过来真不知道说的对不对.效果可以参考INSERT INTO中如果VALUE是字符型就要加上双引号中的双引号)

--fields-optionally-enclosed-by=char

这个效果同上但只有字符型的字段值才会加默认值为空

--fields-escaped-by=char

转义特殊字符的字符默认值无

--lines-terminated-by=str

记录之间的分隔符默认值是换行

根据这些选项你可以指定任何值,可能需要在命令行中对值进行适当的引用或转义。另外可以使用16进制表示值,假设想要mysqldump输出的值引用双引号。可以添加 --fields-enclosed-by 选项指定值为双引号。但是这个值往往是特殊的转义字符需要处理一下。例如在unix上可以这样使用双引号:

--fields-enclosed-by='"'

在其他的平台可以使用16进制表示:

--fields-enclosed-by=0x22

这是几个选项的同时使用的例子,记录以逗号分隔多条记录之间用换行/回车:

shell> mysqldump --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0adb1

(windows平台--fields-enclosed-by要等于0x22。换行符也没有出来变成了乱码,这个可能也需要改)

当设置了数据输出格式,在导入备份数据的时候同样也要设置相同的格式,以保证内容正确导入。

6.4.4 导入以分割文本方式的备份(Reloading Delimited-Text Format Backups)

使用mysqldump --tab文件备份,每一个表都被存储成包含CREATE TABLE语句的.sql文件和保护表数据的.txt文件。导入表之前先定位到备份文件的目录。这样.sql文件先创建空的表,然后.txt文件导入数据:

1 shell> mysql db1 < t1.sql

2 shell> mysqlimport db1 t1.txt

另外在mysql端导入需要使用LOAD DATA INFILE:

1 mysql> USE db1;

2 mysql> LOAD DATA INFILE 't1.txt' INTO TABLE t1;

(PS:范例中t1.txt的路径为当前选中数据库的路径,可以修改为绝对路径'C:/t1.txt')

如果在备份文件时使用了控制数据格式的选项,在使用mysqlimport或LOAD DATA INFILE导入时也需设置相同的选项:

1 shell>mysqlimport --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1 t1.txt

1 mysql>USE db1;

2 mysql>LOAD DATA INFILE 't1.txt' INTO TABLE t1

3 ->FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"'

4 ->LINES TERMINATED BY '\r\n';

6.4.5 mysqldump技巧(mysqldump Tips)

这一章解决些常见问题所需的技术

如何创建备份数据库

如何从一个服务器将数据库拷贝到另一个服务器

如何备份一个存储程序(存储过程函数,触发器,日志)

如何备份数据和创建分离

6.4.5.1 创建数据库备份文件(Making a Copy of a Database)

1 shell> mysqldump db1 > dump.sql

2 shell> mysqladmin create db2

3 shell> mysql db2 < dump.sql

在使用db1备份文件覆盖db2时不要使用--databases选项因为那样会在备份文件中写入USE db1.

6.4.5.2 从一个服务器复制数据库到另一个服务器(Copy a Database from one Server to Another)

服务器1:

1 shell>mysqldump --databases db1 > dump.sql

将备份文件复制到服务器2

服务器2:

1 shell>mysql < dump.sql

使用mysqldump时添加--database选项备份文件会包含CREATE DATABASE和USE语句,如果不存在则会创建同时设为默认数据库在导入数据。

你可以忽略--database选项,但在导入数据库的时候需要创建一个数据库(如果需要)然后设置为当前数据库。

服务器1:

1 shell>mysqldump db1 > dump.sql

服务器2:

1 shell> mysqladmin create db1

2 shell> mysql db1 < dump.sql

所以忽略--database选项就可以选择不同的数据库导入。

6.4.5.3 备份存储程序(Dumping Stored Programs)

以下是存储程序几个可选选项(存储过程函数,触发器,日志)

--events:调度事件

--routines:存储过程和函数

--triggers:触发器

triggers默认是备份的routines,events需要选择性备份默认是不备份的可以选择跳过--skip-events, --skip-routines, --skip-triggers。

6.4.5.4 备份表定义和内容分开(Dumping Table Definitions and Content Separately)

--no-data选项告诉mysqldump不备份表数据,备份文件仅包括创建表。相对的--no-create-info选项告诉mysqldump备份仅包含数据。

示例:

1 shell> mysqldump --no-data test > dump-defs.sql2 shell> mysqldump --no-create-info test > dump-data.sql

一个只备份CREATE存储和事件的例子:

shell> mysqldump --no-data --routines --event stest > dump-defs.sql

6.4.5.5 用备份来测试mysql升级后兼容的问题(Using mysqldump to test for Upgrade Incompatibilities)

当考虑mysql升级时需要谨慎的考虑安装新的版本,独立于现有的版本。这时可以备份现有数据库导入到新的版本中。(这是一个测试新版本经常使用的方法)

在现有服务器:

shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql

在新服务器:

shell> mysql < dump-defs.sql

因为备份文件没有表数据库,所以可以处理的很快。这可以发现潜在的不兼容,而不需要长时间的数据加载操作。查看备份文件处理时发生的警告或错误。

在验证了没有兼容性问题后备份表数据导入到新服务器

在现有服务器:

shell> mysqldump --all-databases --no-create-info > dump-data.sql

在新服务器:

shell> mysql < dump-data.sql

现在检查表内容运行一些测试查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【经典回放】JavaScript学习详细干货笔记之(一)

【经典回放】JavaScript学习详细干货笔记之&#xff08;一&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;二&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;三&#xff09; 目录 一、为什么要学JavaScript 二、JavaScript经典案例 …

Java Attach API

catalog 1. instrucment与Attach API 2. BTrace: VM Attach的两种方式 3. Sun JVM Attach API 1. instrucment与Attach API JDK5中增加了一个包java.lang.instrucment&#xff0c;能够对JVM底层组件进行访问。在JDK 5中&#xff0c;Instrument 要求在运行前利用命令行参数或者系…

TCP之三次握手和四次挥手过程

1 TCP包头里面的标志位 下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。 标志位这里会涉及3个,ACK SYN FIN ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 2 三次握手过程 第一次握手 Client将标志位SYN置1,随机产生一个值seq=J,并将数…

Handler 机制分析

android 子线程和UI线程的交互主要使用Handler的方法进行通信。本文分析Handler机制 Handler 如何使用&#xff1f; Handler的使用比较简单 public class MainActivity extends Activity{private Handler handler new Handler() { public void handleMessage(Message msg) { …

gearman mysql编译_gearman初探(一、编译和安装)

gearman是一个任务分发系统&#xff0c;将计算比较耗时的任务分发给不同的机器专门进行计算&#xff0c;而任务发起的初始程序不必等待这些任务完成就可以返回而继 续执行。笔者最开始做PHP邮件发送的时候&#xff0c;因为邮件发送耗时比较长&#xff0c;这时PHP脚本就会被阻塞…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

学习目标 了解魔法世界中可更改容器——变量了解魔法世界的基本数值类型——字符串、整数了解魔法百宝箱——字典、列表了解列表如何添加值了解字典如何添加值了解字典与列表定义的不同符号 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&…

TCP协议之如何保证传输的可靠性

一、问题 TCP协议之如何保证传输的可靠性?我们先看下TCP的头部图片和TCP头部的字段 /*TCP头定义,共20个字节*/ typedef struct _TCP_HEADER {short m_sSourPort;       // 源端口号16bitshort m_sDestPort;       // 目的端口号16bitunsigned int …

【工具篇】在Mac上开发.Net Core需要的工具

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常开发技巧,如需帮助&#xff0c;请后台留言&#xff1b;[如果觉得本公众号对您有帮助&#xff0c;欢迎关注]在Mac上开发.Net Core需要的工具如果您是一个.NET 开发者&#xff0c;想从Windows切换到Mac上开发.NET或者您已…

【Pix4d精品教程】Pix4Dmapper完整航测内业操作流程手把手图文教程

1. 作业流程图 2. 原始资料准备 原始资料包括影像数据、POS数据以及控制点数据。 确认原始数据的完整性,检查获取的影像中有没有质量不合格的相片。同时查看POS数据文件,主要检查航带变化处的相片号,防止POS数据中的相片号与影像数据相片号不对应,出现不对应情况应手动调…

关于构造函数和this调用的思考

文中一系列思考和内容引发自以下问题&#xff1a;我需要在一个类的构造函数中调用另一个对象的构造函数&#xff0c;并使用this初始化其中的一个引用成员。 主要遇到的问题&#xff1a; 1. 构造函数的初始化列表中能访问this吗&#xff1f; 很明显c创建一个对象分为两部分&…

mysql semi join_MySQL 5.6 Semi join优化之materialization strategy

8月 24, 2014 |Nix.Huang考虑如下查询&#xff1a;select * from Countrywhere Country.code IN (select City.Countryfrom Citywhere City.Population > 7*1000*1000)and Country.continentEurope这个子查询是非相关子查询&#xff0c;我们能和外层循环独立的执行它&#x…

【ArcGIS风暴】何为动态投影?这次全面为您揭开ArcGIS中动态投影的神秘面纱!

本课程配套蓝光视频: 【ArcGIS风暴】GIS动态投影问题 GISer们都见过以下警告,该警告的原因是当前加载的数据的坐标系和当前数据框坐标系不一致导致的,核心问题是地理坐标系不一致。如当前数据的坐标系是GCS_Xian_1980,而数据框的坐标系有可能是WGS_1984等,总之跟要加载的数…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

学习目标 了解魔法世界中的结构表现——缩进了解魔法世界的逻辑判断——if了解魔法世界的多次逻辑判断——ifelse嵌套了解魔法世界中的逻辑运算——且 and 与或 or 推荐 1.《备受好评的看得懂的C语言入门教程》 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的P…

类和类之间的关系

一、类和类之间的关系 UML类图中&#xff0c;常见以下几种关系: 1、泛化&#xff08;Generalization&#xff09; 是一种继承关系&#xff0c;比如动物类和老虎类&#xff0c;老虎继承动物&#xff0c;子类如何特化父类的所有特征和行为 箭头指向:带三角箭头的实线&#xff0…

Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数

一、问题 我们调用数据&#xff0c;大都是可以直接获取表中的数据&#xff0c;或者用复杂点的sql语句组成的。但是&#xff0c;有时候&#xff0c;当这样达不到我们要的全部数据的时候&#xff0c;这时&#xff0c;我们就用到了存储过程【sp】&#xff0c;如果sp需要参数是数组…

js模拟blur

<div></div> 某个事件给div加个属性 $(div).attr(wait,true); $(div).click(function() { if(false!$(this).attr(wait)) return false; })转载于:https://www.cnblogs.com/cndxk/p/4788414.html

中国第一朵企业云

本文讲的是中国第一朵企业云&#xff0c;【IT168 资讯】算起来&#xff0c;中国中化集团公司的ERP完全运行在“云”上已经一个多月了&#xff0c;每每提到这个“创举”&#xff0c;信息技术部总经理彭劲松显得有些兴奋&#xff0c;却仍然很谨慎。作为中国第一家企业云的实践者&…

查缺补漏系统学习 EF Core 6 - 实体配置

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这是 EF Core 系列的第二篇文章&#xff0c;上一篇文章讲解了 EF Core 的一些基础概念&#xff0c;这一篇文章主要围绕实体属性的配置。点击上方或后方蓝字&#xff0c;阅读 EF Core 系列合集。实体配置配置实体的目的&am…

【ArcGIS风暴】捕捉VS经典捕捉,谁更有用武之地?

几乎所有的GIS软件都具有捕捉功能!今天我们一起来聊一聊ArcGIS软件中的捕捉功能吧。 ArcGIS软件中有两个重要的捕捉工具:捕捉和经典捕捉。 目录 一、捕捉(Snapping) 1、捕捉类型 2、捕捉选项

mysql innodb 索引 延迟更新_Mysql覆盖索引与延迟关联

延迟关联&#xff1a;通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。为什innodb的索引叶子节点存的是主键&#xff0c;而不是像myisam一样存数据的物理地址指针&#xff1f;如果存的是物理地址指针不就不需要二次查找了吗&#xff0c;根据myisam和inn…