首页 > 代码库 > 利用Percona XtraBackup进行单表备份恢复
利用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
导出表
[root@simlinux ~]#tar -ixf searchaccount.tar.gz -C /data/databak/ [root@simlinux ~]#innobackupex --apply-log --export /data/databak [root@simlinux ~]#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; [root@simlinux ~]#cp /data/databak/se/{searchaccount.ibd,searchaccount.cfg} /usr/local/mysql/data/se/ [root@simlinux ~]#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
利用Percona XtraBackup进行单表备份恢复