利用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版本)選項 php

環境說明

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

備份恢復步驟
備份表
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文件--導入表空間 mysql

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 linux

參考文檔

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 sql

相關文章
相關標籤/搜索