本篇內(nèi)容介紹了“MySQL共享表空間的擴容、收縮和遷移”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站制作、網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團隊十年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
一.擴容innodb文件
1.關(guān)閉mysql db
# /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3307.sock shutdown
2.打開參數(shù)文件
innodb_data_file_path = ibdata1:512M:autoextend
將ibdata1調(diào)整至接近實際大小,并在后面追加新的文件:
innodb_data_file_path = ibdata1:512M;ibdata2:512M:autoextend
3.啟動數(shù)據(jù)庫
# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql &
二.縮小表空間
共享表空間文件,一旦擴展無法自動縮小,需要通過手工縮小
1.導(dǎo)出全部數(shù)據(jù)庫
# /usr/local/mysql/bin/mysqldump -uroot -p -A -S /tmp/mysql3307.sock > /tmp/3307all.sql
Enter password:
2.關(guān)閉mysql db
# /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3307.sock shutdown
3.刪除mysql的數(shù)據(jù)目錄
rm -rf /home/mysql3307/mysql3307/*
4.初始化mysql
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql3307/mysql3307 --user=mysql
5.啟動mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql &
6.導(dǎo)入數(shù)據(jù)
source /tmp/3307all.sql
三.innodb表空間遷移
原庫表結(jié)構(gòu):
點擊(此處)折疊或打開
CREATE TABLE `wwj`.`t1` (
`id` INT NOT NULL,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
alter table wwj.t1 add index idx_name (name) ;
insert into wwj.t1 values(1,'wwj');
1.在目標實例上創(chuàng)建一個相同的表
點擊(此處)折疊或打開
CREATE TABLE `wwj2`.`t1` (
`id` INT NOT NULL,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`));
2.在目標庫上執(zhí)行ALTER TABLE t DISCARD TABLESPACE;
ALTER TABLE t1 DISCARD TABLESPACE;
- discard的意思就是從數(shù)據(jù)庫detached,會刪除ibd文件,保留frm文件。
- 也就意味著,你可以對frm文件操作,比如:rename table,drop table ,但是不能對ibd文件操作,比如:dml
3.在源庫上執(zhí)行FLUSH TABLES t FOR EXPORT;生成.cfg文件
flush tables t1 for export;
-rw-r-----. 1 mysql mysql 67 Mar 24 06:59 db.opt
-rw-r-----. 1 mysql mysql 467 Mar 24 18:32 t1.cfg
-rw-r-----. 1 mysql mysql 8586 Mar 24 06:59 t1.frm
-rw-r-----. 1 mysql mysql 114688 Mar 24 06:59 t1.ibd
此時,.cfg文件在InnoDB的data directory中
flush tables .. for export 會加鎖,這時候,千萬不能退出終端或session,否則加鎖無效且.cfg文件自動刪除。
4.講.ibd文件和.cfg文件拷貝到目標實例
[root@mysql5 wwj]# cp t1.cfg /home/mysql3306/mysql3306/wwj2
[root@mysql5 wwj]# cp t1.ibd /home/mysql3306/mysql3306/wwj2
修改權(quán)限
5.在源庫執(zhí)行unlock tables;
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
6.在目標庫執(zhí)行ALTER TABLE t IMPORT TABLESPACE;
第一次執(zhí)行:在目標庫追加index后成功
mysql> alter table t1 import tablespace;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: wwj2
ERROR 1808 (HY000): Schema mismatch (Number of indexes don't match, table has 1 indexes but the tablespace meta-data file has 2 indexes)
innodb可傳輸表空間注意事項
-----------------------------
必須開啟 innodb_file_per_table
當這個表處于quiesced狀態(tài),甚至不能被select
兩邊實例的page size 一致
5.7 版本之前,不支持分區(qū)表transport
外鍵相關(guān)的表,必須設(shè)置 foreign_key_checks=0 才能成功
ALTER TABLE ... IMPORT TABLESPACE 不需要.cfg metadata file . 但是,這樣的話,MySQL就不會對schema進行verificate
5.6以及更高版本,import&export 版本必須在同一個series
在replication環(huán)境中,master & slave 都必須開啟 innodb_file_per_table
對于InnoDB general tablespace,不支持discard & import tablespace
如果兩邊服務(wù)器的table row_format設(shè)置的不一樣,會導(dǎo)致schema mismatch error
加密過的InnoDB tablespace 必須要拷貝.cfp 文件
四.MyISAM表空間遷移
1. flush table with read lock
2. 直接復(fù)制數(shù)據(jù)文件和表結(jié)構(gòu)文件
“mysql共享表空間的擴容、收縮和遷移”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
文章題目:mysql共享表空間的擴容、收縮和遷移
文章出自:http://chinadenli.net/article2/jeicoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣、品牌網(wǎng)站建設(shè)、用戶體驗、網(wǎng)站建設(shè)、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)