innobackupex實現導出和導入單張表

默認情況下,InnoDB表不能通過直接復制表文件的方式在mysql服務器之間進行移植,即便使用了innodb_file_per_table選項。而使用Xtrabackup工具可以實現此種功能,不過只能"導出"具有.ibd文件的表,也就是說導出表的mysql服務器啟用了innodb_file_per_table選項,而且要導出的表還是在啟用該選項之后才創建的。

導入表的是,要求導入表的服務器版本是MySQL 5.6+,且啟用了innodb_file_per_table選項。

(1). 導出表

導出表是在"準備"的過程中進行的,不是在備份的時候導出。對于一個已經備份好的備份集,使用"--apply-log"和"--export"選項即可導出備份集中的表。

假如以全備份集/bakdir/2017-04-02_17-41-38為例,要導出其中的表。

innobackupex --apply-log --export /bakdir/2017-04-02_17-41-38

在導出過程中,會看到如下信息:

1

2

xtrabackup:export?metadata of table'backuptest/num_innodb'?tofile?`./backuptest/num_innodb.exp` (1 indexes)

xtrabackup:???? name=PRIMARY,id.low=144, page=3

它說明了創建了一個.exp文件。

查看備份集目錄下的backuptest目錄,會發現多出了2個文件:.cfg和.exp,再加上.ibd文件,這3個文件是后續導入表時所需的文件。

-rw-r--r-- 1 root root  349 Apr  2 18:15 num_innodb.cfg
-rw-r----- 1 root root  16K Apr  2 18:15 num_innodb.exp
-rw-r----- 1 root root 8.4K Apr  2 17:41 num_innodb.frm
-rw-r----- 1 root root  31M Apr  2 17:41 num_innodb.ibd

其中.cfg文件是一種特殊的innodb數據字典文件,它和exp文件的作用是差不多的,只不過后者還支持在xtradb中導入,嚴格地講,要將導出的表導入到MySQL5.6或者percona server 5.6中,".cfg"文件完全可以不需要,但是如果有該文件的話,會進行架構驗證。

(2). 導入表

要在mysql服務器上導入來自于其它服務器的某innodb表,需要先在當前服務器上創建一個跟原表表結構一致的表,而后才能實現將表導入:

mysql> CREATE TABLE tabletest (...)  ENGINE=InnoDB;

然后將此表的表空間:

mysql> ALTER TABLE mydatabase.tabletest  DISCARD TABLESPACE;

接下來,將來自于"導出"表的的.ibd和.exp文件復制到當前服務器的數據目錄,如果導入目標服務器是MySQL 5.6+,也可以復制.cfg文件。然后使用如下命令將其“導入”:

mysql> ALTER TABLE mydatabase.tabletest IMPORT TABLESPACE;

xtrabackup支持部分備份,意味著可以指定備份哪個數據庫或者哪個表。

部分備份只有一點需要注意:在恢復的時候不要通過"--copy-back"的方式拷貝回datadir,而是應該使用導入表的方式。盡管使用拷貝的方式有時候是可行的,但是很多情況下會出現數據庫不一致的狀態。

(1). 備份

創建部分備份有三種方式:

  1. ?通過"--include"選項可以指定正則來匹配要備份的表,這種方式要使用完整對象引用格式,即db_name.tab_name的方式。
  2. 將要備份的表分行枚舉到一個文件中,通過"--tables-file"指定該文件。
  3. 或者使用"--databases"指定要備份的數據庫或表,指定備份的表時要使用完整對象引用格式,多個元素使用空格分開。

使用前兩種部分備份方式,只能備份innodb表,不會備份任何myisam,即使指定了也不會備份。而且要備份的表必須有獨立的表空間文件,也就是說必須開啟了innodb_file_per_table,更精確的說,要備份的表是在開啟了innodb_file_per_table選項之后才創建的。第三種備份方式可以備份myisam表。

例如?--include='^back.*[.]num_*'?,將備份back字母開頭的數據庫中num開頭的表,其中"[.]"的中括號不能少,因為正則中"."有特殊意義,所以使用中括號來枚舉以實現對象的完整引用。

innobackupex --user=root --password=123456 --include='^back*[.]num_*' /bakdir/

使用"--include"和"--tables-file"備份后,會生成一個時間戳目錄,目錄中只有和要備份的表有關的文件。

[root@xuexi data]# ls /bakdir/2017-04-02_17-35-46/
backup-my.cnf  ibdata1  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

如果使用的是--databases選項,則會生成一個時間戳目錄,里面有備份的數據庫代表的目錄,如果只備份了某個表,則該數據庫目錄中只有該表相關的文件。

innobackupex --user=root --password=123456 --databases='mysql.user backuptest' /bakdir/

上面只備份mysql.user表和backuptest數據庫,在生成的時間戳目錄中將有兩個mysql目錄和backuptest目錄。

[root@xuexi data]# ls /bakdir/2017-04-02_17-41-38/
backup-my.cnf  backuptest  ibdata1  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile[root@xuexi data]# ls /bakdir/2017-04-02_17-41-38/backuptest/
db.opt  num_innodb.frm  num_innodb.ibd  num_isam.frm  num_isam.MYD  num_isam.MYI[root@xuexi data]# ls /bakdir/2017-04-02_17-41-38/mysql/
user.frm  user.MYD  user.MYI

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535311.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535311.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535311.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xtrabackup工具

(1).備份過程 和innobackupex備份過程不同的是,xtrabackup的備份路徑是由"--target-dir"選項嚴格指定的,如果指定的目錄不存在,它備份的時候不會在target-dir目錄中再創建時間戳子目錄。 [rootxuexi data]# xtrabackup --backup …

mysql數據庫參數

注意:在配置binlog相關變量的時候,相關變量名總是搞混,因為有的是binlog,有的是log_bin,當他們分開的時候,log在前,當它們一起的時候,bin在前。在配置文件中也同樣如此。 log_bin …

oracle命令行安裝

cd /home/oracle/databases/runInstaller -silent -force -showprogress -responseFile /home/oracle/database/db_install.rsp -ignoreSysPrereqs -ignorePrereqdbca -silent -responseFile pwd/dbca.rspnetca -silent -responseFile /home/oracle/databases/netca.rsp

定期刪除數據腳本

#!/bin/sh backup_dir/data/xtrabackup DATEdate %Y-%m-%d #DATE_NOWdate %Y-%m-%d.%H%M DATE_NOWdate %Y-%m-%d PATH/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH#binog保留7天 binlog/data/binlogserver binlog_Rtime7#備…

定期備份數據庫腳本

#!/bin/bash MasterIp* USERroot PORT3306 PASSWD000000 DATEdate %Y-%m-%d #DATE_NOWdate %Y-%m-%d.%H%M DATE_NOWdate %Y-%m-%d OLDDATEdate %Y-%m-%d -d "30 days ago"  #全表備份 BACKUPDIR/data/mysql_backup/fulltable #單表tb_trcevt備份 datapath/data/mysq…

日志清理腳本

#!/bin/bash#定義日志所在分區當前空間所占比例數(去掉%)。grep -w表示精準匹配,只匹配"/"這個分區 LOG_PARTITION$(which df -h|awk {print $5,$6}|grep -w "/"|cut -d" " -f1|awk -F"%" {print $1}) #定義一周前的日期&a…

k8s二進制安裝

1. 前言 之前文章安裝 kubernetes 集群,都是使用 kubeadm 安裝,然鵝很多公司也采用二進制方式搭建集群。這篇文章主要講解,如何采用二進制包來搭建完整的高可用集群。相比使用 kubeadm 搭建,二進制搭建要繁瑣很多,需要…

Logstash mutate 插件

mutate 插件可以在字段上執行變換,包括重命名、刪除、替換和修改。這個插件相當常用。 比如: 你已經根據 Grok 表達式將 Tomcat 日志的內容放到各個字段中,想把狀態碼、字節大小或是響應時間,轉換成整型;你已經根據正則…

nginx日志分析腳本

#!/usr/bin/env bashecho "" echo " " echo " \ Nginx日志安全分析腳本 V1.0 / " echo " " echo " # 支持Nginx日志分析,攻擊告警分析等 " echo " # auth…

ELK學習筆記之Logstash詳解

0x00 Logstash概述 官方介紹:Logstash is an open source data collection engine with real-time pipelining capabilities。簡單來說logstash就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端;與此同時…

nginx-zabbix監控腳本

nginx_status_fun (){#函數內容NGINX_PORT$1#端口,函數的第一個參數是腳本的第二個參數,即腳本的第二個參數是段端口號NGINX_COMMAND$2#命令,函數的第二個參數是腳本的第三個參數,即腳本的第三個參數是命令nginx_active(){ #獲…

percona-xtrabackup備份

#!/bin/bash # 需要安裝 percona-xtrabackup # xtrabackup: https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ # xtrabackup 版本:2.4.24 (RPM安裝) # MySQL 版本: 5.7.36 (RPM安裝) # version: 22.01.17# 備份服務器 ip DB_BACKUP_SERVER"…

k8---proxy

kube-proxy 通過 Informer知道了Service、endpoints對象的創建,然后把service身上的CLUSTER-IP 和端口已經端點信息拿出來,創建iptable NAT規則做轉發或通過ipvs模塊創建VS服務器,這樣經過CLUSTER-IP的流量都被轉發到后端pod。 iptables模式 …

k8s--configmap

當卷中使用的ConfigMap被更新時,所投射的鍵最終也會被更新。kubelet組件會在每次周期性同步時檢查所掛載的ConfigMap是否為最新。 不過,kubelet使用的是其本地的高速緩存來獲得ConfigMap的當前值。 ConfigMap既可以通過watch操作實現內容傳播(默認形式&…

etcd命令

[rootlocalhost calico]# etcdctl get /coreos.com/network/subnets/4.0.32.0-24 {"PublicIP":"10.8.65.53"} 從etcd中查詢出4.0.32.0/24的子網的宿主機host的ip10.8.65.53。

docker搭建ldap

1.下載鏡像 docker pull osixia/openldap docker pull docker.io/osixia/phpldapadmin 2.運行鏡像 docker run -dit --name ldap23 --restartalways -p 389:389 -p 636:636 -e LDAP_ORGANISATION”test” -e LDAP_DOMAIN”test.com” -e LDAP_ADMIN_PASSWORD123456″ osixi…

centos 縮減邏輯卷

在使用期間磁盤空間不足,發現/dev/mapper/centos-home下還有很多空間,如果想要將home下面的磁盤空間分配到root磁盤下面,可以使用以下方法 查看磁盤空間,每個人的磁盤名稱可能不同 df -h 1 備份home文件 tar cvf /tmp/home.tar /…

zabbix自動發現監控腳本

自動發現端口列表腳本 # -*- coding: utf-8 -*- import os import json data{} tcp_list[] port_list[] commandos.popen("ss -4tln | awk -F [ :] NR>2{print $5}") for port in command:port_list.append(port.strip()) for port in port_list:port_dict{}por…

獲取cpu使用率腳本

#!/bin/bash # 獲取要監控的本地服務器IP地址 IPifconfig | grep inet | grep -vE inet6|127.0.0.1 | awk {print $2} echo -e "\033[32mIP地址:\033[0m" $IP echo -e "\033[31m獲取CPU\033[0m" # 獲取cpu總核數 cpu_numgrep -c "model n…

獲取磁盤使用率

#!/bin/bash #用途:監控磁盤的使用情況。 #定義檢查磁盤的空間使用率函數 userroot topnum10 local_diskdir/data/jiankong/disk mkdirdisk() { if [ ! -d $disktmpdir ];then mkdir $disktmpdir fi } chk_sp() {ip$1n$(wc -l $local_diskdir/$ip/chk_sp.log | awk …