`
zyayyx85141
  • 浏览: 12116 次
文章分类
社区版块
存档分类
最新评论

教你如何备份和拷贝 MYSQL 数据库 ―IT技术

 
阅读更多

来自:http://www.verydemo.com/demo_c152_i80158.html

....................................................................

备份数据库的两种主要方法是使用mysqldump 程序或直接拷贝数据库文件(如便用cp、tar 或cpio)。每种方法都有自己的优点和缺点:

mysqldump与MySQL服务器联合进行操作。直接拷贝方法与服务器相脱离,因此必须采取措施确保在进行拷贝时没有客户机在修改这些表。这个问题与利用文件系统备份来备份数据库的问题相同:如果数据库表在文件系统备份时进行更新,则进行备份的表文件处于非一致的状态,并且对于今后恢复该表没有意义。文件系统备份和直接拷贝文件的区别是:对于后者,您具有控制备份进度的权利,因此可以采取措施确保服务器使表处于静止状态。

mysqldump比直接拷贝技术要慢

mysqldump产生可移植到其他机器、甚至具有不同硬件结构的机器上的文本文件。直接拷贝文件不能够移植到其他机器上,除非要拷贝的表使用MyISAM存储格式。ISAM 表只能在具有相同硬件结构的机器之间进行拷贝。例如,将文件从SPARC 的Solaris 机器拷贝到Intel的Solaris 机器(或者相反)是行不通的。由MySQL3.23 引进的MyISAM表存储格式可以解决这个问题,因为该格式与机器独立。因此,如果以下两个条件都满足的话,直接拷贝文件可以移植到具有不同硬件结构的机器上:即另一台机器上也必须运行MySQL3.23以上的版本,并且文件必须表示成MyISAM 表,而不是ISAM 表。

不论选择哪种备份方法,都有某些原则,您必须坚持这些原则,才能确保在需要恢复数据库内容时得到最好的结果:

定期执行备份。设置一个时间表并坚持使用它。告诉服务器运行更新日志。更新日志在您需要恢复崩溃后的数据库时给予帮助。在使用备份文件将数据库恢复到备份时刻的状态后,可以通过运行更新日志中的查询,重新运行备份之后所做的改变。这个操作将数据库中的表恢复到了崩溃时刻的状态。在文件系统备份语言中,数据库备份文件表示完全转储(full dump),而更新日志则表示增量转储。使用一致和可理解的备份文件命名模式。像b a c k up 1、backup2 等名字没有特殊的含义。当需要它执行恢复时,还得浪费时间去查看文件中的内容。您会发现使用数据库名和花时间去构造备份文件名是有好处的。例如:

 

<ccid_nobr>
<ccid_code>% mysqldump samp_db> /usr/archives/mysql/samp_db. 1999-10-02
% mysqldump menagerie> /usr/archives/mysql/menagerie.1999-10-02

在产生备份文件后您可能需要将它们压缩。毕竟备份文件都比较大,所以您可能还需要终止备份文件以避免它们填满磁盘,这与终止日志文件类似。您可以用相同的技术终止备份文件:

用文件系统备份来备份您的备份文件。如果您遭受了一个完全崩溃,不仅毁坏了数据目录而且还破坏了包含数据库备份的磁盘驱动器,那将造成真正的麻烦。您还应该备份更新日志。

将备份文件放在与您的数据库不同的文件系统上。这将减少含有数据字典的文件系统被生成的备份文件填满的可能性。

创建备份的技术对于将数据库拷贝到另一个服务器上也是很有帮助的。将数据库转移到运行在另一个主机上的服务器是很平常的,但您还可以将数据转移到运行在相同主机上的另一个服务器。如果正为一个新版本的MySQL运行服务器,并且想用成品服务器上的某些真实数据来测试它时,可能会这样做。还有一种可能,那就是您得到了一台新的机器并要将所有的数据库移动到新机器上。

用mysqldump 备份和拷贝数据库

当使用mysqldump 程序产生数据库备份文件时,缺省设置是该文件的内容由CREATE TABLE语句组成,这些语句创建被转储的表以及包含表中的行数据的INSERT 语句。换句话说,mysqldump创建在今后可作为对mysql的输入使用的输出结果,以重建数据库。

可以将整个数据库按以下命令转储到单独的文本文件中:

该文件的其余部分由更多的INSERT 和CREATE TABLE 语句组成。如果想在生成备份时进行压缩,可替换成类似下列的命令:

 

<ccid_nobr>
<ccid_code>% mysqldump samp_db | gzip > /usr/archives/mysql/samp_db.1999.10.02.gz

如果您有一个超大数据库,则该输出文件也将是极大的且管理起来很困难。如果您喜欢的话,可以通过在mysqldump命令的数据库名之后命名单个的表来转储这些表的内容。这个操作将该转储文件分成更小的、更多的可管理的文件。下面的例子将说明如何将samp_db的一些表转储到单个文件中:

 

<ccid_nobr>
<ccid_code>% mysqldump samp_db student score event absence > gradebook.sql
% mysqldump samp_db member president > hist-league.sql

如果您正在生成备份文件并打算用这些备份文件来定期刷新另一个数据库的内容,则可能要使用--add-drop-table选项。此选项告诉mysqldump 将DROP TABLE IF EXISTS语句写到备份文件中。然后,当您取出该备份文件并将其加载到第二个数据库时,如果表已经存在将不会出现错误信息。如果您正在运行第二个数据库,可使用此技术利用从第一个数据库中的数据拷贝来定期地加载它。

如果您正在转储数据库使该数据库可以转换到另一个服务器上,则无须创建备份文件。应确保该数据库存在于另一台主机上,然后用一个管道使mysql直接读取mysqldump的输出结果来转储数据库。例如,如果想要将samp_db 数据库从pit_viper.snake.net 拷贝到boa.snake.net,操作如下:

 

<ccid_nobr>
<ccid_code>% mysqladmin -h boa.snake.netcreate samp_db
% mysqldump samp_db | mysql-h boa.snake.net samp_db

1 2

分享到:
评论

相关推荐

    MySQL数据库备份的简单知识

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。有时,正是MySQL管理员造成破坏。管理员已经知道表以破坏,用诸如...

    MySQL完整备份和增量备份脚本

    mysql完整备份和增量备份脚本,本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法,...

    (UNIX、Linux)MySql数据库全量备份和增量备份处理脚本,以及从ftp自动拷贝备份文件(完整操作,附带shell脚本)

    (UNIX、Linux)MySql数据库全量备份和增量备份处理脚本,以及从ftp自动拷贝备份文件(完整操作,附带shell脚本)

    Mysql数据库管理工具 phpmyadmin

    [Mysql数据库管理工具 phpmyadmin 的使用方法] &lt;br&gt;解压mysql.rar,将解压好的所有文件,拷贝至目录\webroot\mysql 目录下。 &lt;br&gt;mysql数据库的网页管理工具,使用方法 http://主机名/mysql 注意,进入后先...

    MySQL数据库的数据备份和恢复详解

    目前MySQL 支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志,还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是...

    Mysql8.0 数据库恢复工具

    文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...

    MySQL数据库:数据库的备份与恢复语句.pptx

    数据库备份:通过导出数据或者表文件的拷贝来保护数据。 二进制日志文件:保存更新数据的所有语句。 数据库复制:MySQL内部复制功能建立在两个或两个以上服务器之间,通过设定它们之间的主从关系来实现的。其中一个...

    MySQL 备份和恢复策略

    MySQL 备份和恢复策略二:使用mysqlhotcopy备份数据库 分类: 数据库 2011-03-09 15:20 204人阅读 评论(0) 收藏 举报 二、使用mysqlhotcopy备份数据库(完全备份,适合小型数据库备份) mysqlhotcopy 是一个 PERL ...

    MYSQL 数据库导入导出命令

    在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。所以一般推荐用SQL脚本形式导入。

    Linxu下Java连接MySQL数据库

    Linxu下Java连接MySQL数据库(通过jdbc)

    MySQL零拷贝技术详解.pdf

    MySQL零拷贝技术详解

    强行拷贝sam数据库

    强行拷贝sam数据库

    mysql-oracle数据库备份批处理

    包括 mysql 表 、数据库备份还原 oracel 数据库备份 文件拷贝等批处理

    如何备份MySQL数据库

    在MySQL中进行数据备份的方法有两种: 1. mysqlhotcopy 这个命令会在拷贝文件之前会把表锁住,并把数据同步到数据文件中,以避免拷贝到不完整的数据文件,是最安全快捷的备份方法。 命令的使用方法是: ...

    虚拟主机MySQL数据库的备份与还原的方法

    以前介绍过一个小巧的MYSQL备份PHP脚本程序,不过那适合没有MySQL Shell权限的虚拟主机...其次备份时候要停止MYSQL服务器或者锁定相应的表,否则如果拷贝过程中正好在插入/改写数据库就挂了,不适合需要不间断的服务器

    MATLAB中关于MySQL数据库的操作

     Step 1:将mysql-connector-java-5.1.7-bin.jar文件拷贝到……MATLABR2009ajavajar oolbox  Step 2:到……MATLABR2009a oolboxlocal目录下,找到classpath.txt文件,打开,并添加用来加载mysql的jdbc驱动语句: ...

    Python访问Mysql数据库

    它使你能够专注于解决问题而不是去搞明白语言本身。 Python 极其容易上手,其语法极其简单。 (2) 免费、开源 Python 是FLOSS (自由/开放源码软件) 之一。简单地说, 用户可以自由地发布这个软件的拷贝、阅读它的...

    Java连接mysql数据库的JDBC驱动

    有的时候,Java 的使用,有的时候不一定是代码的错误。 首先是要保证需要的类都存在。 上传这个的原因,是因为我在用phpmyAdmin管理...附件包含JDBC的mySQL的驱动,还有这个驱动文件的相关环境配置和应该拷贝到的位置。

    oracle 数据库自动备份脚本

    实现oracle 数据库自动备份+保留最新的7天数据+另一机器拷贝备份的脚本

    服务器数据库备份与恢复

    服务器数据库备份与恢复 备份数据库 拷贝DBBackup.tar.gz 文件到linux服务器内(存放目录不要求) ...拷贝备份的数据库文件 XFSDBbak.sql 到当前目录下。注:不要修改文件名 恢复数据库命令为: ./ Recovery

Global site tag (gtag.js) - Google Analytics