這篇文章主要講解了“MySQL磁盤空間不夠怎么辦”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“MySQL磁盤空間不夠怎么辦”吧!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、臨城網(wǎng)站維護(hù)、網(wǎng)站推廣。
大部分?jǐn)?shù)據(jù)庫(kù)都有存儲(chǔ)數(shù)據(jù)文件擴(kuò)展的功能,ORACLE 可以擴(kuò)展你的表空間,SQL SERVER 可以多建立幾個(gè) FILEGROUP, PostgreSQL 也可以建立相關(guān)類似的擴(kuò)展。這些都是對(duì)付當(dāng)前存儲(chǔ)空間不足,將數(shù)據(jù)文件跨物理位置進(jìn)行存儲(chǔ)。
MYSQL 本身從5.6 就開始支持相關(guān)的擴(kuò)展,但實(shí)際上使用的人是少之又少,今天來(lái)說(shuō)說(shuō)相關(guān)擴(kuò)展的東西,版本基于MYSQL 5.7,mysql 專業(yè)的叫法叫做外部表。
首先使用一項(xiàng)技術(shù)都是有目地的,使用MYSQL 的外部表主要有以下幾個(gè)原因
1 存儲(chǔ)空間不夠,某個(gè)大表需要更大的存儲(chǔ)空間
2 存儲(chǔ)介質(zhì)更新,部分表需要存放到更快的存儲(chǔ)介質(zhì)中
下面在看看到底怎么做,目前在data 目錄下掛載了mysql 的目錄以及mysql_extend 兩個(gè)目錄,目前數(shù)據(jù)都在mysql目錄下存放,我們需要將employees 庫(kù)中的新建立的表都不在mysql 目錄下 employees 存放,都要存放在新的位置/data/mysql_extend/employees 目錄
下面有幾種方法
1,只針對(duì)新表的數(shù)據(jù),存儲(chǔ)到新的物理位置
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)到了指定的位置
在原目錄中會(huì)產(chǎn)生一個(gè) isl 文件,
isl 文件其實(shí)里面僅僅包含了實(shí)際ibd文件的存儲(chǔ)位置
在實(shí)際中的應(yīng)用可能會(huì)存在這樣一個(gè)實(shí)際情況,就是我們更換了SSD 磁盤
但怎么將表的物理文件安全的遷移到新的SSD 磁盤上。
我們繼續(xù)往下看,舉例我們要將emplyees 表遷移到SSD 磁盤環(huán)境,而SSD 的磁盤環(huán)境的對(duì)應(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)從原來(lái)的目錄遷移到了新的位置,但FRM 文件還是保留在原來(lái)的目錄。
另外需要注意的是,如果是MGR ,復(fù)制等,要保證其他集群上的目錄都要一樣,在做相關(guān)的操作。
另外通過(guò)查看表空間我們可以發(fā)現(xiàn)兩點(diǎn)問(wèn)題
select * from INNODB_SYS_TABLESPACES;
新建立的表空間的文件格式是 any row_format 也是any 并且 space_type 是genernal , 說(shuō)明兩個(gè)問(wèn)題 1 這個(gè)表空間并不是 per_table 的,是可以多個(gè)表公用的存儲(chǔ)空間,這點(diǎn)和其他數(shù)據(jù)庫(kù)是一致的。
另外根據(jù)官方文檔,如果將多個(gè)表存儲(chǔ)在一個(gè)表空間,相對(duì)于一個(gè)表一個(gè)表空間有以下問(wèn)題
1 不支持周二說(shuō)的快速移動(dòng)表的方式也就是表 discard
2 分區(qū)表誤使用這樣的方法
3 官方文檔說(shuō)明由于多表公用一個(gè)表空間,在元數(shù)據(jù)讀取上會(huì)優(yōu)于單表單文件的方式,但未提供具體的數(shù)據(jù)以及相關(guān)的實(shí)驗(yàn)證明。
感謝各位的閱讀,以上就是“MySQL磁盤空間不夠怎么辦”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)MySQL磁盤空間不夠怎么辦這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!