设为首页 收藏本站
查看: 1049|回复: 0

[经验分享] 生产环境mysql快速备份工具XtraBackup使用案例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-4 08:24:03 | 显示全部楼层 |阅读模式
        gccmx 的BLOG  
       
avatar.jpg


写留言去学院学习发消息 加友情链接进家园 加好友


博客统计信息
用户名:gccmx
文章数:14
评论数:16
访问量:3662
无忧币:554
博客积分:220
博客等级:2
注册日期:2008-09-15



                        热门专题                更多>>       
                                                   wKioL1SvnuTjq33VAAAwHyiKP0c968.jpg                                   System Center 2012 R2 私有云——基础篇下阅读量:4416               
                                           wKioL1S05quiKSPAAAA1HIwOWAM912.jpg                                   Powershell管理系列详解阅读量:2597               
                                           wKiom1S9-x7Dr6HEAAAnqgNiZjs267.jpg                                   Windows  Server 2012 R2 Hyper-V配置与管理详解阅读量:3385               
                                       
       
热门文章
  • 从“技术不是最重要的”说起
  • shell 批量添加用户健壮版
  • shell 判断变量为数字的N种方法
  • shell mysql服务状态检查脚本示例
  • shell 输出带颜色文本函数
  • linux下web压力测试工具siege的使用
  • shell 测试表达式参数速查表
  • 生产环境mysql快速备份工具XtraBa..


搜索BLOG文章




   Mysql的备份有很多种方式,最常用的应该是mysqldump了,将数据库导出一个 sql文件,还原的时候source db.sql 就欢快的执行了。小伙伴愉快的布上一个shell脚本,配上cron,幸福的看着每天备份文件的生成,倍感安全。假如一个mysql超过了10G呢? 请相信我,导出的时间需要好几个小时,那还原呢,时间会更长。我曾经用sql还原一个6G的数据库,用了3个多小时。

    mysqldump这种逻辑备份的缺点就不多说了,说说xtrabackup,又是PERCONA,就冲这个名号,值得信赖。官方说明:
1、快速可靠
2、备份过程中不中断事务处理
3、节约磁盘空间和网络带宽
4、自动备份验证
5、由于快速还原而带来的高可用行

上面说的,反正我是信了,还是那个6G多的库,全备用了5分钟,还原也只用了5分钟。兄弟们,记住一点,要是真到了用备份来还原数据的时候,你还原几个小时,老板会有想法的!呵呵。

操作系统:CentOS release 6.5
Mysql: 5.6.21

一、安装
1
yum install http://www.percona.com/downloads ... se-0.1-3.noarch.rpm



1
yum install percona-xtrabackup




二、开始使用

xtrabackup包含innobackupex,xtrabackup,xbcrypt,xbstream这几个工具。Innobackupex支持MyISAM,InnoDB。所有,我选择使用innobackupex。

1.创建备份用户,你懂的,最小权限
1
2
3
4
5
6
mysql> create user'bkuser'@'localhost' identified by 'bk2015';
Query OK, 0 rows affected (0.16sec)
mysql> grant reload,locktables,replication client on *.* to 'bkuser'@'localhost';
Query OK, 0 rows affected (0.00sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01sec)




2.使用innobackupex进行数据库全备
1
innobackupex --user=bkuser--password=bk2015 /mnt/backups



--user 提供连接数据库的用户名
--password 连接数据库的密码
/mnt/backups 备份文件的存储路径

命令执行完成后在/mnt/backups目录下生成了2015-02-03_15-11-51目录,该目录就是我们当前数据库的一个完整备份。该目录是innobackupex自动生成的目录,有一个参数可以控制该选项--no-timestamp,如果加上该参数,将不会自动生成目录,备份创建在提供的路径下。该参数在脚本中使用比较方便。


3.使用完整备份进行数据库还原

还原准备工作
1
innobackupex --apply-log/mnt/backups/2015-02-03_15-11-51




--apply-log 创建的备份中可能有些未提交的事务,需要回滚或者从日志进行回放

还原
停止mysql服务,
1
service mysqld stop



备份原有的mysql数据目录
1
mv /mnt/data/mysql /mnt/data/mysql20150203




执行还原操作

1
innobackupex --copy-back/mnt/backups/2015-02-03_15-11-51/




改变目录权限,启动服务

1
2
3
chown –R mysql.mysql /mnt/data/mysql

service mysqld start




4.innobackupex增量备份
增量备份需要一次完成备份为基础,在全备的基础上,下次备份仅备份当前时间到上次完备基础上变化的数据。最大的好处是节约磁盘空间。当然,不好的地方是还原,还原的流程将变的复杂

4.1 首先进行全备
1
innobackupex --user=bkuser --password=bk2015 /mnt/backups



在备份目录2015-02-03_15-11-51中有个xtrabackup-checkpoints,内容如下:
backup_type = full-backuped
from_lsn = 0
to_lsn = 1291135

创建增量备份
innobackupex --incremental /mnt/backups --incremental-basedir=/mnt/backups/2015-02-03_15-11-51--incremental 使用该参数创建增量备份
--incremental-basedir 指定上一次备份的目录,比如这是完整备份后的第一次增备,该目录是完备的目录,如果这是第二次增备,则该目录是第一次增备的目录

检查增备目录的文件中的xtraback_checkpoint文件内容,会发现,lsn发生了变化
backup_type = incrementalfrom_lsn = 1291135to_lsn = 1352113
5.增量备份的还原

5.1 还原准备工作
流程: --apply-log 应用到全备目录,第一次增备,第二增备……第N次增备,全部应用完成后相当于全备+所有增备 的一个新的全备。

1
innobackupex --apply-log --redo-only BASE-DIR



innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2BASE-DIR 全备目录
INCREMENTAL-DIR-1 第一次增备
INCREMENTAL-DIR-2 第二次增备


--redo-only 重要,每次增备都需要指定该参数,除了最后一次。否则未提交的事务将执行rollback。
以上步骤完成后,再次执行
innobackupex --apply-log BASE-DIR剩下的步骤按照全备的方式还原即可


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41921-1-1.html 上篇帖子: 在线修改表结构mysql5.5版本和pt-online-schema-change 下篇帖子: Mysql Error :Got error 28 from storage engine mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表