在工作中經常會碰到單獨遷移、複製或者備份某一張表的需求,一般可以通過邏輯
/物理備份來實現。但是在
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怎麼做優化?
但要害詞在優化之前應該先進行選擇,這一項作業意義嚴峻。一些短要害詞雖然上手,但越是上手的要害詞流量就越為大公司所把控。中小型企業在優化這些要害詞時會好不容易且難以收到成效。所以關於新 或是一些中小型的企業來說,選擇一些較為簡略優化的要害詞就顯得尤為要害。要害詞優化的難易度可以通過查詢要害詞查詢熱度來...