如何使用MYSQL数据库进行备份数据恢复

作者&投稿:尉晨 (若有异议请与网页底部的电邮联系)

数据库毁坏发生的原因有许多,且程度各不相同。如果幸运的话,可能是一两个表的小毁坏(例如,如果您的机器由于断电而暂时停机)。如果不是这 样,可能需要置换整个的数据目录(例如,如果某个磁盘瘫痪而且数据目录在它上)。在其他情况下也需要恢复操作,例



数据库毁坏发生的原因有许多,且程度各不相同。如果幸运的话,可能是一两个表的小毁坏(例如,如果您的机器由于断电而暂时停机)。如果不是这 样,可能需要置换整个的数据目录(例如,如果某个磁盘瘫痪而且数据目录在它上)。在其他情况下也需要恢复操作,例如,当用户错误地删除数据库或表时,或者 错误地删除表的内容时。不论这些不幸的事件发生是由于什么原因,都需要恢复它们。

如果表被毁坏但没有丢失,可试着用myisamchk 或isamchk 来修复它们。如果修复实用程序能修复它们,就根本没有必要使用备份文件。如果表被丢失或不能修复,则需要恢复它们。

恢复过程包括两个信息源:备份文件和更新日志。备份文件将表恢复到进行该备份时的状态。但是,在备份和故障发生这段时间中,表通常已经被修改。 更新日志包含了用来完成这些修改的查询。可以通过将更新日志作为对mysql的输入来重复这些查询(这就是为什么需要更新日志的原因。如果您还没有使更新 日志有效,现在赶快做,并在进一步读取之前生成一个新的备份)。

恢复过程根据必须恢复的信息的多少而变化。事实上,恢复整个数据库比恢复单个的表要容易,因为对数据库应用更新日志比对表要容易。

恢复整个数据库

首先,如果要恢复的数据库是含有授权表的mysql数据库,将需要使用--skip-grant-tables选项运行服务器。否则,服务器将 抱怨无法找到授权表。在恢复表之后,执行mysqladmin flush-privileges 来告诉服务器加载授权表,并用它们启动。

将原数据库目录的内容拷贝到其他的地方。例如,您可能会在稍后用它们进行崩溃表的事后分析检查(post-mortem examination)。

用最新的备份文件重新加载数据库。如果您打算使用由mysqldump 加载的文件,则需要将它们作为mysql的输入。如果打算使用从数据库中直接拷贝的文件(如,用tar 或c p),则将它们直接拷贝回到该数据库目录中。但是,在这种情况下,应该在拷贝这些文件之前关闭服务器,然后再重新启动它。

用更新日志重做在进行备份后又修改了数据库表的查询。对于所有可用的更新日志,可使用它作为mysql的输入。指定--one- database 选项,使mysql只对想要恢复的数据库执行查询。如果您知道需要使用所有的更新日志文件,可在包含日志的目录中使用下列命令:

% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_name

ls 命令产生更新日志文件的单列列表,更新日志文件根据服务器生成的顺序进行排序(要知道,如果您修改了其中的任何文件,排序的顺序都将改变,这将导致更新日志按错误的顺序使用)。

您很可能必须使用某些更新日志。例如,如果自备份以来所产生的日志命名为update.392、pdate.393 等等,可以重新运行它们中的命令: % mysql--one-database db_name < updata.392 % mysql--one-database db_name < updata.393 …

如果正在运行恢复并打算使用更新日志恢复由于失策的DROP DATA BASE、DROPTABLE或DELETE 语句而丢失的信息,应确保先从更新日志中删除这些语句。

恢复单个的表

恢复单个表是很困难的。如果有通过mysqldump 生成的备份文件并且它恰好不包含您想要的表数据,则需要抽取相关的行并用它们作为mysql的输入,这部分较容易。困难的是抽取应用于该表的更新日志的片 段。您会发现: mysql_find_rows 实用程序对这方面有帮助,它可以从更新日志中抽取多行查询。

另一种可能性是用另一个服务器恢复整个数据库,然后将所要的该表的文件拷贝到原始数据库中。这实际很容易!在将文件拷贝回数据库目录时,应确保原始数据库的服务器关闭。




~

mysql如何备份数据
答:1.1、 mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:MySQLdump常用 mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql 1.2、 mysqldump常用操作实例 1...

mysql数据库如何备份?
答:并找到数据库目录data,然后,在C:MySQL data 找到对应数据库名称的子目录C:MySQLdataTestA,粘贴拷贝到HostB的Data目录下,是HostA同HostB MySQL数据目录下的文件相同,刷新HostB的phpMyAdmin察看一下数据库列表,我们看到TestA已经出现,并且作查询修改等操作都正常,备份恢复恢复成功。

mysql到底如何备份
答:数据备份是数据容灾的最后一道防线,即便有着两地三中心的架构,备份也依然重要。如果备份出问题,备份时影响了交易业务,备份数据无法恢复,这些也是企业难以承受的。所以选择合适的备份工具尤为重要。每个企业级数据库都会有配套的备份工具,MEB(MySQL Enterprise Backup)就是MySQL企业版中非常重要的工具之一...

mysql中可以用于备份数据库的命令是
答:MySQL数据库备份的命令:1、备份db1数据库中所有表(包括表结构和数据,不包括创建db1数据库的语句)。2、备份db1数据库中所有表(包括表结构和数据,包括创建db1数据库的语句)。3、备份db1数据库中t1、t2、t3表(包括表结构和数据,不包括创建db1数据库的语句)。4、备份多个(db1、db2)数据库...

怎样配置MySQL数据库双机热备份
答:实现 mysql 数据库的热备份。 2、要想实现双机的热备首先要了解主从数据库 1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。2、要想实现...

怎么用navicat自动备份mysql数据库
答:方法/步骤 1打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。2双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。3点击保存,弹出个命名对话框,给这个任务取个名字,点击“确定”。4点击“设置”计划任务。5弹出的对话框,选择...

怎样备份mysql中所有的数据库(sql怎么备份数据库)
答:mysql-uroot--password=root 备份数据库命令:mysqlmp-uroot--password=root--databasehelloworld>helloworld_backup.sql 其他用法:1.导出整个数据库 mysqlmp-u用户名-p数据库名>导出的文件名 mysqlmp-uwcnc-psmgp_apps_wcnc>wcnc.sql 2.导出一个表 mysqlmp-u用户名-p数据库名表名>导出的文件名 my...

如何进行数据库备份和恢复 mysql
答:MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。1.Win32下MySQL的备份与还原 1.1 备份 开始菜单 | 运行 | cmd |利用“cd /Program Files/MySQL/MySQL Server 5.0/bin”命令进入bin文件夹 | 利用“mysqldump -u 用户名 -p databasename >exportfilename”导出数据库到文件,如...

请问mysql怎么自动备份数据库?
答:工具/原料 navicat for mysql mysql 5.5 方法/步骤 打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。点击保存,弹出个命名对话框,给这个任务取个名字,点击“确定”点击“...

怎么备份mysql数据库
答:1、先用工具连接到数据库,如Navicat Premium 2、在要备份的数据库点右键,选择转储sql文件-结构和数据 3、然后选择备份路径和备份文件名,保存即可。