mysql之 表資料存放路徑非datadir目錄
假如,新建一張表,並讓該表的儲存路徑 不是預設的/path/to/datadir/dbname 。而是 指定儲存的位置 應該如何處理?
方法一
shell> mkdir /Generalt1
shell> chown mysql.mysql /Generalt1
mysql> create table test_ger1 (a int) data directory='/Generalt1';
Query OK, 0 rows affected (0.15 sec)
shell> cd /Generalt1
shell> ll test_ger1* # 在datadir 的 test 目錄下
-rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm
-rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl # 這是連結檔案,連結到上面的ibd檔案
shell> cat test_ger1.isl # 一個文字檔案,內容就是idb檔案的路徑
/Generalt1/test/test_ger1.ibd
方法二
在mysql 5.7之後,可以使用`通用表空間`
語法:
CREATE TABLESPACE tablespace_name ADD DATAFILE 'file_name' [FILE_BLOCK_SIZE = value] [ENGINE [=] engine_name]
-- 1: 建立一個通用表空間
mysql> create tablespace ger_space add datafile '/Generalt1/ger_space.ibd' file_block_size=8192;
Query OK, 0 rows affected (0.07 sec)
-- datafile 指定儲存路徑後,在datadir下會產生一個isl檔案,該檔案的內容為General space的ibd檔案的路徑
-- 如果datafile不指定路徑,則ibd檔案預設儲存在datadir目錄下,且不需要isl檔案了
mysql> create tablespace ger_space2 add datafile 'ger_space2.ibd' file_block_size=8192;
Query OK, 0 rows affected (0.06 sec)
shell> ll ger*
-rw-r-----. 1 mysql mysql 32768 Jan 3 16:51 ger_space2.ibd # 未指定路徑,存放於datadir目錄
-rw-r-----. 1 mysql mysql 26 Jan 3 16:50 ger_space.isl # 指定了其他路徑,存在isl連結檔案
shell> cat ger_space.isl
/Generalt1/ger_space.ibd # ibd檔案真實存在的路徑
mysql> select * from information_schema.innodb_sys_tablespaces where name='ger_space'\G
*************************** 1. row ***************************
SPACE: 96
NAME: ger_space
FLAG: 2304
FILE_FORMAT: Any
ROW_FORMAT: Any
PAGE_SIZE: 8192 -- page_size是8k
ZIP_PAGE_SIZE: 0
SPACE_TYPE: General -- General型別
FS_BLOCK_SIZE: 0
FILE_SIZE: 18446744073709551615
ALLOCATED_SIZE: 2
COMPRESSION: None
1 row in set (0.00 sec)
-- 2: 建立表
mysql> create table test_ger2 (a int) tablespace=ger_space;
Query OK, 0 rows affected (0.11 sec)
shell> ll test_ger* # 在datadir 的 test 目錄下
-rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm
-rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl
-rw-r-----. 1 mysql mysql 8554 Jan 3 17:09 test_ger2.frm # 僅有一個frm檔案
shell> ll /Generalt1/
total 52
drwxr-x---. 2 mysql mysql 4096 Jan 3 16:41 test
-rw-r-----. 1 mysql mysql 49152 Jan 3 17:09 ger_space.ibd # test_ger2的ibd檔案其實儲存在ger_space.ibd的通用表空間中
mysql> create table test_ger3 (a int) tablespace=ger_space; -- test_ger3 也存放在ger_space.ibd中
Query OK, 0 rows affected (0.09 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2213502/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記一次 Vagrant 環境下更換 MySQL 資料目錄 datadir 的坑MySql
- 修改Oracle資料檔名及資料檔案存放路徑Oracle
- 檢視python pip安裝的包存放路徑(site-packages目錄的位置)PythonPackage
- 帝國CMS備份資料壓縮存放目錄
- 【MySQL 資料庫】MySQL目錄MySql資料庫
- MySQL-02.MySQL的資料目錄和表檔案解析MySql
- Qt 程式獲取程式所在路徑、使用者目錄路徑、臨時資料夾等特殊路徑的方法QT
- CentOS 個人目錄下中文路徑轉英文路徑CentOS
- wdcp修改mysql的資料目錄MySql
- 前端學習程式碼目錄存放前端
- Linux中MYSQL5.7預設配置my.cnf存放路徑LinuxMySql
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 如何對報表資料新增目錄
- python基本操作-檔案、目錄及路徑Python
- NodeJS:將資料夾按照存放路徑變成一個對應的JSONNodeJSJSON
- Linux CentOS更改MySQL資料庫目錄位置LinuxCentOSMySql資料庫
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- Trace file的命名規則和存放路徑
- CentOS 7下mysql 8修改datadir之後不能啟動CentOSMySql
- Python中怎麼判斷路徑是否為目錄?Python
- 在laravel框架中獲取storage目錄的路徑Laravel框架
- win10快速啟動資料夾在哪裡_win10快速啟動資料夾目錄的路徑Win10
- [BUG反饋]系統配置裡的“資料庫備份根路徑”不自動生成目錄資料庫
- python獲取指定目錄所有檔案絕對路徑Python
- MySQL 資料庫之網際網路常用分庫分表方案MySql資料庫
- C#快速入門教程(24)—— 路徑、目錄與檔案C#
- 談談術語表、資料字典、資料目錄分別是什麼
- maven工作目錄、編譯後的目錄說明及mybatis-plus的xml檔案路徑配置Maven編譯MyBatisXML
- springfox-swagger-ui 在二級目錄下的路徑問題SpringSwaggerUI
- 解決docker容器存放目錄磁碟空間滿了問題Docker
- 帝國cms把文章內容都存放到根目錄方法
- 大資料學習目錄大資料
- MYSQL資料庫表記錄刪除解決方案MySql資料庫
- Mysql資料庫data目錄下的mysql-bin.00000X可以刪除嗎?MySql資料庫
- mysql資料庫安裝及預設儲存路徑修改方法MySql資料庫
- MySQL 8.0 目錄介紹MySql
- win10系統設定索引檔案存放路徑的方法Win10索引
- 資料資產管理:資料目錄怎麼搞?