国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL數據目錄結構(2)轉

2024-07-24 12:56:24
字體:
來源:轉載
供稿:網友

mysql數據目錄結構(2)


[晏子]  

3 重定位數據庫目錄


前面討論的數據目錄結構是缺省配置,所有數據庫和狀態文件均包含其中,然而,你有某些自由決定數據目錄內容的位置,本節討論為什么你可能移走部分數據目錄(或甚至目錄本身)、你能移走什么以及你如何做這些改變。
mysql允許你重定位數據目錄或其中的成員,由幾個原因你為什么要這樣做:
  • 你能將數據目錄放在你缺省所在的文件系統更大容量的文件系統上。
  • 如果你的數據目錄在一個繁忙的硬盤上,你可能把它放在不太忙的磁盤上以均衡磁盤活動。你可以把數據庫和日志文件放在分開的磁盤上或跨磁盤分布。
  • 你可能想運行多個服務器,各自有自己的數據目錄,這是解決每個進程文件描述符限制問題的一種方法,特別是你不能重新配置內核以允許更高的限制。
  • 有些系統在例如/var/run中保存服務器的部分文件,你可能想把mysql的pid文件也放在那兒,為了系統操作的一致性。

3.1 重定位方法


有兩種方法重定位數據目錄的內容:
  • 你可以在服務器啟動時指定選項,在命令行或在一個選項文件的[mysqld]中。
  • 你可以移走要重定位的東西,然后在原位置做一個指向新位置的符號連接。

兩種方法都不能解決你能重定位的一切,下表總結了什么能重定位和用哪種方法重定位。如果你使用選項文件,有可能在全局選項文件/etc/my.cnf(windows上的c:/my.cnf)指定選項。當前的windows版本也尋找系統目錄(c:/windows或c:/nt)。表 重定位方法重定位方法適用的重定位方法整個數據目錄啟動選項或符號連接單個數據庫目錄符號連接單個數據庫表符號連接pid文件啟動選項一般日志啟動選項更新日志啟動選項
你也可以使用缺省數據目錄中的選項文件my.cnf,但不推薦使用該文件。如果你想重定位數據目錄本身,你不得不讓缺省數據目錄可讀以便使你能在這里放置選項文件指定服務器應該在哪里找到“真正”的數據目錄!這很混亂。如果你想使用一個選項文件指定服務器選項,最好使用/etc/my.cnf。

3.1 檢驗重定位的效果


在試圖重定位任何東西之前,檢驗操作達到預期效果是個好主意。借助于du、df和ls -l命令獲得磁盤空間的信息,但這些依賴于你正確了解你的文件系統的布局。
下面演示一個在你檢驗一個屬目錄重定位時的設計陷阱。假定你的數據目錄是/usr/local/var,而你想把它移到/var/mysql,因為df顯示/var文件系統有很多的空閑空間:
%df /usr /varfilesystem  1k-blocks     used   avail  capacity  mounted on/dev/wd0s3e    396895   292126   73018    80%     /usr/dev/wd0s3f   1189359  1111924  162287    15%     /var  

重定位的數據目錄在/usr文件系統上有多少空閑空間呢?要知道它,使用du -s找出該目錄使用多少空間。
%cd /usr/local/var%du -s .133426

這大約是130mb,真實這樣嗎?在數據目錄下試一下df:
%df /usr/local/varfilesystem  1k-blocks     used   avail  capacity  mounted on/dev/wd0s3f   1189359  1111924  162287    15%     /var 

這就奇怪了。如果我們為包含/usr/local/var的文件系統申請空閑空間,為什么卻報告var上的空間呢?這里ls -l提供了答案:
%ls -l /usr/local....lrwxrwxrwx  1  root  wheel  10 dec 11 23:33 var -> /var/mysql.... 

輸出顯示/usr/local/var是對/var/mysql的符號連接,換句話說,數據目錄已經被重定位于/var文件系統,并用一個指向那里的符號連接代替。通過將數據目錄移到/var竟然釋放了/usr上那么多空間!

3.2 重定位數據目錄


要重定位數據目錄,關閉服務器并把數據目錄移到新位置上,然后你應該刪除員數據目錄并用指向新位置的符號連接代替它,或用明確指出新位置的選項重啟服務器。下表列出指定位置的命令行和選項。表 數據目錄重定位語法選項源語法命令行--data-dir=/path/to/dir選項文件[mysqld]
datadir=/path/to/dir

3.3 重定位數據庫


數據庫能通過符號連接的方法移走。要重定位一個數據庫,關閉服務器并移走數據庫目錄并刪除原來的數據庫目錄,用指向新位置的符號連接代替它,然后重啟服務器。
下例顯示你如何將一個數據庫bigdb移到一個不同的地方:
%mysqladmin -u root -p shutdownenter password: ******%cd datadir%tar cf - bigdb | (cd /var/db; tar xf -)%mv bigdb bigdb.origln -s /var/db/bigdb .%safe_mysqld 

你應該以該數據目錄的擁有者執行這些命令。為了安全起見,原數據庫目錄改名為bigdb.orig。在你驗證了服務器工作正常后,你可以刪除原數據目錄。
%rm -rf bigdb.orig

3.4 重定位數據庫表


重定位一個單獨的表不是個好主意。你可以通過把表文件移到一個不同地方,并在數據目錄中創建指向這些文件的符號連接進行。然而,如果你發出一條alter table或optimize table語句,將不進行你的修改。
每個語句通過在數據庫目錄中創建一個實現你修改或優化的臨時表,然后刪除原來的表并將臨時表更名為原來的表來完成,結果是你的符號連接被刪除,而且新表又回到數據庫目錄,這是你移走前的原表文件位置。更糟糕的是,你還沒有意識到它們在那兒,繼續占據著空間,而且符號連接已經被破壞,這樣以后當你意識到發生的事情時,如果你忘記你把它們移到什么地方,你可能沒有好辦法追蹤文件了。
因為很難保證具有表訪問權的人不修改或優化表,所以最好把表留在數據庫目錄中。


3.5 重定位狀態文件


你可以重中定位pid文件、一般日志和更新日志。出錯日志由safe_mysqld用啟動選項創建,而不能被重定位(除非你編輯safe_mysqld)。
要在一個不同位置寫入狀態文件,關閉服務器,然后由指定新狀態文件位置的適當選項啟動它。下表列出每一個文件的命令行和選項文件的語法。表 狀態文件重定位語法選項源語法命令行--pid-file=pidfile
--log=lodfile
--log-update=updatefile選項文件[mysqld]
pid-file=pidfile
log=lodfile
log-update=updatefile
如果你用絕對路徑名指定狀態文件,用該路徑創建文件,否則文件在數據目錄下創建。如,如果你指定--pid-file=/var/run/mysqld.pid,pid文件是/var/run/mysqld.pid。如果你指定-pid-file=mysqld.pid,pid文件是datadir/mysqld.pid。
如果你指定無擴展名的更新日志文件,mysql在它每次打開更新日志時產生順序名。這些名字用一個擴展名.nnn,這里.nnn是還沒被現有更新日志使用的第一個數字(如update.000,update.001等)。你可以通過明確指定擴展名來覆蓋順序名,這時服務器將只使用指定的名字。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广州市| 五华县| 潞城市| 辽源市| 柘城县| 昌邑市| 渝北区| 深州市| 乳山市| 东明县| 仲巴县| 甘谷县| 乌兰县| 阳泉市| 德钦县| 镇远县| 永丰县| 西乌珠穆沁旗| 原平市| 朔州市| 金华市| 定西市| 佛山市| 达尔| 临城县| 满洲里市| 清丰县| 顺义区| 扶余县| 白山市| 洛浦县| 沙坪坝区| 日照市| 平泉县| 富宁县| 阳西县| 石渠县| 东丽区| 棋牌| 读书| 德清县|