首頁  >  文章  >  資料庫  >  MySQL数据库备份总结

MySQL数据库备份总结

WBOY
WBOY原創
2016-06-07 17:41:55874瀏覽

一个企业的正常运行,数据的完整性是最关键的;所以我们需要在工作中要很熟练的掌握数据的备份与恢复方法;下面是对Mysql数据库备份的三种方法总结,希望对大家

一个企业的正常运行,数据的完整性是最关键的;所以我们需要在工作中要很熟练的掌握数据的备份与恢复方法;下面是对Mysql数据库备份的三种方法总结,希望对大家会有所帮助 

备份开始前的工作环境准备:

1、创建用于保存二进制日志文件的目录

  • # mkdir /mybinlog 
  • # chown mysql.mysql /mybinlog 
  • 2、修改配置文件

    3、为备份数据库创建存放点

  • # mkdir /mybackup 
  • # chown -R mysql.mysql /mybackup 
  • 4、启动mysql服务器

  • # service mysqld start 
  • 5、插入需要备份的数据库

  • 一、使用mysqldump工具完成完全备份+增量备份基于mysqldump通常就是完整备份+二进制日志来进行恢复数据

    1.1、mysqldump用来温备份,首先需要为所有库加读锁,并且滚动一下二进制日志,记录当前二进制文件位置

    1.2、备份二进制日志

  • # cp /mybinlog/mysql-bin.000001 /mybackup/alldatabase.000001 
  • 1.3、模拟数据库意外损坏,利用完全备份实现数据库的恢复

  • # rm -rf /mydata/data/* 
  • # rm -rf /mybinlog/* 
  • 1.4、初始化mysql并启动服务器

  • 1.5、删除二进制日志,启动服务

    1.6、恢复到备份状态,导入备份的数据库文件:

  • 2、模拟往students表中添加数据,香港虚拟主机,添加完成后不小心将表删除了,我们要恢复到删除之前的状态,并且新加的数据还要存在

    2.1、往students表中添加数据

  • mysql> insert into students (Name,Age,Gender) values ('hadoop',22,'M'); 
  • 2.2、模拟一下,不小心将表删除了

  • 2.3、查看一下二进制日志文件的位置

    2.4、先恢复完整数据(恢复过程不要记录在日志中)

  • # mysql  /mybackup/alldatabase.sql 
  • 2.5、查看删除表时的记录位置

    2.5、将二进制文件中完整备份到删除表之前的记录导出

    2.6、将改变的数据库日志导入到mysql库中

  • 2.7、见证奇迹的时刻数据库恢复成功,并且插入的数据也还原回来了

     

    二、select命令也能完成逻辑备份比mysqldump更节约空间,速度更快,但比mysqldump用起来要麻烦,并且备份出来的数据都是纯文本信息,没有额外的开销空间,适合备份某张表模拟备份一张表

    1、备份出来,保存在某个目录下,但需要注意的是,这个目录下的文件的具有权限,当登录到mysql时需要具有执行的权限

    2、恢复数据库需要创建一个空表,模仿原来的表创建

  • 把原来的表删除了

  • mysql> load data infile '/tmp/tutor.txt' into table tutor; 
  • 验证:

    当然用select也可以把表中符合条件的语句备份出来,香港虚拟主机,这里不再做演示了,香港虚拟主机,很简单。

    这种方法适合于某长表的备份,但不会记录到二进制日志中

    三、利用LVM快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,进而实现数据库的备份。用lvm的快照来备份速度是非常快的,而且几乎热备,恢复也很快速,操作也简单,完整恢复后再将相应二进制恢复即可。前提:

    1、数据文件要在逻辑卷上

    2、此逻辑卷所在卷组必须有足够空间使用快照卷

    3、数据文件和事务日志要在同一个逻辑卷上

    步骤:

    1、启动事务

    2、打开会话,施加读锁,锁定所有表,此时别人是不能执行命令的(不能往数据库中插入数据)

    注意:执行表锁定时,一定不要退出

    3、通过另一个终端,保存二进制日志文件及相关信息位置

    4、创建快照卷

  • # lvcreate -L 50M -s -p r -n mydata-snap /dev/myvg/mydata  
  • 5、释放锁

    6、挂载快照卷,备份

    7、卸载/mnt,删除快照卷

  • # umount /mnt/ 
  • # lvremove --force /dev/myvg/mydata-snap  
  • 8、增量备份二进制日志

    首先删除二进制日志文件,对我们没有太大用处

  • # rm -rf /backup/full-backup-2013-05-06/mysql-bin.* -f 
  • 现在模拟数据库被格式化

    格式化之前先把二进制日志备份出来

    恢复到了还原前的状态

    这就是逻辑卷实现的一次完全备份

    本文出自 “丽的博客” 博客,请务必保留此出处

    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn