2016-01-20 13 views
1

我在使用MariaDB 5.5.44。我想創建InnoDB表,它將數據存儲在掛載的分區中。如何更改InnoDB表的裝載分區上的數據目錄?

考慮 我已經掛載的分區的/ var /日誌/存儲如下:

/dev/sda2  6.5G 3.6G 2.6G 59%/
/dev/sda1  395M 32M 338M 9% /boot 
/dev/sda6  5.3G 22M 5.0G 1% /var/log/storage 

要創建表我用下面的查詢:在

create table InnoDB_Test(a INT) DATA DIRECTORY='/var/log/storage/MySQL' INDEX DIRECTORY='/var/log/storage/MySQL' engine=InnoDB; 

但存儲數據/ var/lib/mysql而不是/var/log/storage/MySQL

相同的,如果我使用下面的查詢&其按預期工作試圖用MyISAM數據:

create table MyISAM_Test(a INT) DATA DIRECTORY='/var/log/storage/MySQL' INDEX DIRECTORY='/var/log/storage/MySQL' engine=MyISAM; 

我怎麼能在InnoDB中更改數據目錄掛載的分區? 爲什麼數據分區在MyISAM &中不在InnoDB中?

預先感謝您。

+0

請幫我我找不到這個解決方案.. –

回答

1

我想這樣做(用於分區),但mysql文檔說「不」。

下面是這個頁面的相關部分:分區在MySQL

https://dev.mysql.com/doc/refman/5.5/en/partitioning-overview.html

19.1概覽定義使用InnoDB存儲引擎的表分區時數據目錄和索引目錄選項沒有任何效果。

因此,如果您的存儲引擎正在使用MyISAM,它就可以工作。

你的選擇是:

  1. 全球specficy在MySQL命令行選項 或my.cnf文件中的數據目錄指向到/ var /日誌/存儲。例如 --datadir =/var/log/storage
  2. 將整個mysql數據目錄移動到/ dev/sda6並將其掛載到/ var/lib/mysql。這與第一個選項幾乎相同,只不過您要保留路徑/ var/lib/mysql爲innodb數據創建表空間目錄並將/ dev/sda6掛載到該路徑。

對於第三種選擇,把InnoDB的數據在一個單獨的目錄,你配置的InnoDB創建每桌

# my.cnf 
[mysqld] 
innodb_file_per_table=1 

文件一旦你重建你的數據庫/表,你會發現一個你的表空間的目錄(例如/ var/lib/mysql/mydb)將用每個表的單個文件創建。

然後你就可以複製表目錄和文件到SDA6和設置/ dev/SDA6到/ var/lib中/ MySQL的/ MYDB

顯然MySQL服務器5.6不會受此限制。