MYSQL数据库备份方法及策略

  • 前言
  • Xtrabackup实战
  • Percona-xtrabackup 备份实战
    • ( 1 ) 官网下载Percona-Xtrabackup
    • ( 2 )Percona-xtrabackup 软件安装方法 , cp innobackupex 、 xtrabackup 、xtrabackup_ 51 xtrabackup_5 5 工具到 / usr/bin 目录 下 , 代码如下
    • ( 3 ) MYSQL 数据库全备份, 如图 16 - 2 ( a ) 、 16 - 2 ( b )所示:
    • (4) Innobackupex 数据库恢复 , 恢复前先保证数据一致性 , 执行如下命令 , 如图 16 - 3所示 :
    • (5) 删除原数据目录/var/lib/mysql 数据,使用参数--copy-back 恢复完整数据, 授权 mysql 用户给所有的数据库文件,如图 16-4 所示:
  • Innobackupex增量备份
    • ( 1 ) 增量备份之前必须执行完全备 份 , 如图 16 - 6 所 示:
    • ( 2 ) 执行第一次增量备份 :
    • ( 3 ) 数据库插入 新数据 ,如图 16 - 8 所示 :
    • ( 4 ) 执行第二次增量备份, 备份命令如下 ,如图 16 - 9 ( a ) 、 16 - 9 ( b )
  • Mysql 增量备份恢复
    • ( 1 ) 基于 Apply-log 确保数据一致性:
    • ( 2 ) 执行第一次增量数据恢复 :
    • ( 3 ) 执行第二次增量数据 恢复 :
    • ( 4 ) 执行完整数据恢复 :
    • ( 5 ) 测试数据库已完全恢 复 , 如图 16 - 11 所 示:

前言

企业中 MySQ L 数据库备份最常用的方法 如下 :
❑ 直接 cp 备份
❑ Sqlhotcopy
❑ 主从同步复制
❑ Mysqldump 备份
❑ Xtrabackup 备份
Mysqldump 和 Xtraba ckup 均可以备份 MYSQL 数据 , 如下为 Mysqldump 工具使用方法 : 通常小于 100 G 的 MYSQL 数据库可以使用默认 Mysqldump备份工具进行备份 , 如果超过 100G 的大 数据 ,由于 Mysqldump 备份方式是采用 的逻辑备份 ,最大的缺陷是备份和恢复速度较慢 。
基于 Mysqldump 备份耗时会 非常长 ,而且备份期间会 锁表 , 锁表 直接导致数据库只能访问 Select ,不能执行 Insert 、Update 等操作 , 进而导致部分 WEB 应用无法写入新数据。
如果是 Myisam 引 擎表 , 当 然也可以执行参数 --lock-tables=false 禁用锁表, 但是有可能造成数据信息 不一致 。
如果是支持 事务的表 ,例如 InnoDB 和 BDB , --single-transaction 参数是一个更好的选择 , 因 为它不锁定表 。

mysqldump -uroot -p123456 --all-databases --opt --single-transaction >2017all.sql

其中 --opt 快捷选项 ,等同于添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项 。
本选项能让 Mysqldump 很快的导出数据 , 并且导出的数据能很快导回 。 该选项 默认开启 ,但可以用 --skip-opt 禁用 。
如果运行 Mysqldump 没有指定 --quick 或 --opt 选项 , 则会将整个结果集放在内存
中 。 如果导 出大数据库的话可能会导致内存溢出而异 常退出 。

Xtrabackup实战

Mysql 冷备、Mysqldump、Mysql 热拷贝均不能实现对数据库进行增量备份,在实际 环境中增量备份非常的实用,如果数据量小于 100G,存储空间足够,可以每天进行完整 备份,如果每天产生的数据量大,需要定制数据备份策略例如:每周日使用完整备份, 周一到周六使用增量备份,或者每周六完整备份,周日到周五使用增量备份。
Percona-xtrabackup 是为实现增量备份而生一款主流备份工具,Xtrabackup 有两个主要的工具,分别为:xtrabackup、innobackupex。
Percona XtraBackup 是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl、Percona Server 及 MariaDB,开源免费,是目前互联网数据库备 份最主流的工具之一。
Xtrabackup 只能备份 InnoDB 和 XtraDB 两种数据引擎的表,而不能备份 MyISAM 数据表,Innobackupex-1.5.1 则封装了 Xtrabackup,是一个封装好的脚本,使用该脚本能同时备份处理 innodb 和 Myisam,但在处理 Myisam 时需要加一个读锁。
XtraBackup 备份原理,Innobackupex 在后台线程不断追踪 InnoDB 的日志文件,然后复制InnoDB 的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后 ,就可以使用 InnoDB 崩溃恢复代码执行事务日志 ( Redo log ) ,以达到数据的一致性 。其备份优点如 下:
❑ 备份速度快, 物理备 份更加可靠;
❑ 备份过程不会打断正在执行的事务,无需锁表 ;
❑ 能够基于压缩等功能节约磁盘空间和流量;
❑ 自动备份校验;
❑ 还原速度快 ;
❑ 可以流传将备份传输到另外一台机器上 ;
❑ 节约磁盘空间和网络 带宽 。
Innobackupex 工具的备份过程原理 , 如图 16 - 1 所示 :

Innobackupex 备份过程中首先启动 Xtrabackup_log 后台检测的进程,实时检测 Mysql redo 的变化,一旦发现 Redo 有新的日志写入,立刻将日志写入到日志文件 Xtrabackup_log 中,并复制 Innodb 的数据文件和系统表空间文件 idbdata1 到备份目录。 Innode 引擎表备份完之后,执行 Flush table with read lock 操作进行 MyIsam 表 备份。拷贝.frm .myd .myi 文件,并且在这一时刻获得 binary log 的位置,将表进行解锁 unlock tables,停止 Xtrabackup_log 进程,完整整个数据库的备份。

Percona-xtrabackup 备份实战

( 1 ) 官网下载Percona-Xtrabackup

Percona 官方 wiki 使用帮助: http://www.percona.com/docs/wiki/percona-xtrabackup:start
wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.0/binary/Linux/x86_64/percona-xtrabackup-2.0.0.tar.gz

( 2 )Percona-xtrabackup 软件安装方法 , cp innobackupex 、 xtrabackup 、xtrabackup_ 51 xtrabackup_5 5 工具到 / usr/bin 目录 下 , 代码如下

tar zxvf percona-xtrabackup-2.0.0.tar.gz
cp percona-xtrabackup-2.0.0/bin/innobackupex /usr/bin/innobackupex
cp percona-xtrabackup-2.0.0/bin/xtrabackup /usr/bin/xtrabackup
cp percona-xtrabackup-2.0.0/bin/xtrabackup_51 /usr/bin/xtrabackup_51
cp percona-xtrabackup-2.0.0/bin/xtrabackup_55 /usr/bin/xtrabackup_55

( 3 ) MYSQL 数据库全备份, 如图 16 - 2 ( a ) 、 16 - 2 ( b )所示:

innobackupex --user=root --password=123456 /data/backup/mysql/


图 16 - 2 ( a ) Innobackupex 完整备份

图 16 - 2 ( b ) Innobackupex 完整备份

(4) Innobackupex 数据库恢复 , 恢复前先保证数据一致性 , 执行如下命令 , 如图 16 - 3所示 :

innobackupe x --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log /data/backup/mysql/2014-12-20_00-10-24


图 16 - 3 Innobackupex apply-log 恢复

通常数据库备份完成后,数据尚不能直接用于恢复操作,因为备份的数据时是一个过程,在备份过程中,有任务会写入数据,可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。
因此此时数据文件仍处理不一致状态,基于–apply-log 可以通过回滚未提交的事务 及同步已经提交的事务至数据文件使数据文件处于一致性状态,方可进行恢复数据。
Apply-log 过程可以在任何机器上运行,没有强制在线上或者备份库上运行,可以把备份复制在闲置的服务器上去运行,以此来降低备份库的压力,必须保证backup和apply-log 所使用的 mysqlbackup 的版本要一致。

(5) 删除原数据目录/var/lib/mysql 数据,使用参数–copy-back 恢复完整数据, 授权 mysql 用户给所有的数据库文件,如图 16-4 所示:

rm -rf /var/lib/mysql/*
innobackupex --defaults-file=/etc/my.cnf --user=mysql --password=123456 --copy-back /data/backup/mysql/2014-12-20_00-10-24/
chown -R mysql:mysql /var/lib/mysql/


图 16 - 4 Innobackupex 数据恢复
查看数据库恢复信息, 数据完全恢复 ,如图 16 - 5 所示:

图 16 - 5 Innobackupex 数据恢复

Innobackupex增量备份

增量备份仅能应用于 InnoDB 或 XtraDB 表, 对于 MyISAM 表而言 ,执行增量备份时其实进行的是完全备份 。

( 1 ) 增量备份之前必须执行完全备 份 , 如图 16 - 6 所 示:

innobackupex --user=root --password=123456 --databases=wugk01 /data/backup/mysql/


图 16 - 6 Innobackupex 完整备份

( 2 ) 执行第一次增量备份 :

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --databases=wugk01 --incremental /data/backup/mysql/ --incremental-basedir=/data/backup/mysql/2014-12-20_13-01-43/

增量备份完 后 , 会在 / data/backup/mysql/ 目录下生成新的备份目录 , 如图 16 - 7 所
示:

图 16 - 7 Innobackupex 增量备份

( 3 ) 数据库插入 新数据 ,如图 16 - 8 所示 :


图 16 - 8 数据库 insert into 新数据

( 4 ) 执行第二次增量备份, 备份命令如下 ,如图 16 - 9 ( a ) 、 16 - 9 ( b )

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --databases=wugk01 --incremental /data/backup/mysql/ --incremental-basedir=/data/backup/mysql/2014-12-20_13-07-31/


图 16 - 9 ( a ) 数据库增量备份

图 16 - 9 ( b ) 数据库增量备份

Mysql 增量备份恢复

删除原数据库中表及数据记录 信息 , 如 图 16 - 10 所示 :

图 16 - 10 删除数据库表信息

MYSQL 增量备份数据恢复方法如下步骤 :

( 1 ) 基于 Apply-log 确保数据一致性:

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /data/backup/mysql/2014-12-20_13-01-43/

( 2 ) 执行第一次增量数据恢复 :

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /data/backup/mysql/2014-12-20_13-01-43/ --incremental-dir=/data/backup/mysql/2014-12-20_13-07-31/

( 3 ) 执行第二次增量数据 恢复 :

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /data/backup/mysql/2014-12-20_13-01-43/ --incremental-dir=/data/backup/mysql/2014-12-20_13-11-20/

( 4 ) 执行完整数据恢复 :

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup/mysql/2014-12-20_13-01-43/

( 5 ) 测试数据库已完全恢 复 , 如图 16 - 11 所 示:


图 16 - 11 数据库表信息完整恢复

MYSQL数据库备份方法及策略相关推荐

  1. mysql数据备份方法_最快的MySql数据库备份方法

    最快的MySql数据库备份方法 使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有好. 一 ...

  2. mysql 备份数据库原则_MySQL数据库备份方法说明

    MySQL数据库备份方法说明 更新时间:2007年07月29日 17:52:57   作者: 在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最 ...

  3. 手动备份MySQL数据库_8种手动和自动备份MySQL数据库的方法

    作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的.本文就为大家介绍几种适用于企业的数据备份方法. 使用MySQLDump进行MySQL备份 mysqldu ...

  4. 备份MySQL数据库的方法

    前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...

  5. mysql数据库备份报错145_mysql数据库导出时报错mysqldump: Got error: 145的解决方法

    在给mysql数据库备份时,报错:mysqldump: Got error: 145: Table './jxzhtopenfire/ofoffline' is marked as crashed a ...

  6. mysql打包备份数据到_thinkPHP使用pclzip打包备份mysql数据库的方法

    本文实例讲述了thinkPHP使用pclzip打包备份mysql数据库的方法.分享给大家供大家参考,具体如下: PclZip介绍 PclZip library能够压缩与解压缩Zip格式的压缩档(Win ...

  7. 浅谈MySQL数据库备份的几种方法

    mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据 ...

  8. 2.5.1 MySQL数据库备份恢复基础讲解

    MySQL数据库备份恢复基础 MySQL常见的故障类型 对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障. DBA主要任务就是维持数据库的高可靠性运行 ...

  9. 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份

    一份好的备份方案无非包括以下几点: 为什么需要备份? 备份的方式有哪些? 某几种备份方式的区别在哪? 备份实战操作概述 恢复实战操作概述 其它备注信息 那么,此文将从以上几个角度,结合一些实际的实战经 ...

最新文章

  1. mysql流量控制_UDP流量控制之分析
  2. 1095 Cars on Campus (30 分)【难 / 模拟 未完成】
  3. 9.2.1 Renaming Retrieved Columns
  4. HystrixDashbord
  5. C#模板编程(1):有了泛型,为什么还需要模板?
  6. 【DP】数字游戏(jzoj 2131)
  7. 宝石光是什么石头_天龙八部:尖晶石当初烂大街,现如今比红宝石还贵,售价150金...
  8. 桌面整理工具不显示文件夹_Win10桌面图标显示不正常变成了白色
  9. 解决从github上下载代码仓库慢的问题
  10. 将CString转换成string ...
  11. SP3485,MAX485
  12. shimo的学习之MySQL 学习
  13. JsPlumb获取线数据
  14. 嵌入式linux开发,flex库移植
  15. Soft Filter Pruning(SFP)算法笔记
  16. jenkins jod迁移
  17. flume系列之:监控flume上个小时生成的HDFS文件是否有损毁,并发送告警信息
  18. lorawan协议网关如何选择?-东胜物联
  19. watchguard xcs 项目组内部招聘!
  20. 定向天线ADS-B地面接收机 Pentagon

热门文章

  1. Linux中sed命令使用大全
  2. 单链表排序(交换节点)
  3. 已知三点空间直角坐标求空间平面方程
  4. 适合前端学习的设计模式有哪些?
  5. SQL Server中出现用户或角色在当前数据库已经存在的问题的解决
  6. Windows 环境下载 Android 源码
  7. 会声会影和pr到底哪个好,2023年要学那个视频剪辑软件好?
  8. 使用proxyee-down解决百度云下载限速问题
  9. SEM百度推广初学者入门级教程
  10. 承志医院管理系统项目解析 门诊收费(七)