拷贝数据库文件备份:
由于MySQL的数据库和表是直接通过目录和表文件实现的,因此直接复制文件来备份数据库数据,对MySQL来说特别方便。而且自MySQL 3.23起MyISAM表成为缺省的表的类型,这种表可以为在不同的硬件体系中共享数据提供了保证。
使用直接拷贝的方法备份时,尤其要注意表没有被使用,应该对表进行读锁定或停止MySQL服务。备份一个表,需要三个文件:
对于MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的数据文件
tbl_name.MYI 表的索引文件
对于ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的数据文件
tbl_name.ISM 表的索引文件
对于MyISAM表,你可以从运行在不同硬件系统的服务器之间复制文件,例如,SUN服务器和INTEL PC机之间。
当 然,这只是备份一个数据表,在很多情况下我们需要备份完整的数据库,这个时候同样可以直接复制数据库文件夹即可完成备份;若想再省点儿事,把整个数据库目 录“data”复制也可以,但是在还原数据时要注意,只能一个一个地还原数据库,因为该目录下有mysql运行时的配置文件,若正在运行的mysql配置 信息遭到还原破坏,整个mysql服务就会无法启动。
SELECT INTO OUTFILE和MYSQLDUMP备份数据:
在“SELECT语句之高级功能使用篇”中讲述了select into outfile的语句结构和使用方法,这里重点讲述mysqldump命令。
MySQLdump命令位于MySQL/bin/目录中,在Windows下使用Commond命令提示符进入该目录执行。
MySQLdump工具可以把整个数据库装载到一个单独的文本文件中。这个文件包含所有重建数据库和表的SQL命令。这个命令取得所有的模式 (Schema)并且将其转换成DDL语法(CREATE语句,即数据库定义语句),还取得所有的数据,并且为这些数据创建INSERT语句。所有的东西 都被包含到了一个文本文件中。这个文本文件可以用一个简单的批处理和一个合适SQL语句导回到MySQL中。这个工具令人难以置信地简单而快速。
有3种方式来调用mysqldump
选择一个数据库或一个数据表备份到一个文件:
/bin> mysqldump [options] db_name [tables] > filename.txt
选择多个数据库备份到一个文件:
/bin> mysqldump [options] --database DB1 [DB2 DB3...] > filename.txt
所有数据库备份到一个文件:
/bin> mysqldump [options] --all--database > filename.txt
Option选择:
--help,-?
显示帮助消息并退出。
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c or --complete_insert
这个选项使得MySQLdump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert 在INSERT命令中加入DELAY选项
-F or --flush-logs 使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f or --force 使用这个选项,即使有错误发生,仍然继续导出
--full 这个选项把附加信息也加到CREATE TABLE的语句中
-l or --lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。
-t or --no-create- info
这个选项使的MySQLdump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d or --no-data 这个选项使的MySQLdump命令不创建INSERT语句。
在您只需要DDL语句时,可以使用这个选项。
--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
-q or --quick 这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path or --tab = path
这 个选项将会将数据库中每一个表创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为 table_name.sql,数据文件被命名为table_name.txt。该参数的path为存放目录,而且该目录必须已经存在。 如:/bin>mysqldump –uroot –p --tab=d:\\ mydata
-w "WHERE Clause" or --where = "Where clause " 筛选将要放到导出文件的数据。
下面来看几组mysqldump命令案例:
将数据库mydata的内容备份到mydata.txt文件中:
/bin>MySQLdump –uroot -p mydata > d:\\mydata.txt
将mydata数据库中的users表的内容备份到d:\\users.txt:
/bin>MySQLdump –uroot -p mydata users > d:\\users.txt
将mydata数据库中的users表username值为“feihu”的数据备份到d:\\users.txt:
/bin>MySQLdump –uroot -p --where=”username=’feihu’” mydata users > d:\\users.txt;
将mydata数据库以及内部表的创建结构(DDL)备份到d:\\users.txt:
/bin>MySQLdump –uroot –p -d mydata > d:\\mydata.txt
将mydata和mydata2数据库同时备份到d:\\users.txt:
/bin> MySQLdump –uroot –p -d mydata mydata2 > d:\\mydata.txt
将所有数据备份到一个数据库,命令怎么写呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。)
当需要将还原备份数据时,使用如下语句:
/bin>mysql –uroot –p mydata < d:\\mydata.txt;
注意使用“<”符号,导入数据。还可以使用source命令执行文件中的脚本来还原数据,如:
Mysql>source d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢复数据
关于load data infile语句的使用已经在别一节讲述过了,详细请参考“使用LOAD DATA和INSERT语句导入Mysql数据”。如果你仅仅恢复数据, mysqlimport完全是与LOAD DATA 语句对应的,读者可以任意选择一个去实现。
MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数 以及大量的选项可供选择。这个工具把一个文本文件(textfile)导入到你指定的数据库和表中。比方说我们要从文件users.txt中把数据导入到 数据库mydata中的表users中:
/bin>mysqlimport –uroot –p mydata d:\users.txt
注意:这里users.txt是我们要导入数据的文本文件,而mydata是我们要操作的数据库,数据库中的表名是users,这里文本文件的数据格式必须与users表中的记录格式一致,否则MySQLimport命令将会出错。
其中表的名字是导入文件的第一个句号(.)前面文件字符串,另外一个例子:MySQLimport mydata users.2009.10.txt; 那么我们将把文件中的内容导入到数据库mydata 中的users表中。
上面的例子中,都只用到两个参数,并没有用到更多的选项,下面介绍MySQLimport的选项
-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force 不管是否遇到错误,MySQLimport将强制继续插入数据
-i or --ignore MySQLimport跳过或者忽略那些有相同唯一关键字的行, 导入文件中的数据将被忽略。
-l or -lock-tables 数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
-r or -replace 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。
--fields-enclosed-by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起。 默认的情况下数据是没有被字符括起的。
--fields-terminated-by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。您可以用此选项指定数据之间的分隔符。默认的分隔符是跳格符(Tab)
--lines-terminated-by=str 此选项指定文本文件中行与行之间数据的分隔字符串或者字符。 默认的情况下MySQLimport以newline为行分隔符。您可以选择用一个字符串来替代一个单个的字符:一个新行或者一个回车。
MySQLimport命令常用的选项还有-v 显示版本(version),-p 提示输入密码(password)等。
如果,我们要导入一个文件(Orders.txt)中行的记录格式是这样的:
"1", "ORD89876", "1 Dozen Roses", "19991226"
我们的任务是要把这个文件里面的数据导入到数据库mydata中的表格Orders中,我们使用这个命令:
/Bin>MySQLimport -uroot–prl --fields-enclosed-by=" --fields-terminated-by=, mydata Orders.txt
第一部分,/Bin>,告诉操作系统你要运行的命令是MySQL/bin目录下的MySQLimport,选项p是要求输入密码,这样就要求你在改 动数据库之前输入密码,操作起来会更安全。我们用了r选项是因为我们想要把表中的唯一关键字与文件记录中有重复唯一关键字的记录替换成文件中的数据。我们 表单中的数据不是最新的,需要用文件中的数据去更新,因而就用r这个选项,替代数据库中已经有的记录。l选项的作用是在我们插入数据的时候锁住表,这样就 阻止了用户在我们更新表的时候对表进行查询或者更改的操作。
附件:
谈到数据备份与还原,不免与批处理有些关系,批处理是一种非交互式运行MySQL程序的方法,如同您在MySQL中使用的命令一样。
为了实现批处理,您重定向一个文件到MySQL程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在MySQL中输入的命令相同的文本。
比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):
USE mydata; INSERT INTO Orders (Orders_ID, username) VALUES(1, "Block"); INSERT INTO Orders (Orders_ID, username) VALUES(2, "Newton"); INSERT INTO Orders (Orders_ID, username) VALUES(3, "Simmons");
注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。上面的USE命令选择数据库,INSERT命令插入数据。
下面我们要把上面的文件导入到数据库中,导入之前要确认数据库已经在运行,即是MySQLd进程(或者说服务,Windows NT下面称为“服务”,unix下面为“进程”)已经在运行。
然后运行下面的命令:
/bin>mysql –uroot –p mydata < d:\New_Data.txt;
接着按提示输入密码,如果上面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。
现在读者可能会问,"究竟为什么我要输入所有的这些SQL语句到文件中,然后通过程序运行它们呢?”
这样看起来好像需要大量的工作。很好,你这样想很可能就对了。但是假如你有从所有这些命令中产生的log记录呢?现在这样就很棒,嗯,大多数数据库都会自 动产生数据库中的事件记录的log。而大部分log都包含有用过的原始的SQL命令。因此,如果您不能从您现在的数据库中导出数据到新的MySQL数据库 中使用,那么您可以使用log和MySQL的批处理特性,来快速且方便地导入您地数据。当然,这样就省去了打字的麻烦。
转载于:https://my.oschina.net/beyondhjjyt/blog/108221
分享到:
相关推荐
- **二进制日志(Binlog)备份**:MySQL的二进制日志记录了所有更改数据库的操作,可用于数据恢复和点恢复。 - **直接拷贝数据文件**:对于MyISAM表,可以直接复制表数据文件;而对于InnoDB表,可以通过拷贝数据文件...
### MySQL 数据备份与恢复操作详解 #### 一、直接替换 /var/lib/mysql 文件夹 这种方法适用于需要快速替换整个 MySQL 数据库实例的情况,如系统迁移、紧急恢复等场景。但需注意,这种做法可能会导致数据不一致的...
总结,MySQL 数据备份恢复涉及多种策略和工具,理解并熟练掌握这些方法对于保障数据库安全至关重要。在实际操作中,应根据业务需求和资源条件选择合适的备份恢复方案,并定期进行演练,确保在关键时刻能够快速、准确...
通过上述内容的学习,我们可以了解到 MySQL 数据备份与恢复的方法,以及如何利用主键和外键约束来维护数据的一致性。同时,也介绍了 MySQL 的存储引擎选择及其对性能的影响。掌握这些基础知识对于保障数据库的安全...
在日常操作中,对数据库进行备份和恢复是保障数据安全、防止意外丢失的重要环节。本文将深入探讨MySQL数据库的备份与恢复策略,并提供相关工具的使用指南。 一、MySQL备份的重要性 数据库备份是防止数据丢失的关键...
NBU&MySQL备份恢复 NBU(NetBackup)是一款功能强大的备份恢复软件,而MySQL是一款流行的关系型数据库管理系统。本文将详细介绍如何使用NBU来备份和恢复MySQL数据库。 NBU备份mysql的优势 使用NBU备份mysql数据库...
其中一种方法是使用 SELECT INTO OUTFILE 语句将数据备份到一个文件中。这种方法可以将选择的行写入到一个文件中,文件在服务器主机上被创建,并且不能是已经存在的。 SELECT INTO OUTFILE 语句 SELECT INTO ...
MySQL 数据库的备份和恢复是数据库管理中至关重要的环节,确保数据的安全性和可恢复性。本文将探讨两种常用的 MySQL 备份策略:直接拷贝数据库文件和使用 `mysqlhotcopy` 工具。 首先,直接拷贝数据库文件是一种...
MySQL 数据备份和还原是数据库管理中非常重要的一步,能够防止数据丢失和恢复数据库。下面将介绍 MySQL 数据备份和还原的常用命令。 MySQL 数据备份命令 1. 备份 MySQL 数据库的命令 mysqldump -hhostname -...
通过这次测试,我们可以了解到MySQL数据库的备份恢复流程,以及如何验证恢复的正确性。同时,也强调了恢复过程中服务器性能的重要性,以及备份策略对于数据保护的关键性。在实际环境中,企业应根据自身需求制定合适...
下面我们来了解一下MySQL常见的有三种备份恢复方式: 1、利用Mysqldump+二进制日志实现备份 2、利用LVM快照+二进制日志实现备份 3、使用Xtrabackup备份 一:实验环境介绍: 系统介绍:CentOS6.4_X64 数据库版本:...
1. 使用最近的全量备份恢复整个数据库。 2. 应用自全量备份后的增量备份(binlog)以恢复至最近的状态。 3. 如果在灾难发生前有binlog,需要重放这些日志以进一步更新数据库。 4. 定期演练恢复过程,以确保在实际...
本文将深入探讨MySQL数据备份恢复的基本概念、常用方法以及E零数据备份v1.0工具的特性。 首先,理解MySQL数据备份的重要性。在日常运营中,由于硬件故障、软件错误、人为误操作等原因,可能会导致数据丢失。因此,...
### MySQL 数据备份与恢复详解 #### 一、使用 `INFILE` 和 `OUTFILE` 进行数据导入与导出 在日常的数据库管理工作中,经常需要将一个数据库中的部分数据移动到另一个数据库中去。对于这种情况,使用 `mysqldump` ...
MySQL的备份和恢复是数据库管理的关键环节,确保数据的安全性和可恢复性。本文主要探讨了在MySQL 5.0.22版本下针对MyISAM和InnoDB两种表类型的备份策略,以及各种备份工具和方法。 首先,MySQL支持多种备份工具,如...
本知识点将深入探讨如何在SpringBoot环境下对MySQL数据库进行备份与恢复,以确保数据的安全。 首先,`MysqlBackup.java` 文件很可能是实现备份和恢复功能的核心Java类。在SpringBoot中,我们可以利用JDBC(Java ...
《Effective MySQL之备份与恢复》对照讲解不同的备份和恢复策略,将帮助您防止MySQL数据因范围广泛的各种灾难受到损坏。主要内容理解不同备份策略如何影响锁定和系统可用性了解静态备份选项和时间点要求的重要性体会...
本文将讲解 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb。 MySQL 的备份机制 MySQL 提供了多种备份机制,包括 mysqldump、mysqlhotcopy、SQL 语法备份、备份二进制...
标题中的“一个MySQL数据备份/恢复的简易方法”指的是通过简单的PHP脚本来实现MySQL数据库的备份和恢复。这种简易方法适用于小型项目或个人用途,它不是企业级的完整解决方案,但能够满足基本的数据保护需求。 在...