InnoDB 怎麼做表空間遷移

2021-10-10 13:53:21 字數 3130 閱讀 8176

在工作中經常會碰到單獨遷移、複製或者備份某一張表的需求,一般可以通過邏輯

/物理備份來實現。但是在

5.6.6+

的版本中我們還可以用到一種基於表空間遷移的快速方法,本節內容就來聊聊這一操作。

2實戰

實驗環境:兩個

mysql 5.7.22  

版本資料庫例項。測試步驟如下:

2.1在源庫建立一張測試表

mysql> use test;

database changed

mysql> create table tmp_table(id int primary key,b varchar(20))engine=innodb default charset=utf8mb4;

query ok, 0 rows affected (0.07 sec)

mysql> insert into tmp_table select 1,'a';

query ok, 1 row affected (0.03 sec)

records: 1 duplicates: 0 warnings: 0

mysql> insert into tmp_table select 2,'b';

query ok, 1 row affected (0.01 sec)

records: 1 duplicates: 0 warnings: 0

mysql> select * from tmp_table;

+----+------+

| id | b   |

+----+------+

|  1 | a   |

|  2 | b   |

+----+------+

2 rows in set (0.00 sec)

2.2生成元資料檔案

在源庫上執行

flush tables … for export

鎖定表並生成

.cfg

元資料檔案

mysql> flush tables tmp_table for export; --

注意:這一步會表鎖,不能

insert

、update

query ok, 0 rows affected (0.01 sec)

~ root# cd usr/local/mysql/data/test

~ root# ls -l tmp*

-rw-r----- 1 _mysql _mysql 402 nov 2 19:15 tmp_table.cfg --

生成的.cfg

檔案-rw-r----- 1 _mysql _mysql 8580 nov 2 19:15 tmp_table.frm

-rw-r----- 1 _mysql _mysql 98304 nov 2 19:15 tmp_table.ibd

2.3建立目標表並丟棄現有表空間

在目標資料庫建立相同的表,並丟棄現有的表空間

mysql> create table tmp_table(id int primary key,b varchar(20))engine=innodb default charset=utf8mb4;

query ok, 0 rows affected (0.04 sec)

mysql> alter table tmp_table discard tablespace; ---

丟棄現有表空間

注意:

約束條件、字符集等等也必須一致,建議使用

show create table tmp_table;

來獲取建立表的

sql,否則在新伺服器上匯入表空間的時候會提示

1808

錯誤。2.4將元資料檔案複製到目標例項

將.ibd

檔案和.cfg

元資料檔案從源例項複製到目標例項:

~ root# scp tmp_table.ibd tmp_table.cfg root@

目標ip:/usr/local/mysql/data/test  ---

傳輸到目標資料庫的

test schema

目錄~ root# chown mysql.mysql tmp_table.cfg tmp_table.ibd --

在目標資料庫中授權

2.5在源資料庫解鎖tmp_table

mysql> unlock table;

query ok, 0 rows affected (0.01 sec)

2.6在目標資料庫中匯入tmp_table表空間

在目標資料庫中匯入

tmp_table

表空間,然後檢視表是否正確

mysql> alter table tmp_table import tablespace;

query ok, 0 rows affected (0.23 sec)

mysql> select * from tmp_table;

+----+------+

| id | b   |

+----+------+

|  1 | a   |

|  2 | b   |

+----+------+

2 rows in set (0.00 sec)

注意

alter table … import tablespace

特性並不強制對匯入的資料施加外來鍵約束。如果表之間有外來鍵約束,那麼所有表都應該在相同的(邏輯的)點上匯出。在這種情況下,您將停止更新表,提交所有事務,在表上獲得共享鎖,然後執行匯出操作。

怎麼做產品

和使用者交流是為了做出更好的 產品 打造更好的體驗,但真正好的產品出現之前,使用者也不知道他們想要什麼 比如,在汽車沒出現的馬車時代,使用者會說 我需要一匹更快的馬 那些情緒激動 很生氣的使用者常常能變為最忠實的使用者,只要你能夠打動他們。所以,情緒裡有絕對的價值,如果你能在這些使用者生氣的時候,好...

直播怎麼做?

1 手機 那麼手機直播需要哪些裝置呢,首先是一部畫素高的手機,這個就不具體說明了。其次是光源,也就是補光燈,布光是一門專業的學科,有興趣的同學可以找點資料深入了解一下。一般在環境光充足的情況下可以直接選擇那種燈 支架一體的,可自行某寶。3 攝像頭 我們平時所看的才藝主播,帶貨主播,遊戲主播,絕大部分...

seo優化方案怎麼做?seo怎麼做優化?

但要害詞在優化之前應該先進行選擇,這一項作業意義嚴峻。一些短要害詞雖然上手,但越是上手的要害詞流量就越為大公司所把控。中小型企業在優化這些要害詞時會好不容易且難以收到成效。所以關於新 或是一些中小型的企業來說,選擇一些較為簡略優化的要害詞就顯得尤為要害。要害詞優化的難易度可以通過查詢要害詞查詢熱度來...