溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql共享表空間的擴容、收縮和遷移

發(fā)布時間:2021-08-25 16:55:12 來源:億速云 閱讀:154 作者:chen 欄目:MySQL數(shù)據(jù)庫

本篇內(nèi)容介紹了“mysql共享表空間的擴容、收縮和遷移”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

一.擴容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):

點擊(此處)折疊或打開

  1. CREATE TABLE `wwj`.`t1` (

  2.   `id` INT NOT NULL,

  3.   `name` VARCHAR(45) NULL,

  4.   PRIMARY KEY (`id`));

  5.   

  6. alter table wwj.t1 add index idx_name (name) ;


  7. insert into wwj.t1 values(1,'wwj');


1.在目標(biāo)實例上創(chuàng)建一個相同的表

點擊(此處)折疊或打開

  1. CREATE TABLE `wwj2`.`t1` (

  2.   `id` INT NOT NULL,

  3.   `name` VARCHAR(45) NULL,

  4.   PRIMARY KEY (`id`));

2.在目標(biāo)庫上執(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文件拷貝到目標(biāo)實例
[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.在目標(biāo)庫執(zhí)行ALTER TABLE t IMPORT TABLESPACE;

第一次執(zhí)行:在目標(biāo)庫追加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
當(dāng)這個表處于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)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI