假如,新建一張表,並讓該錶的儲存路徑 不是預設的/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)
修改mysql資料庫存放路徑
步驟 一 停止mysql服務 sudo service mysql stop二 新建目錄並移動現有資料庫 1 建立新的資料庫目錄 2 移庫 要在停止資料庫的情況下操作 三 修改配置檔案三處 1 修改mysql的配置檔案 vim etc mysql my.cnf但是它指向了下面的這個檔案,於是 sud...
mysql修改資料存放路徑(linux)
親測可以的,記錄下來 2018年2月5日 11 03 22 1 etc my.cnf mysqld 增加datadir data nas 2 etc rc.d init.d mysql 從 datadir data 修改為 datadir data nas 從 datadir set 修改為 dat...
修改MySQL資料庫存放路徑
mysql 資料庫預設存放路徑是 var lib mysql,要把它放在別的路徑下,方法如下 以下操作需root許可權 1.新建乙個要存放的資料庫的目錄,比如 home jeff mysql,mkdir mysql 2.將原資料庫目錄拷貝到新的目錄下 cp r var lib mysql hoem ...