MySQL學習筆記之十三 重定位數據庫目錄的內容

    首先拋出三個問題:   

    1、爲什麼要移動數據目錄的各個部分?

    2、又可以移動什麼?

    3、以及怎樣進行這些移動?

   一、 MySQL 允許您重定位其中的數據目錄或元素。這樣做有幾個原因:

    1、可以用比缺省定位的文件系統更大的容量在文件系統中放置數據目錄;

    2、如果數據目錄在繁忙的磁盤上,可以將其放置到較少使用的驅動器上,以平衡物理設備之間的磁盤活動。爲了類似的原因,可以將數據庫和日誌文件放置到不同的驅動器上,或在驅動器之間對數據庫進行再分佈;

    3、您可以運行多個服務器,並且每個服務器都有屬於自己的數據目錄。這是一種解決總進程文件描述符限制問題的方法,尤其是不能重新配置系統的核心以得到更高的限制值時。

    4、某些系統將PID文件保存在諸如/var/run的目錄中。爲了系統運作的一致性,您可以將MySQL PID文件也放在那裏。

    二、重定位方法

    有兩種對數據目錄重定位的方法:

    可以在命令行或在一個選項文件[mysqld]組上,在服務器啓動時間制定一個選項;

    可以移動要重定位的內容,然後在原始的位置中做一個指向新位置的symlink (symbolic link,符號鏈接)

    不過,兩種方法都不能爲您進行全部的重定位工作。

    您還可以使用缺省數據目錄的選項文件my.cnf(該目錄編譯在服務器中)。筆者不建議使用此文件。如果要重定位數據目錄本身,必須保持缺省數據目錄的完整性,以便在數據目錄中放置一個選項文件,該文件將說明服務器應該在哪裏找到“真正”的數據目錄!真亂。如果想要用一個選項文件來指定服務器的選項,則最好使用/etc/my.cnf。

   

    三、重定位數據目錄

    步驟:

    1、關閉服務器,例如:
    $ mysqladmin –u root -p shutdown
    2、將數據庫目錄移動到新的位置
    3、然後刪除原來的數據庫
    4、如果用symlink方法(Unix平臺上),例如:
    $ ln –s NEWDIR DATADIR
    DATADIR是標準的數據庫目錄的位置,也是原來的數據庫目錄路徑。
    如果用起動選項的方法,可以這樣啓動:
    $safe_mysqld --basedir=/path/to/dir/ & (Unix)
    $mysqld --basedir=x:\datadir\ (Windows)

    如果用選項文件的方法:
    在/etc/my.cnf(Unix)或者c:\my.cnf(Windows)中加入:
    [mysqld]
    datadir=/path/to/dir/

    5、重新啓動數據庫

    四、重定位數據庫

    步驟

    重定位數據庫只能通過symlink方法,因此windows平臺無法重定位數據庫。爲了重定位數據庫,應關閉數據庫,移動數據庫的目錄。刪除原來的數據庫目錄,用指向新位置的symlink來代替她,然後啓動服務器。
    下面用一個實際的例子――備份bigdb――說明這個過程:
    $mysqladmin –u root –p
    $cd DATADIR
    $tar cf bigdb|(cd /var/db;tar xf)
    $mv bigdb bigdb.old
    $ln –s var/db/bigdb .
    $safe_mysqld &

    應該以數據庫目錄所有者的身份執行這些命令。服務器工作正常之後,可以刪除備份目錄bigdb.old:
    $rm –rf bigdb.old

    五、重定位狀態文件

    狀態文件中PID文件、常規日誌和更新日誌,可以用起動選項或者選項文件的方法重新定位。錯誤日誌由safe_mysqld創建且不能夠重新定位,除非編輯safe_mysqld腳本
    爲了在另一個位置寫狀態文件,因關閉服務器,然後用制定新狀態文件位置的恰當選項啓動他。
    啓動選項:
    --pid-file=pidfile PID文件
    --log=logfile 常規日誌
    --log-update=updatefile 更新日誌

    選項文件
    [mysqld]
    pid-file=pidfile
    log=logfile
    log-update=updatefile

    狀態文件的命名規則:
    1、如果以絕對路徑指定一個狀態文件的名稱,則用該路徑創建改文件。
    例如,你指定—pid-file=/var/run/mysqld.pid,則該PID文件的就是/var/run/mysqld.pid
    2、如果你只給出文件名,則文件在數據庫目錄下創建。
    例如,你指定—pid-file=mysqld.pid則該PID文件爲DATADIR/mysqld.pid
    3、如果沒有給出文件,則狀態文件使用缺省的名字。
    這樣做將告訴服務器啓用狀態文件,這對PID文件沒有意義,因爲服務器總是使用它。例如:
    $safe_mysqld --log --log-update &
    或者,使用選項文件:
    [mysqld]
    log
    log-update

    對於常規日誌,將生成DATADIR/hostname.log文件,hostname是運行服務器的主機名。對於更新日誌,生成DATADIR/hostname.nnn的順序文件。
    4、對於更新日誌,如果指定一個沒有擴展名的更新日誌,則MySQL在打開該更新日誌是將生成數據的名字。這些名字用.nnn擴展名創建,這裏的.nnn是違背已有的更新日誌文件使用過的第一個號碼(如,hostname.001、hostname.002等等)。可以通過指定明確的擴展名來忽略順序名字的生成,然後服務器將僅使用您指定的名字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章