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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 改變mysql資料存放路徑MySql
- 更改MySQL資料檔案存放目錄位置MySql
- mysql移動資料存放目錄及問題薦MySql
- ueditor編輯器圖片自定義存放目錄及路徑修改
- 記一次 Vagrant 環境下更換 MySQL 資料目錄 datadir 的坑MySql
- MySQL初步安裝後更改datadir目錄幾種方式MySql
- 修改Oracle資料檔名及資料檔案存放路徑Oracle
- 帝國CMS備份資料壓縮存放目錄
- 【MySQL 資料庫】MySQL目錄MySql資料庫
- hadoop之 hadoop日誌存放路徑Hadoop
- 檢視python pip安裝的包存放路徑(site-packages目錄的位置)PythonPackage
- MySQL-02.MySQL的資料目錄和表檔案解析MySql
- Qt 程式獲取程式所在路徑、使用者目錄路徑、臨時資料夾等特殊路徑的方法QT
- Java獲取WEB目錄路徑JavaWeb
- 修改MySQL資料庫儲存位置datadirMySql資料庫
- 關於使用 Vagrant 作為開發環境,MySQL 資料庫資料存放目錄遷移的問題開發環境MySql資料庫
- wdcp修改mysql的資料目錄MySql
- 瞭解MySQl資料庫目錄MySql資料庫
- mysql資料目錄結構(轉)MySql
- JavaScript 獲取目錄絕對路徑JavaScript
- 前端學習程式碼目錄存放前端
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 【Python】資料存放入mysql資料庫PythonMySql資料庫
- 如何對報表資料新增目錄
- JAVA 取得當前目錄的路徑/Servlet/class/檔案路徑/web路徑/url地址JavaServletWeb
- Linux中MYSQL5.7預設配置my.cnf存放路徑LinuxMySql
- 非歸檔模式下的資料檔案路徑修改模式
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- VC 獲取系統特殊資料夾的路徑如:系統目錄,桌面等
- python基本操作-檔案、目錄及路徑Python
- java獲取硬碟根目錄的本地路徑Java硬碟
- MySQL資料庫資料檔案路徑遷移步驟MySql資料庫
- golang 獲取當前路徑和上一級父路徑(目錄)Golang
- MySQL檔案目錄格式及存放位置MySql
- Linux CentOS更改MySQL資料庫目錄位置LinuxCentOSMySql資料庫
- mysql資料目錄下的常見檔案MySql
- 在laravel框架中獲取storage目錄的路徑Laravel框架
- [Swift] iOS中的目錄路徑以及獲取方法SwiftiOS