您好,登錄后才能下訂單哦!
這篇文章主要講解了“MySQL磁盤空間不夠怎么辦”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“MySQL磁盤空間不夠怎么辦”吧!
大部分?jǐn)?shù)據(jù)庫都有存儲數(shù)據(jù)文件擴(kuò)展的功能,ORACLE 可以擴(kuò)展你的表空間,SQL SERVER 可以多建立幾個(gè) FILEGROUP, PostgreSQL 也可以建立相關(guān)類似的擴(kuò)展。這些都是對付當(dāng)前存儲空間不足,將數(shù)據(jù)文件跨物理位置進(jìn)行存儲。
MYSQL 本身從5.6 就開始支持相關(guān)的擴(kuò)展,但實(shí)際上使用的人是少之又少,今天來說說相關(guān)擴(kuò)展的東西,版本基于MYSQL 5.7,mysql 專業(yè)的叫法叫做外部表。
首先使用一項(xiàng)技術(shù)都是有目地的,使用MYSQL 的外部表主要有以下幾個(gè)原因
1 存儲空間不夠,某個(gè)大表需要更大的存儲空間
2 存儲介質(zhì)更新,部分表需要存放到更快的存儲介質(zhì)中
下面在看看到底怎么做,目前在data 目錄下掛載了mysql 的目錄以及mysql_extend 兩個(gè)目錄,目前數(shù)據(jù)都在mysql目錄下存放,我們需要將employees 庫中的新建立的表都不在mysql 目錄下 employees 存放,都要存放在新的位置/data/mysql_extend/employees 目錄
下面有幾種方法
1,只針對新表的數(shù)據(jù),存儲到新的物理位置
CREATE TABLE `d_extend` (
-> `dept_no` char(4) NOT NULL,
-> `dept_name` varchar(40) NOT NULL,
-> PRIMARY KEY (`dept_no`),
-> UNIQUE KEY `dept_name` (`dept_name`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DATA DIRECTORY = '/data/mysql_extend';
我們可以看到物理文件已經(jīng)到了指定的位置
在原目錄中會產(chǎn)生一個(gè) isl 文件,
isl 文件其實(shí)里面僅僅包含了實(shí)際ibd文件的存儲位置
在實(shí)際中的應(yīng)用可能會存在這樣一個(gè)實(shí)際情況,就是我們更換了SSD 磁盤
但怎么將表的物理文件安全的遷移到新的SSD 磁盤上。
我們繼續(xù)往下看,舉例我們要將emplyees 表遷移到SSD 磁盤環(huán)境,而SSD 的磁盤環(huán)境的對應(yīng)的目錄是 /data/mysql_extend 下
1 我們創(chuàng)建一個(gè)表空間,并指定到/data/mysql_extend 下
create tablespace employees add datafile '/data/mysql_extend/employees/employees.ibd' engine = innodb;
2 之間遷移數(shù)據(jù)到新的表空間
上面兩張圖可以看到ibd 文件已經(jīng)從原來的目錄遷移到了新的位置,但FRM 文件還是保留在原來的目錄。
另外需要注意的是,如果是MGR ,復(fù)制等,要保證其他集群上的目錄都要一樣,在做相關(guān)的操作。
另外通過查看表空間我們可以發(fā)現(xiàn)兩點(diǎn)問題
select * from INNODB_SYS_TABLESPACES;
新建立的表空間的文件格式是 any row_format 也是any 并且 space_type 是genernal , 說明兩個(gè)問題 1 這個(gè)表空間并不是 per_table 的,是可以多個(gè)表公用的存儲空間,這點(diǎn)和其他數(shù)據(jù)庫是一致的。
另外根據(jù)官方文檔,如果將多個(gè)表存儲在一個(gè)表空間,相對于一個(gè)表一個(gè)表空間有以下問題
1 不支持周二說的快速移動表的方式也就是表 discard
2 分區(qū)表誤使用這樣的方法
3 官方文檔說明由于多表公用一個(gè)表空間,在元數(shù)據(jù)讀取上會優(yōu)于單表單文件的方式,但未提供具體的數(shù)據(jù)以及相關(guān)的實(shí)驗(yàn)證明。
感謝各位的閱讀,以上就是“MySQL磁盤空間不夠怎么辦”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對MySQL磁盤空間不夠怎么辦這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。