MYSQL数据库备份方法及策略

前言

企业中 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 Inno back upex 数据恢复
图 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 数据库表信息完整恢复

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值