Centos中更改預設mysql資料存放到資料盤

來源:互聯網
上載者:User

更改網站檔案目錄

如果你使用的是軍哥的lnmp安裝包,那預設的虛擬機器主機配置環境在 /usr/local/nginx/conf/vhost/ 目錄裡,修改:
vi /usr/local/nginx/conf/vhost/網域名稱.conf

可以開啟對應的虛擬機器主機配置,然後修改其中的網站目錄。然後執行:

cp -a 老目錄 新目錄
chown www:www -R 新目錄
更改MySQL資料存放目錄

1.停掉mysql伺服器:

/etc/init.d/mysql stop

2.下面新目錄以/storage/mysql/ 為例,然後複製舊目錄的資料庫到新目錄:

cp -R /usr/local/mysql/var/* /storage/mysql/

3.將新目錄賦權為mysql使用者組:
chown mysql:mysql -R /storage/mysql/

4.再修改設定檔:

vi /etc/my.cnf

尋找mysql資料原有目錄 /usr/local/mysql/var 修改為:

datadir = /storage/mysql
innodb_data_home_dir = /storage/mysql
innodb_log_group_home_dir = /storage/mysql
5.啟動mysql:
/etc/init.d/mysql start

【補充說明】:阿里雲、騰訊雲端服務器的硬碟是分兩塊,一個系統硬碟,一個資料盤,預設資料盤沒有被掛載,所以除了系統和環境軟體會安裝在系統硬碟裡,網站資料等也在系統硬碟裡,資料盤卻空置,沒法利用其空間與區分系統和資料管理的好處。

這裡做下說明,如何讓網站資料存放區在資料盤?
如果使用常用的LNmp一鍵安裝包安裝系統內容,網站根目錄預設為: /home/wwwroot

有兩個方法

1 . 直接掛載到目錄/home/wwwroot
這個直接按阿里雲官方的教程操作就可以了,只是需要建立目錄 # mkdir /home/wwwroot
然後把 /mnt 替換為 /home/wwwroot 即可


操作完上面這些,再安裝LNmp一鍵包即可。
2 . 軟體安裝在系統硬碟,但網站資料放在資料盤
LNmp還是安裝在系統硬碟裡,阿里雲伺服器的資料盤掛載也按原來的操作
只要在添加網站時將預設目錄修改成 /mnt 即可
這樣的好處有兩點:
1.  可以使用到更多的資料盤空間
2. 重裝系統或環境不會影響網站資料,當然格式化資料盤也不會影響網站資料。
*另外也可以把資料盤再多分一個區,把其中一個分區掛載到資料庫目錄,比如/usr/local/mysql,方法同上。
*如果現在網站已經建在系統硬碟下了,還有辦法遷移到資料盤嗎?網站在home下,資料盤還可以載入到home目錄嗎?
當然可以,先將/home目錄下的檔案移動到其他目錄,然後把資料盤掛載到/home,把資料移回即可

【如果之前安裝lnmp的時候,沒有安裝mysql innodb資料庫引擎,怎麼辦呢?】

1、如果你選擇安裝的是 mysql-5.5.37,那麼只需要修改 /etc/my.cnf 設定檔即可
先看下 centos.sh 安裝指令碼是如何判斷是否安裝 innodb 的:
if [ $installinnodb = "y" ]; then
sed -i 's:#innodb:innodb:g' /etc/my.cnf
sed -i 's:/usr/local/mysql/data:/usr/local/mysql/var:g' /etc/my.cnf
else
sed '/skip-external-locking/i\default-storage-engine=MyISAM\nloose-skip-innodb' -i /etc/my.cnf
fi

 根據上面的命令,我們修改  /etc/my.cnf 即可:

a、找到 loose-skip-innodb 並注釋掉:

default-storage-engine=MyISAM
#loose-skip-innodb
skip-external-locking

b、搜尋 innodb 並取消innodb前面的注釋:

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/var
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/var
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
重啟,mysql已經啟用 innodb 引擎了:

2、如果你不幸的選擇了低版本的mysql 5.1.73並且沒有選裝 innodb,那麼只有重新編譯mysql了;當然你也可以升級mysql,在升級的時候,也可以安裝innodb,但是一般不建議升級安裝。

我們來看下centos.sh的原始編譯的指令碼:

cd mysql-5.1.73/
if [ $installinnodb = "y" ]; then
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-assembler --with-mysqld-ldflags=-all-static --with-charset=utf8 --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
else
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-assembler --with-mysqld-ldflags=-all-static --with-charset=utf8 --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile
fi
make && make install

需要我們重新編譯mysql,注意,重編譯會導致原先的資料丟失,請先備份:

cd mysql-5.1.73/
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-assembler --with-mysqld-ldflags=-all-static --with-charset=utf8 --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
make && make install

注意,軍哥的指令碼裡,這個參數:--enable-thread-safe-client出現了2次,請手動去掉一個

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.