MySQL 罕見數據拆分方法。本站提示廣大學習愛好者:(MySQL 罕見數據拆分方法)文章只能為提供參考,不一定能成為您想要的結果。以下是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 選項
關於以上幾種方法,我們在現實任務中須要 斟酌 辦事器的資本、內存容量等, 須要聯合現實情形來應用 適合的方法停止拆庫操作。