MySQL之:xtrabackup备份还原

Percona:

官网:www.percona.com
percona-server
InnoDB --> XtraDB

xtrabackup:

percona 提供的 mysql 数据库备份工具,唯一开源的能够对 innodb 和 xtradb 数据库进行热备的工具
手册:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html

特点:

  • 备份还原过程快速、可靠
  • 备份过程不会打断正在执行的事务
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动实现备份检验
  • 开源、免费

Xtrabackup 版本区别:

版本 2.2 之前:

  • 包括4个可执行文件:
    1. innobackupex:Perl脚本
    2. xtrabackup:C/C++ 编译的二进制
    3. xbcrypt:加解密
    4. xbstream:支持并发写的流文件格式
  • xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 MySQL Server 没有交互
  • innobackupex 脚本用来备份非 InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表,还会和 MySQL Server 发送命令进行交互,如加全局读锁(FTWRL)、获取位点(SHOW SLAVE STATUS)等。即 innobackupex 是在 xtrabackup 之上做了一层封装实现的
  • 虽然目前一般不用 MyISAM 表,只是 MySQL 库下的系统表是 MyISAM 的,因此备份基本都通过 innobackupex 命令进行

版本 2.4 之后:

  • innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary 程序,另外为了兼容考虑,innobackupex 作为 xtrabackup 的软连接,即 xtrabackup 现在支持非 Innodb 表备份,并且 Innobackupex 在下一版本中移除,建议通过 xtrabackup 替换 innobackupex

xtrabackup 安装:

yum install percona-xtrabackup:在EPEL源中

innobackupex 备份:

  • 使用 innobackupex 备份时,其会调用 xtrabackup 备份所有的 InnoDB 表,复制所有关于表结构定义的相关文件(.frm)、以及 MyISAM、MERGE、CSV 和 ARCHIVE 表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保持至一个以时间命名的目录中,在备份时,innobackupex 还会在备份目录中创建如下文件:
    1. xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态(如是否已经为 perpared 状态)和 LSN(日志序列号)范围信息,每个 InnoDB 页(通常为16k 大小)都会包含一个日志序列号,即 LSN。LSN 是整个数据库系统的系统版本号,每个页面相关的 LSN 能够表明此页面最近是如何发生改变的
    2. xtrabackup_binlog_info:MySQL 服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置
    3. xtrabackup_info:innobackupex 工具执行时的相关信息
    4. backup-my.cnf:备份命令用到的配置选项信息
    5. xtrabackup_logfile:备份生成的日志文件

Xtrabackup 用法:

备份:

innobackupex [option] BACKUP-ROOT-DIR

选项说明:

https://www.percona.com/doc/percona-xtrabackup/LATEST/genindex.html
--user:表示备份账号
--password:表示备份的密码
--host:表示备份数据库的地址
--databases:接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对 innodb 引擎表无效,还是会备份所有 innodb 表
--defaults-file:指定从哪个文件读取 MySQL 配置,必须放在命令行第一个选项位置
--incremental:表示创建一个增量备份,需要指定 --incremental-basedir
--incremental-basedir:指定为前一次全备份或增量备份的目录,与 --incremental 同时使用
--incremental-dir:表示还原时增量备份的目录
--include=name:指定表名,格式:databasename.tablename

Prepare:

innobackupex --apply-log [option] BACKUP-DIR
选项说明:
--apply-log:一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:该选项表示和---apply_log选项一起使用,prepare 备份的时候,xtrabackup 做 crash recovery 分配的内存大小,单位字节。也可(1MB,1M,1G),推荐1G
--export:表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:此选项在 prepare base full backup,往其中 merge 增量备份时候使用

还原:

innobackupex --copy-back [option] BACKUP-DIR
innobackupex --move-back [option] [--defaults-group=GROUP-NAME] BACKUP-DIR

  • 选项说明:
    --copy-back:做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir
    --move-back:这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同时保留数据文件和Backup副本
还原注意事项:
  1. datadir 目录必须为空。除非指定 innobackupex --force-non-empty-directorires 选项指定,否则 --copy-backup 选项不会覆盖
  2. 在 restore 之前,必须 shutdown MySQL 实例,不能将一个运行中的实例 restore 到 datadir 目录中
  3. 由于文件属性会被保留,大部分情况下需要在启动实例之前将文件的属主改为 mysql,这些文件将属于创建备份的用户
    chown -R mysql:mysql /data/mysql
    以上需要在用户调用 innobackupex 之前完成
    --force-non-empty-directories:指定该参数时候,使得 innobackupex --copy-back 或 --move-back 选项转移文件到非空目录,已存在的文件不会被覆盖。如果 --copy-back 和 --move-back 文件需要从备份目录拷贝一个在 datadir 已经存在的文件,会报错失败
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容