博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产环境MySQL快速备份工具XtraBackup使用案例
阅读量:5738 次
发布时间:2019-06-18

本文共 2857 字,大约阅读时间需要 9 分钟。

hot3.png

生产环境MySQL快速备份工具XtraBackup使用案例

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

一、安装

yum install

yum install percona-xtrabackup

二、开始使用

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

1.创建备份用户,你懂的,最小权限 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进行数据库全备 innobackupex --user=bkuser--password=bk2015 /mnt/backups

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

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

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

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

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

还原 停止mysql服务, service mysqld stop

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

执行还原操作

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

改变目录权限,启动服务

chown –R mysql.mysql /mnt/data/mysql

service mysqld start

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

4.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次增备,全部应用完成后相当于全备+所有增备 的一个新的全备。

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剩下的步骤按照全备的方式还原即可

MySQL管理之使用XtraBackup进行热备

MySQL开源备份工具Xtrabackup备份部署

MySQL Xtrabackup备份和恢复

用XtraBackup实现MySQL的主从复制快速部署【主不锁表】

安装和使用 Percona 推出的 Xtrabackup 备份 MySQL

转载于:https://my.oschina.net/renqingshigu/blog/679699

你可能感兴趣的文章
Count and Say
查看>>
9.1(java学习笔记)正则表达式
查看>>
fopen打开文件失败的问题
查看>>
Spring系列之DI的原理及手动实现
查看>>
阿里蚂蚁金服五面,血与泪的经验总结(附面试答案)
查看>>
深度学习的seq2seq模型
查看>>
如何让你的传输更安全——NIO 模式和 BIO 模式实现 SSL 协议通信
查看>>
[译] 图解 React Native
查看>>
腾讯喻帅:腾讯云智慧零售产品发布
查看>>
一次被僵尸网络病毒攻击的过程
查看>>
Java高级特性增强-锁
查看>>
CNCF案例研究:PingCAP
查看>>
Python的新式类和经典类
查看>>
公用事业公司正在转向云计算
查看>>
使用 top instance 命令查看运行中 MaxCompute 作业
查看>>
Python决策权的投票结果诞生了,“指导委员会”模式拔得头筹
查看>>
Python模块分析:第1节-random模块
查看>>
[LeetCode] 354. Russian Doll Envelopes
查看>>
Visual Studio 2017 15.6预览版最新进展
查看>>
Visual Studio 2017的第五个更新包扩展了调试工具
查看>>