利用Percona XtraBackup进行单表备份恢复

大部分情况下,使用用Percona XtraBackup进行整库的备份和恢复比较容易,此处略去;
对于单表的恢复略有不同,而且对数据库版本和Percona XtraBackup的版本都有限制
局限性:
1.源库MySQL版本无要求,但启用了innodb_file_per_table=1
2.目的库开启innodb_file_per_table=1,Percona XtraDB或者MySQL5.6
官方要求开启下面的两个参数,但发现5.6没有这样的变量,没去修改:innodb_expand_import=1(大于5.5.10-20.1版本)或innodb_import_table_from_xtrabackup=1(小于5.5.10-20.1版本)选项

环境说明

源库 :Percona-Server-5.5.28-rel29.3-388
目的库:Percona-Server-5.6.16-rel64.2-569
备份工具 : percona-xtrabackup-2.2.4-5004

备份恢复步骤
备份表
innobackupex --user=root --password=simlinux.com   --defaults-file=/etc/my.cnf --include=‘se.searchaccount‘ --slave-info --safe-slave-backup --stream=tar /data/backup > /data/backup/searchaccount.tar.gz
导出表
[[email protected] ~]#tar -ixf searchaccount.tar.gz -C /data/databak/
[[email protected] ~]#innobackupex --apply-log --export /data/databak

[[email protected] ~]#ll /data/databak/se
-rw-r--r-- 1   root  root     3382    9月  13 13:57 searchaccount.cfg
-rw-r--r-- 1   root  root    16384   9月  13 13:57 searchaccount.exp
-rw-rw---- 1  root  root   23968    9月  13 13:40 searchaccount.frm
-rw-rw---- 1  root  root  2097152 9月   13 13:40 searchaccount.ibd
还原表

定义表--删除表空间--拷贝*.ibd/*.cfg文件--导入表空间

CREATE TABLE `searchaccount` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `cid` mediumint(7) unsigned NOT NULL DEFAULT ‘0‘,
  `siteid` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘账号对应广告监测站点(online.site.id)‘,
  `searchen` tinyint(2) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘1: 百度 2: 谷歌 3:搜狗 4:搜搜‘,
  `oid` bigint(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘对接账号ID(如SOGOU后台取得唯一ID)‘,
  `name` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT ‘账号名称‘,
  `acountname` varchar(100) NOT NULL DEFAULT ‘‘ COMMENT ‘搜索账号用户名/邮箱‘,
  `certifiedname` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT ‘百度V认证名称‘,
  `acountpass` varchar(100) NOT NULL DEFAULT ‘‘ COMMENT ‘搜索账号密码‘,
  `accesstoken` varchar(100) NOT NULL DEFAULT ‘‘ COMMENT ‘360权限代码‘,
  `budgettype` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘预算类型 1:日预算 2:周预算 0:不限制预算‘,
  `budget` decimal(12,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘帐号预算,google帐号需要用到‘,
  `weeklybudget` varchar(1024) NOT NULL DEFAULT ‘‘ COMMENT ‘周预算存储的值‘,
  `erate` decimal(5,3) NOT NULL DEFAULT ‘0.000‘ COMMENT ‘汇率‘,
  `ispublic` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘是否通过审核,0为未通过,1为通过‘,
  `servicerate` decimal(5,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘服务费比率‘,
  `krnum` mediumint(6) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘百度关键字推荐API配额‘,
  `agent` tinyint(2) NOT NULL DEFAULT ‘0‘ COMMENT ‘代理公司 1:广州 2:深圳‘,
  `authtoken` varchar(500) NOT NULL DEFAULT ‘‘ COMMENT ‘google API authoken值‘,
  `tokenovertime` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘authtoken的过期时间‘,
  `opendomains` varchar(220) NOT NULL DEFAULT ‘‘ COMMENT ‘网站开放域名,多个域名用,分隔‘,
  `excludeip` varchar(512) NOT NULL DEFAULT ‘‘ COMMENT ‘排除IP,以,分隔‘,
  `regions` varchar(2048) NOT NULL DEFAULT ‘‘ COMMENT ‘投放地区‘,
  `regionlevel` tinyint(1) NOT NULL DEFAULT ‘2‘ COMMENT ‘投放地域开通的级别 1级 2级‘,
  `campaigns` smallint(4) unsigned NOT NULL DEFAULT ‘0‘,
  `groups` smallint(5) unsigned NOT NULL DEFAULT ‘0‘,
  `creatives` mediumint(6) unsigned NOT NULL DEFAULT ‘0‘,
  `keywords` mediumint(7) unsigned NOT NULL DEFAULT ‘0‘,
  `dailyfee` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘平均每天消耗‘,
  `costbefore` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘账号暂停前的消耗,用于统计帐号暂停前的消耗‘,
  `costpause` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘重新签约时,将之前暂停统计到的消费(costbefore)累加到此字段‘,
  `balance` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘总账户余额‘,
  `adwordsbalance` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘搜索广告余额‘,
  `networkbalance` decimal(10,2) NOT NULL DEFAULT ‘0.00‘ COMMENT ‘网盟余额‘,
  `reapi` tinyint(1) NOT NULL DEFAULT ‘0‘ COMMENT ‘是否需要重新全部同步api, 1全部同步,0不全部‘,
  `errorcode` char(32) NOT NULL DEFAULT ‘0‘ COMMENT ‘百度的错误代码为数字类型;谷歌的为大写字符串‘,
  `syntime` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘同步时间‘,
  `statusrank` tinyint(1) NOT NULL DEFAULT ‘0‘ COMMENT ‘暂停竞价设置 0自动暂停 1保持运行状态‘,
  `status` tinyint(1) unsigned NOT NULL DEFAULT ‘1‘ COMMENT ‘运行状态,1:正常 2:暂停 3:异常 9: 删除‘,
  `createtime` int(10) unsigned NOT NULL DEFAULT ‘0‘ COMMENT ‘创建时间‘,
  `ocreatetime` int(10) NOT NULL DEFAULT ‘0‘ COMMENT ‘暂停时记录客户第一次添加时间‘,
  `stopReason` varchar(20) DEFAULT NULL,
  `updateTime` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `acountname` (`acountname`,`searchen`),
  KEY `cid` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=10389 DEFAULT CHARSET=utf8 COMMENT=‘搜索营销账号表‘;

mysql > ALTER TABLE se.searchaccount DISCARD TABLESPACE;

[[email protected] ~]#cp /data/databak/se/{searchaccount.ibd,searchaccount.cfg} /usr/local/mysql/data/se/ 

[[email protected] ~]#chown mysql.mysql /usr/local/mysql/data/se/ 

mysql > ALTER TABLE se.searchaccount IMPORT TABLESPACE;

 注:.cfg文件包含InnoDB字典的特殊存储格式;如果目的库是XtraDB,需要拷贝searchaccount.ibd、searchaccount.exp

参考文档

http://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/restoring_individual_tables_ibk.html
http://xxrenzhe.blog.51cto.com/4036116/1401454
http://wangfeng7399.blog.51cto.com/3518031/1394996

时间: 2024-12-19 11:15:18

利用Percona XtraBackup进行单表备份恢复的相关文章

利用XtraBackup实现MySQL物理备份恢复

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等功能节约磁盘空间和流量: (4)自动实现备份检验: (5)还原速度快: Xtrabackup中主要包含两个工具: xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构: in

mysql单表备份和恢复

说明:此脚本经测试可用于数据清理,对单表进行清理,清理出问题,可以回退进行单表的恢复.脚本特点:脚本1用于单表备份脚本2用于对单表进行数据恢复并增加完善的日志记录功能.支持脚本传参,对指定的表进行备份和恢复.通用性好,只需改下用户密码和想要备份的库,即可用. 1.mysql_bak_table.sh #mysql单表备份脚本使用方法:sh mysql_bak_table.sh table_name #!/bin/bash#author laocao#time:20180412 back_dir=

如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】

前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从库1:192.168.0.2 从库2:192.168.0.3 备份工具 : Percona xtrabackup version 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7) 在主库上创建chenfe

MySQL 整库单表备份 for python脚本

#!/usr/bin/python#! _*_ coding:utf-8 _*_ from datetime import date, datetime, timedeltaimport os,time user = 'dbuser'passw = 'password'ip = '10.8.8.8'dir = '/data/backup/db/tmp'mysqlbase = '/usr/local/mysql/bin/' if  os.path.isdir(dir):    print("dir

mariadb二进制日志和备份恢复

一.日志及其说明 1.错误日志 主要记录服务器启动和关闭过程中的信息,服务器运行过程中的错误信息,事务调度器运行一个事件是产生的日志信息,在从服务器上启动从服务器上启动从服务器进程是产生的日志信息. 2.一般查询日志 general_log.general_log_file .log.log_output 3.慢查询日志 查询执行时长超过指定的查询时长,即为慢查询.主要的配置文件有:slow_query_log,slow_query_log_file /mydata/data/hostname.

从完整备份恢复单个innodb表

转载自:http://www.cnblogs.com/gomysql/p/6600616.html#top 大师兄的博客 现在大多数同学在线上采取的备份策略都是xtrabackup全备+binlog备份,那么当某天某张表意外的删除那么如何从xtrabackup全备中恢复呢?从mysql 5.6版本开始,支持可移动表空间(Transportable Tablespace)那么利用这个功能就可以实现单表的恢复,同样利用这个功能还可以把innodb表移动到另外一台服务器上.可以参考:https://y

Mysql 备份恢复与 xtrabackup备份

1.1 备份的原因 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间. 1.1.1 备份的目录 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 测试:测试新功能是否可用 1.1.2 备份中需要考虑的问题 可以容忍丢失多长时间的数据: 恢复

Percona XtraBackup 备份还原篇

Percona XtraBackup 安装介绍篇已经对Percona XtraBackup的功能和安装做了比较详细的介绍,那么本篇我们直接进入主题,如何使用XtraBackup做备份.还原,下面主要介绍XtraBackup备份还原操作的细节和场景,疏漏之处难免存在,如有不足,敬请指出.本篇暂时不做原理介绍,后续篇章"Percona XtraBackup 原理分析篇"再做介绍.   XtraBackup完整备份   备份的权限 使用XtraBack做备份,需要连接到数据库服务器并在服务器

MYSQLDUMP全备只恢复单库或是单表

一.发现问题 平时使用mysqldump备份时有人喜欢用-A –B参数进行全备,这样备份的时候会简单一点,但是恢复的时候如果直接恢复会把所有库都会恢复,这不是我们想要的结果. 二.分析问题 恢复单库或是单表我们可以通过shell命令从全库备份的SQL文件中截取出我们想要的部分.另外针对单库的恢复MySQL也有一个参数来解决这个问题. 三.解决问题 1.通过MySQL自带的参数恢复单库. # 全备的数据库 mysql> show databases; +--------------------+