MySQL 常見資料拆分辦法
在生產環境中,由於業務的增長或者業務的拆分,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;(目標庫執行表空間匯入)
執行完上邊幾個步驟,我們就完成了 在庫之間遷移 某些個表的操作了。
II: 再來看一下 xtrabackup 匯出部分表,以達到遷移目的
Step 1: 我們需要使用xtrabackup 備份部分表
nohup perl /home/ddb/tmp/xtrabackup/bin/innobackupex-1.5.1 --ibbackup=/home/tmp/xtrabackup/bin/xtrabackup_55 --user=root --password=123 --defaults-file=/home/my.cnf --slave-info --tables-file=/mnt/back_tables.txt /mnt/backup_1
Step 2: 應用日誌,進行恢復操作
nohup perl /home/tmp/percona-xtrabackup-2.1.9-Linux-x86_64/bin/innobackupex-1.5.1 --ibbackup=/home/tmp/percona-xtrabackup-2.1.9-Linux-x86_64/bin/xtrabackup_55 --export --apply-log --defaults-file=/home/node-1-1/backup-my.cnf /home/node-1-1/ > /tmp/r.log 2>&1 &
Step 3: 重新起例項,配置複製關係,只複製部分表
my.cnf 檔案配置: Replicate_Wild_Do_Table/Replicate_Wild_Ignore_Table
執行完上邊幾個步驟,我們就完成了表的遷移操作,並且新起了個例項,達到了分庫的目的。
III:最後我們就看一下 mysqldump 的姿勢吧
額, 這個就不多囉嗦了吧, mysqldump 做的事情就是 一些邏輯的匯出, 倒出來的資料我們是可以用人肉可見的。 這個需要注意的一點就是 --single-transcation 選項
關於以上幾種辦法,我們在實際工作中需要 考慮 伺服器的資源、記憶體容量等, 需要結合實際情況來使用 合適的辦法進行拆庫操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3402/viewspace-2811138/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 資料庫崩潰(crash)的常見原因和解決辦法MySql資料庫
- mysql常見資料型別MySql資料型別
- CentOS 常見異常及解決辦法CentOS
- 常見php與mysql中文亂碼問題解決辦法PHPMySql
- MySQL組複製的幾個常見問題以及解決辦法MySql
- uni-app開發 常見異常和解決辦法APP
- 【TUNE_ORACLE】Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法Oracle資料庫
- mysql無法建立資料庫怎麼辦MySql資料庫
- 伺服器常見故障及解決辦法伺服器
- 常見資料庫資料庫
- 常見資料集
- MySQL專題:資料庫垂直、水平拆分MySql資料庫
- mysql常見操作MySql
- PbootCMS資料庫配置,修改為Mysql資料庫,配置Mysql出錯解決辦法boot資料庫MySql
- Excel資料快速匯入mysql的幾個辦法ExcelMySql
- 伺服器故障的常見原因和預防辦法伺服器
- CSS元素高度塌陷的幾種常見解決辦法!CSS
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- MySQL常見索引概念MySql索引
- MySQL 常見錯誤MySql
- Mysql:常見問題MySql
- 【知識分享】伺服器常見異常問題及解決辦法伺服器
- cmd中輸入net start mysql 提示:服務名無效 兩種常見解決辦法MySql
- 資料庫常見問題資料庫
- Python常見資料框操作①Python
- SQL 常見資料型別SQL資料型別
- 大資料常見問題大資料
- 常見的資料型別資料型別
- springboot接收Date型別資料異常與解決辦法Spring Boot型別
- MySQL資料庫開發常見問題及幾點優化!MySql資料庫優化
- Redis叢集資料沒法拆分時的搭建策略Redis
- 大資料常見的資料分析思維大資料
- Mysql:1236常見錯誤MySql
- Mysql 常見面試題MySql面試題
- MYSQL資料庫匯入資料時出現亂碼的解決辦法MySql資料庫
- 解決Mysql資料庫插入資料出現問號(?)的解決辦法MySql資料庫
- mysql 4.1.7忘記資料庫密碼的處理辦法MySql資料庫密碼
- MySQL 與 Elasticsearch 資料不對稱問題解決辦法MySqlElasticsearch