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

首頁 > 數據庫 > MySQL > 正文

MySQL重定位數據目錄的內容

2024-07-24 12:55:28
字體:
來源:轉載
供稿:網友
    10 . 2節討論了在其缺省配置中的數據目錄的結構。所有數據庫和狀態文件都包含在其中。但是,在確定數據目錄內容的布局中管理員有某些職責。本節討論為什么要移動數據目錄的各個部分(甚至是字典本身)、可以移動什么,以及怎樣進行這些移動。
    mysql允許您重定位其中的數據目錄或元素。這樣做有幾個原因:
    可以用比缺省定位的文件系統更大的容量在文件系統中放置數據目錄。
    如果數據目錄在繁忙的磁盤上,可以將其放置到較少使用的驅動器上,以平衡物理設備之間的磁盤活動。為了類似的原因,可以將數據庫和日志文件放在不同的驅動器上,或在驅動器之間對數據庫進行再分布。
    您可以運行多個服務器,并且每個服務器都有屬于自己的數據目錄。這是一種解決總進程文件描述符限制問題的方法,尤其是當不能重新配置系統的核心以得到更高的限制值時。
    某些系統將pid 文件保存在諸如/var/run 的目錄中。為了系統運作的一致性,您可以將mysqlpid 文件也放在那里。

重定位方法

    有兩種對數據目錄重定位的方法:
    可以在命令行或在一個選項文件的[mysqld] 組上,在服務器啟動時間指定一個選項。
    可以移動要重定位的內容,然后在原始的位置中做一個指向新位置的s y m l i n k (symbolic link,符號鏈接)。
    兩種方法的任何一種都不能為您進行全部的重定位工作。表10-4 綜合了可重定位的內容以及可用于重定位的方法。如果您使用一個選項文件,可以指定在全局選項文件/ e t c / my.cnf(windows中的c:/my.cnf)中的選項。當前的windows 版本還訪問系統目錄(c:/windows 或c:/n t)。
    您還可以使用缺省數據目錄的選項文件my.cnf(該目錄編譯在服務器中)。筆者不建議使用此文件。如果要重定位數據目錄本身,必須保持缺省數據目錄的完整性,以便在數據目錄中放置一個選項文件,該文件將說明服務器應該在哪里找到“真正”的數據目錄!真亂。如果想要用一個選項文件來指定服務器的選項,則最好使用/ e t c / my.cnf。


估計重定位的效果

    在試圖對任何東西進行重定位之前,檢驗該操作是否將具有所期望的效果是一個好主意。筆者傾向于用d u、df 和ls -l 命令來獲得磁盤空間信息,但是所有的命令都依賴于對文件系統布局的正確理解。
    以下例子將顯示出一個神秘的中斷以密切注意何時估計數據目錄的重定位。假定數據目錄是/ us r / l o c a l / v a r,并且想將其移動到/ v a r / mysql,因為df 指出該/var 文件系統有較多的可用空間(如下例所示):

    重定位的數據目錄能釋放/usr 文件系統中多少空間?為了查找空間數量,可使用du-s 來查看該目錄使用了多少空間:

    這大約為13 0 mb,應該對/usr 產生相當大的變化。但這是真的嗎?可在該數據目錄/ us r 中試一下df 命令:

    真奇怪。我們請求的是包含/usr/local/var 系統文件的可用空間,可為什么df 報告了v a r 的空間呢?下面的ls -l 做出了回答:

    該輸出結果表明/usr/local/var 是對/var/mysql的一個s y m l i n k。換句話說,數據目錄已經被重定位到/var 文件系統中,并且用指向/var 文件系統的symlink 所取代。有關通過移動數據目錄到/var 中來釋放大量的/usr 空間的工作就到此為止了!
    教訓:花幾分鐘的時間估計重定位的效果是一個有價值的投資。不用花很長的時間就會發現您可能不能達到自己的預期目標,這樣可以使您避免浪費大量的移動數據目錄的時間。

重定位數據目錄

    為了重定位數據目錄,應關閉服務器,將數據目錄移動到新的位置。然后應該或者刪除原來的數據目錄并用指向新位置的symlink 來代替它,或者使用直接指明新位置的一個選項來重新啟動服務器。表10 - 5列出了指定該位置的命令行和選項文件的語法。


重定位數據庫

    數據庫只能通過symlink 方法來移動。為了重定位數據庫,應關閉服務器,移動數據庫目錄。刪除原來的數據庫目錄,用指向新位置的symlink 來代替它,然后啟動服務器。
    下面的例子說明怎樣將數據庫bigdb 移動到另一個位置:

    重定位的預防措施
    在執行任何重定位操作之前應該關閉服務器,然后再重新啟動它。對有些類型的重定位(如移動數據庫目錄),保持服務器的運行狀態是可能的(盡管不建議這樣做)。如果要這樣做,您必須確保服務器沒有訪問將要移動的數據庫。還應該確保在移動數據庫之前發布了flush table 語句,以便確保服務器關閉所有打開的表文件。不履行這些預防措施可能導致表的毀壞。
    應該以數據目錄所有者的身份來執行這些命令。為了安全起見,將原來的數據庫目錄重新命名為b i g db . o r i g。在驗證了服務器與重定位服務器正常工作之后,可以刪除原來的目錄:
    % rm -rf bigdb.orig

重定位數據庫表

    對單個的表進行重定位不是好主意。可以通過將表的文件移動到另一個位置并在該數據庫目錄中創建指向這些文件的symlink 來進行。但是,如果曾經發布過alter table 或optimize table 語句,則所做的這些修改將被取消。
    每個語句通過在數據庫目錄中創建一個實現變更和最優化的臨時表進行操作,然后刪除原來的表,將該臨時表重新命名為原來的名稱。其結果是: symlink 被刪除,新的表回到數據庫目錄中,該目錄是您移動表之前的原始表所在位置。因此,移出該數據庫目錄的舊的表文件仍然在原位置上─您甚至已經不記得它們的存在,但它們仍然占用著空間。同樣,symlink 已經消失,因此,當您意識到所發生的一切時,如果已經不記得是在哪里移動的,將沒有任何好辦法去捕捉這些文件。
    要想確保訪問該表的任何人都不更改或優化該表是困難的(因而撤消任何企圖的重定位),因此最好保留該數據庫目錄中的這些表。

重定位狀態文件

    可以用啟動選項重定位pid 文件、常規日志和更新日志。錯誤日志由safe_mysqld 創建且不能夠重定位(除非編輯s a f e _ mysqld)
    為了在另一個位置寫狀態文件,應關閉服務器,然后用指定新狀態文件位置的恰當選項重新啟動它。表10 - 6列出了每個文件的命令行和選項的語法。
    刪除一個重定位的數據庫
    您可以用drop database 語句刪除一個數據庫,但是舊版本的mysql在刪除已經重定位的數據庫時是有難度的。該數據庫中的表被正確地刪除了,但在服務器試圖刪除該數據庫目錄時會出現錯誤,這是由于該目錄是一個symlink 而不是真正的目錄。mysql管理員必須手工刪除該數據庫目錄和指向它的s y m l i n k。自mysql3.23 以來,這個問題已經得到解決。

    如果以絕對路徑名指定一個狀態文件的名稱,則用該路徑名創建該文件。否則,該文件在該數據目錄下創建。例如,如果您指定- -
pid - file = /var/run/mysqld.pid,則該pid 文件為/ v a r / r un / mysqld . p i d。如果您指定-- pid - file = mysqld.pid ,則該pid 文件為data d i r/ mysqld . p i d。
    如果指定一個沒有帶擴展名的更新日志,則mysql在打開該更新日志時將生成順序的名字。這些名字用. n n n 擴展名創建,這里的.n n n是未被已有的更新日志文件使用過的第一個號碼(如, up date . 0 0 1、up date . 0 0 2等等)。可以通過指定包含明確的擴展名來忽略順序名字的生成,然后服務器將僅使用您指定的這個名字。,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆安县| 稷山县| 陆河县| 类乌齐县| 深泽县| 宁河县| 额济纳旗| 马山县| 从化市| 潜江市| 辽阳市| 邮箱| 上犹县| 长武县| 景东| 伊通| 岳普湖县| 大姚县| 桃园县| 永清县| 红安县| 黑龙江省| 淮南市| 南涧| 乌拉特后旗| 南部县| 寿宁县| 柏乡县| 全州县| 高州市| 孝义市| 蕲春县| 陆河县| 安西县| 镇巴县| 新沂市| 福泉市| 昌图县| 乐清市| 遵义市| 丰原市|