在生產環境中,由於業務的增長或者業務的拆分,dba經常需要拆庫操作。那麼我們常見的拆庫手段有哪些呢?
我這裡提供幾種解決辦法:
1. 使用mysqldump 把錶邏輯倒出,然後再source 到其它地方
2. 使用xtrabackup 把錶、或者庫邏輯備份出,然後再recovery出乙個例項
3. 使用mysql自帶的表空間轉移(transport)[這個需要mysql 5.6.6 以上版本支援]
i: 先來看一下mysql 的 transport 表空間的特性吧
比如我們要把 tab_test1 從 db_a 移動到 db_b ,那麼我們需要做這麼一系列動作:
step 1: use db_a; show create table tab_test1;(首先,拿到需要的表結構)
step 2: use db_b; create table tab_test1; alter tale tab_test1 discard tablespace;(discard tablespace 就是把ibd檔案刪掉,只留下.frm檔案)(其次,到目標庫刪除掉idb檔案)
step 4: use db_a;flush table test122 for export;(把相關表的記憶體資料寫入到資料庫)
step 5: 拷貝 tab_test1.ibd 檔案到 db_b/ 目錄下;(作業系統層執行拷貝ibd檔案操作)
step 6: use db_a; unlock tables; (源庫上解鎖表)
step 7: use db_b; alter table tab_test1 import tablespace;(目標庫執行表空間匯入)
執行完上邊幾個步驟,我們就完成了 在庫之間遷移 某些個表的操作了。
iii:最後我們就看一下 mysqldump 的姿勢吧
額, 這個就不多囉嗦了吧, mysqldump 做的事情就是 一些邏輯的匯出, 倒出來的資料我們是可以用人肉可見的。 這個需要注意的一點就是 –single-transcation 選項
關於以上幾種辦法,我們在實際工作中需要 考慮 伺服器的資源、記憶體容量等, 需要結合實際情況來使用 合適的辦法進行拆庫操作。
MYSQL 常見資料型別
一 數值整形型別 型別位元組 最小值最大值 帶符號 無符號 帶符號 無符號 tinyint 1 1位元組 8 bit 128 1270 2 8 256 轉為二進位制,包括0 smallint 2 2 8 bit 32768 32767 02 2 8 65535 mediumiint 3 3 8 bi...
Mysql常見資料型別
資料型別 儲存範圍 位元組tinyint 有符號值 128到127 2 7到2 7 1 1smallint 有符號值 32768到32767 2 15到2 15 1 2mediumint 有符號值 8388608到8388607 2 23到2 23 1 3int 有符號值 2147483648到21...
MySQL常見資料型別
常見資料型別 數值型 整型 小數 定點數浮點數 字元型 較短的文字 char varchar 較長的文字 text blob 較長的二進位制資料 日期型 一 整型 整數型別 位元組 範圍 tinyint 1 smallint 2 mediumint 3 int integer 4 bigint 8 ...