mysql备份与恢复详解

 更新时间:2013年06月14日 09:12:27   作者:  
本篇文章是对mysql的备份与恢复进行了详细的分析介绍,需要的朋友参考下

MYSQL的备份有多少种,请简要的描述:
数据库分逻辑备份\物理备份
物理备份又分冷备和热备

A.直接拷贝数据文件到安全地方进行保存
B.使用MYSQLHOSTCOPY备分数据
C.使用MYSQLDUMP备份数据
D.使用MYSQL的同步复制,实现数据实时数据同步备份

常用的逻辑备份主要就是两种:一种是将数据生成为可以完全重现当前数据库中的数据的insert语句,另一种是将数据通过逻辑备份软件,将数据库表的数据以特定分隔符进行分割后记录在文本中。

对于第一种生成insert语句来说我们可以直接使用mysql自带的工具mysqldump来完成。这种方式不好之处在于可能导致数据的不一致,或是不完整。解决办法:一个是通过在数据库系统中加入写入锁,只提供数据库的查询服务;第二种是对于支持事务的存储引擎来说,INNODB BDB可以通过将整个备份过程控制在一个事务中,来达到备份数据的一致性和完整性;并且可以不用影响到数据库的正常运行。
恢复方式则是通过mysql<backup.sql直接运行的。
第二种直接生成数据格式。占用的空间小,数据格式清晰。可是没有数据库结构的脚本。不容易控制
实现方式:通过select******* to outfile from***命令来实现。恢复方式就是通过,load data infile和mysqlimport命令来做。

这一过程相当的复杂需要实时的进行恢复测试,保证备份数据是可用的
数据库的物理备份,主要的对象是数据库的物理数据文件,日志文件以及配置文件等。

物理数据文件有哪些呢?
一是日志文件6大类:错误日志error Log、二进制日志binary Log、更新日志 update log、查询日志 query log、慢查询日志 slow query log、innodb的redo日志。
二是数据文件?对于myisam来说的话,.frm表结构信息.myd数据信息.myi数据的索引信息。对于Innodb来说的话.ibd文件(独享表空间)和.ibdata(共享表空间)文件
三是replication文件?master.info存储在slave端的数据目录下,存放了slave和master的相关信息,relay log和 relay log index主要存储了I/O进程从Master端读取到的binary log信息,然后由slave端的SQL线程从该binary log中读取解析过的日志信息,转化成master所能执行的query语句。index则是存放binarylog的路径也就是目录文件。
四是系统文件?如my.cnf、pid文件是mysqld应用程序中的一个进程文件存放自己的进程id还有就是socket文件它只有在linux下才有的,可以不通过tcp/ip网络协议直接连接mysql

如果是做冷备的话,直接复制所有的数据文件和日志文件到备份集存放的地方,

热备的方法针对不多的数据库有不同的方案
对于myisam存储引擎来说,做法就是给数据库表加锁来阻止写操作,可以直接复制物理文件,或者也可以通过mysql专门的mysqlhotcopy(原理就是现锁住表,然后进行操作)程序来完成相应的备份任务。
flush tables with read lock
cp -R test /tmp/backup/test
unlock tables;

innodb数据库引擎来说,有一款商业软件ibbackup,在线物理备份功能。还有一款开源的工具xtrabackup,
如果在备份过程中,把INNODB数据文件备份完成后,会锁住整个库,并开始复制MYISAM等非事务引擎的数据和.frm;所以如果你拥有比较多的MYISAM表,锁库的时候会持续很长。如果是在主库上运行,千万注意。

同样也只能通过xtrabackup进行增量的备份,其实这一工具只是备份innobd的日志信息。

4 xtrabackup/ibbackup
xtrabackup --backup --datadir=/var/lib/mysql/ --target-
dir=/data/backups/mysql/

xtrabackup --backup  --defaults-file=/etc/my.cnf --target-
dir=/data/backups/mysql/
mysql的备份方式

1.mysqldump
效率比较低,备份和还原的速度都很慢,任何数据插入和更新操作都会被挂起

2.mysqlhotcopy
mysqlhotcopy 是专门针对myisam 数据表进行备份,备份的过程中,任何数据插入和更新操作都会被挂起

3.准备一台从服务器,专门做备份(master-slave方式)

4.xtrabackup 是 percona 的一个开源项目,可热备份innodb ,XtraDB,MyISAM(会锁表)
 
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
Øxtra备份原理
记住开始时候的LSN号,然后开始拷备文件,同时运
行一个后台进程监视重做日志,并将变化拷备下来到
xtrabackup_logfile。

innobackupex可以备份myisam表和frm文件。当
xtrabackup结束后,执行flush tables with read lock,避
免数据更改,然后刷新所有myisam表到磁盘。拷备结
束后,释放锁。

mysqlbinlog也是一个恢复工具,是基于时间点来处理二进制文件的

Ø备份:直接拷备

Ø还原:
ü时间点还原:mysqlbinlog --stop-date="2005-04-20 9:59:59"
/var/log/mysql/bin.123456 | mysql -u root –pmypwd

mysqlbinlog --start-date="2005-04-20 10:01:00"
/var/log/mysql/bin.123456| mysql -u root –pmypwd

Ø日志点还原:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
LSN定义:

日志序号
日志序号 (LSN) 标识特定日志文件记录在日志文件中的位置。

LSN 由 DB2® 产品中的许多组件用来维护数据库一致性和完整性。除其他作用外,LSN 还对于分区数据库环境中的落实和回滚操作、崩溃和前滚恢复以及数据库操作同步起非常重要的作用。

日志文件中 LSN 的增长率与数据库活动直接相关联。也就是说,随着事务发生并且条目被写入日志文件,LSN 会不断增大。数据库中的活动越多,LSN 增长得越快。

日志序号的上限

在 DB2 V9.5 和较早版本中,日志序号 (LSN) 是 6 字节数字。从 FP3 开始,LSN 的范围在 0x0000 0000 0000(首次创建数据库时)到 0xFFFF 0000 0000(约 256 太字节)之间。在 FP3 之前,上限为 0xFFFF FFFF FFFF。随着记录被添加到日志文件中,LSN 在数据库生命期不断增长。

相关文章

  • MySQL 覆盖索引的优点

    MySQL 覆盖索引的优点

    当索引包含了所有查询的数据时,这个索引就称之为覆盖索引。覆盖索引能够成为一个非常有力的工具并且能够显著改善性能,本文将具体讲述覆盖索引的优点
    2021-05-05
  • MySQL多版本并发控制MVCC详解

    MySQL多版本并发控制MVCC详解

    这篇文章主要介绍了MySQL多版本并发控制MVCC详解,MVCC是通过数据行的多个版本管理来实现数据库的并发控制,这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证
    2022-07-07
  • update.where无索引导致MySQL死锁问题解决

    update.where无索引导致MySQL死锁问题解决

    这篇文章主要为大家介绍了update.where无索引导致MySQL死锁问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 一文教你在windows中如何同时安装两个不同版本的Mysql

    一文教你在windows中如何同时安装两个不同版本的Mysql

    在项目中可能会用到多个版本的Mysql数据库,本文将和大家介绍一下如何在本机已安装了一个MySQL 5.7.38的情况下,再安装一个mysql 8.0版本吧
    2025-03-03
  • 关于for update和lock in share mode的区别及说明

    关于for update和lock in share mode的区别及说明

    这篇文章主要介绍了关于for update和lock in share mode的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 详解CentOS6.5 安装 MySQL5.1.71的方法

    详解CentOS6.5 安装 MySQL5.1.71的方法

    这篇文章主要介绍了CentOS6.5 安装 MySQL5.1.71的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • mysql8.0.21安装教程图文详解

    mysql8.0.21安装教程图文详解

    这篇文章主要介绍了mysql8.0.21安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • MySQL 数据库铁律(小结)

    MySQL 数据库铁律(小结)

    这篇文章主要介绍了MySQL 数据库铁律,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • MySQL无法输入中文字符问题的解决办法

    MySQL无法输入中文字符问题的解决办法

    MySQL无法输入中文的问题大多是由于字符集不匹配所导致的,下面这篇文章主要给大家介绍了关于MySQL无法输入中文字符问题的解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL 常用命令

    MySQL 常用命令

    MySQL 常用命令...
    2006-12-12

最新评论