MYSQL教程:使用备份恢复数据

恢复过程包括两个信息源---备份文件和二进制日志,备份文件可使用数据恢复到执行备份时的状态,而二进制日志可恢复到发生故障时的状态。下面分别介绍如何利用这两个文件恢复一个数据库或恢复单个数据表。

恢复整个数据库的步骤:

把需恢复的数据库的整个目录的内容拷贝到其它地方,以备用。

使用最近的备份文件重载数据库。如果使用mysqldump生成的备份,则可使用它们作为mysql的输入重载;如果是通过拷贝数据库目录来备份的,则要关闭数据库服务器,再把备份重新拷贝到数据目录,再重启数据库服务器。

通过二进制日志重做事务,恢复到出错点的数据。具体操作是这样的,用mysqlbinlog把日志转换成ASCII格式,再把它作为mysql的输入,并指定--one-database选项,以便mysql只执行你指定的数据库恢复。如:

% ls -t -r -l binlog.[0-9]* | xargs mysqlbinlog | mysql --one-database db_name

但上面命令只适合所有日志文件名具有相同长度的情况。否则需用下面的Perl代码来处理:

#!/usr/bin/perl -w# sort_num.pluse strict;my @files = <>;             #read all input file@files = sort { my $anum = $1 if $a =~/\.(\d+)$/;         #sort them by numeric extension                my $bnum = $1 if $b =~/\.(\d+)$/;                $anum <=> $bnum;              } @files;print @files;              #print themexit(0);

如下使用该脚本

% ls -l binlog.[0-9]* | sort_num.pl | xargs mysqlbinlog | mysql --one-database db_name

上面讨论的是需所有日志文件的情况,但多数情况下我们只需备份后生成的几个日志文件,这时,可用以下命令来重做。

% mysqlbinlog binlog.1234 | mysql --one-database db_name
% mysqlbinlog binlog.1235 | mysql --one_database db_name
...

如果我们需恢复因执行DROP DATABASE,DROP TABLE或DELETE语句而损坏的数据库,就需在日志文件中删除该语句,否则重做后结果还是一样。所以需把日志转换成ASCII格式并保存起来,再用编辑器打开该文件,删除这些语句后再重做。

如果使用文本变更日志,则不需使用mysqlbinlog程序,因为该日志文件本身就是ASCII格式。

恢复使用BACKUP TABLE命令备份的数据表可用RESTORE TABLE语句:

备份语句:

mysql> BACKUP TABLE table_name1,table_name2 TO '/backup/table_backup';

恢复语句:

mysql> RESTORE TABLE table_name1,table_name2 FROM '/backup/table_backup';

恢复有外键的数据表,可用SET FOREIGN_KEY_CHECK = 0;语句先关闭键字检查,导入表后再重启它,赋值为1表示检查有效。

恢复InnoDB表空间,当服务器重启时,InnoDB处理程序会执行自动恢复工作,通过选项文件[mysqld]段中的set-variable=innodb_force_recovery=level设置自动恢复的级别,推荐典型的启动值为4。如果需从备份文件恢复,则和上面介绍的方法一样。BDB数据表的恢复也一样,启动服务器时它会进行自动恢复。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, mysql
, 日志
, 文件
, 备份
, 语句
, mysql mysqlbinlog
, mysql备份恢复
, mysqlbinlog远程
, 恢复语句
, mysqlbinlog
, Table使用教程
MySQL数据备份恢复
,以便于您获取更多的相关知识。

时间: 2024-09-29 07:47:00

MYSQL教程:使用备份恢复数据的相关文章

MySQL数据库中备份/恢复的两方法介绍

  下面介绍MySQL数据库备份/恢复的两种方法. 方法一: query($sql); } //将生成的临时备份文件合在一起 $outfile = date("Y-m-d").".sql"; if(file_exists($dbdir.$outfile)) @unlink($dbdir.$outfile); $fpr = fopen($dbdir.$outfile, "a"); foreach($txtname as $txt){ if(file

mysql qpress压缩备份恢复

说明: 1.前面博客已经介绍过gzip压缩方法,备份正常,但后来测试恢复的时候,发现命中bug,报错如下:  InnoDB: Page [page id: space=9494, page number=27743946] log sequence number 2332453520996 is in the future! Current system log sequence number 2332453312855. InnoDB: Your database may be corrupt

MySQL中xtrabackup备份恢复全攻略

   XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充.对于大批量数据的导入使用mysqldump会出现一定的瓶颈,这一点做过一些数据迁移项目的同学可能感同身受.   数据迁移中的数据量,小有小的好,大有大的招,见招拆招,找到适合的场景是最佳的.     如果现在去Percona官网下载,就会发现最新的版本已经是2.4.6了.下载可以选择一个完整的打包,或者逐个的rpm根据需求来安装也可以.完整的工具大概在60M左右.     而目前的MySQL版本大

MySQL之Xtrabackup备份恢复数据库

一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表.innobackupex是参考了InnoDB Hotbackup的innoback脚本修改

Linux VPS备份教程 手动备份网站数据_Linux

一般来说我们采用手动备份VPS中的网站就可以了.一般老左喜欢1周备份一次网站,这样的频率应该还算是不错的,对于昨天分享的"数据库/网站文件自动定时备份"的方法比较适合数据比较重要,而且不能长期在电脑前维护的. 比如有些朋友经常出差,回来后打开网站发现数据没了等情况,这类朋友还是需要自动备份的.小博客或者小网站可以采用下面老左分享的手动备份网站的方法.由于我比较推荐使用VPS的时候不要用面板,所以操作备份也只能在SSH中进行. 首先,关于数据库的备份,如果你数据库比较小,直接可以登陆我们

安装使用Percona XtraBackup来备份恢复MySQL的教程_Mysql

1.安装XtraBackup yum的安装方法: 自动 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm 然后会看到: Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm Preparing... ################

没有备份、只有归档日志,如何恢复数据文件?

备份|恢复|数据 没有备份.只有归档日志,如何恢复数据文件?系统环境: 1.操作系统:Windows 2000 Server,机器内存128M2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版3.安装路径:C:\ORACLE模拟现象: 可通过重建数据文件来恢复,前提是归档日志文件保存完整先将数据库设置为归档模式SQL*Plusconn system/manager--创建实验表空间create tablespace test datafile'c:\test.ora'

数据库备份/恢复方案

备份|恢复|数据|数据库 利用SQL语言,实现数据库的备份/恢复的功能 体现了SQL Server中的四个知识点: 1.   获取SQL Server服务器上的默认目录 2.   备份SQL语句的使用 3.   恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4.   作业创建SQL语句的使用   /*1.--得到数据库的文件目录  @dbname 指定要取得目录的数据库名   如果指定的数据不存在,返回安装SQL时设置的默认数据目录   如果指定NULL,则返回默认的SQL备

MySQL 备份恢复单个innodb表的教程

在实际环境中,时不时需要备份恢复单个或多个表(注意:这里除非明确指定,所说的表一律指InnoDB表),而对于innodb引擎恢复单个表需要整体的恢复,xtrabackup也可以单个表恢复,只不过是用的正则过滤的,不知最新版本是否支持表空间传输特性.本文将要说说怎么移动或复制部分或全部的表到另一台服务器上,而所要用到的技术点就是transportable tablespace特性,这就意味着MySQL5.6.6以及以上版本才支持. 表空间传输特性允许表空间从一个实例移动到另一个实例上.这在以前版本