首页 > 数据库 > MySQL > 正文

MySQL不同存储引擎的数据备份及恢复

2024-07-24 12:34:37
字体:
来源:转载
供稿:网友
  数据备份的目的很直接也很简单,就是为了避免因不可预测、偶然的事件而导致的惨重损失,所以数据越重要、变化越频繁,就越要进行数据备份。本文以MySQL为例,讲讲面对不同的存储引擎如何做数据备份与恢复。
 
  因为MyISAM是保存成文件的形式,所以在备份时有多种方法可以使用,并且大多数虚拟主机提供商和INTERNET平台提供商只允许使用MyISAM格式,掌握MyISAM数据备份就格外重要了。
 
  方法1:文件拷贝:
 
  为了保持数据备份的一致性,我们可以对相关表执行LOCK TABLES操作,对表执行FLUSH TABLES。当然,你只需要限制写操作,这样能够保证在复制数据时,其它操作仍然可以查询表,而FLUSH TABLES是用来确保开始备份前将所有激活的索引页写入硬盘。
 
  标准流程:锁表、刷新表到磁盘、拷贝文件、解锁。
 
  方法2:SQL语句备份:
 
  SELECT INTO ...OUTFILE或BACKUP TABLE都可以进行SQL级别的表备份,需要注意的是这两种方法如果有重名文件,最好是先移除重名文件。另外,BACKUP TABLE备份需要注意输出目录的权限,改方法只是备份MYD和frm文件,不备份索引。
 
  方法3: mysqlhotcopy 备份:
 
  mysqlhotcopy 是一个 Perl脚本,使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库,但其只能运行在数据库目录所在的机器上,且只用于备份MyISAM。
 
  shell> mysqlhotcopy db_name [/path/to/new_directory ]
 
  shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
 
  方法4: mysqldump 备份:
 
  Mysqldump既可以备份表结构和数据,也可以备份单个表、单个库或者所有库,输出是SQL语句文件或者是其它数据库兼容的格式。在之前的文章中,我们较详细的介绍了Mysqldump,本文就不再赘述了。
 
  shell> mysqldump [options] db_name [tables]
 
  shell> mysqldump [options] ---database DB1 [DB2 DB3...]
 
  shell> mysqldump [options] --all—database
 
  方法5:冷备份:
 
  冷备份的方法就很简单粗暴了,在MySQL服务器停止服务时,复制所有表文件。
  
  2)MyISAM数据备份恢复:
 
  不同的备份方式有相应的恢复方法:
 
  如果是mysqldump备份,恢复方法是mysql –u root < 备份文件名;
 
  MyISAM不支持事务和外键,这使得MySQL使用者往往会面临一些挑战,所以,理所当然的当InnoDB支持事务和外键时,即使它的速度较慢,也还是获得了MySQL使用者的青睐。
 
  方法1:mysqldump:
 
  是不是看着很眼熟,没错儿,上面MyISAM数据备份的方法其中之一就是它。Mysqldump也可以对InnoDB提供非物理的在线逻辑热备份,使用方法和MyISAM类似。
 
  方法2:copy file:
 
  InnoDB底层存储的时候会将数据和元信息存在ibdata*, *.ibd, *.frm, *.ib_logfile*等文件中,所以备份了这些文件就相当于备份了InnoDB数据。
 
  方法3:select into:
 
  与MyISAM用法一样。
 
  方法4:商业工具:
 
  InnoDB数据备份有很多商业工具可以使用,例如InnoDB Hotbackup,这是一个在线备份工具,即可以在InnoDB数据库运行时备份InnoDB数据库; ibbackup,将线上的my.cnf所指向的的数据内容备份到my.backup.cnf指向的数据目录。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表