Home > Database > Mysql Tutorial > MySQL备份与恢复的三种方法总结

MySQL备份与恢复的三种方法总结

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 17:23:28
Original
928 people have browsed it

MySQL备份与恢复的三种方法总结,RHEL5.8 ,SElinux关闭,MySQL是tar包初始化安装版本5.5.28

1.利用mysqldump实现从逻辑角度完全备份mysql,配合二进制日志备份实现增量备份

2.利用lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份

3.利用percona公司的xrabackup实现完全热备份与增量热备份

实验环境:RHEL5.8 ,SElinux关闭,MySQL是tar包初始化安装版本5.5.28

一.测试环境准备

1.1 mysql的安装就不说了,见

1.2 编缉/etc/my.cnf把二进制日志存放目录改到其它非数据目录,innodb每表一文件

建立一目录用于存放二进制日志

  • mkdir /mybinlog
  • chown mysql:mysql /mybinlog
  • 修改my.cnf

    启动mysqld

  • service mysqld start
  • 1.3 创建一个测试库与测试表

    1.4 创建用于存放备份的目录

  • mkdir /myback
  • chown -R mysql:mysql /myback
  • 二,用mysqldump实现备份

    2.1 mysqldump用来温备,所以我们得为所有库加读锁,并且滚动一下二进制日志,并记录当前二进制文件位置

    查看有没有备份成功,有没有启用新二进制的日志,查看备份的文件中有没有记录完整备份后二进制的位置

    备份二进制日志

  • cp /mybinlog/mysql-bin.000001 /myback/2012-12-3.19-23.full.00001
  • 2.2 模拟数据库意外损坏,测试完整恢复

    初始化mysql并启动mysql

    恢复到备份状态,备份前先关闭对恢复过程的二进制日志记录,因为记录恢复语句是毫无意义的

    打开二进制记录并查看恢复状况

  • mysql> show databases;
  • 2.3 模拟一种场景,我往linux表中新添加了数据,然后不小心将这个表删了,我们要恢复到删除之前的状态,并且新加的数据还存在。

    2.3.1 新增数据

    我们先恢复完整数据,再恢复完整备份后到删除之前的数据,对应二进制日志就是完整备份后的二进制日志位置到删除表之前的位置

    2.3.2 先恢复完整备份,同样恢复过程不要记录日志

  • mysql /myback/2012-12-3.19-23.full.sql
  • 2.3.3 查看删除表时的记录位置

    2.3.4 由上图可知删除是在8893时做的,将二进制文件中完整备份到删除表之前的记录导出

    由于这个二进制日志是我们完整恢复后才启用的,所以我们直接从头开始即可,如果你的二进制日志很多,请查看完整备份中记录的备份时的位置,从那开始到删除之前即可

    将这段二进制记录应用到mysql的库中

  • 进入数据库查看数据有没有恢复

  • 基于mysqldump通常我们就是完整备份+二进制日志来进行恢复的。

    linux

  • Related labels:
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template