為MySQL資料庫的InnoDB引擎配置裸裝置(Raw Device)

來源:互聯網
上載者:User

MySQL 的 InnoDB 儲存引擎不僅可以緩衝索引,而且還可以快取資料,如果將其表和索引儲存在裸裝置(Raw Device)上,從而繞過了檔案系統的快取和緩衝器而直接存取磁碟,那麼將大大降低Linux檔案系統的負擔,使系統效能獲得顯著改善。

另外,從裸裝置在資料庫應用的最佳化原理中,我們也可以看到最佳化資料庫的一個基本方向,就是如何設法降低因資料庫特有的 I/O 密集型訪問所導致的檔案系統的繁重負擔。因此,即使在現有的基於檔案系統的資料庫儲存引擎上,也可考慮使用特殊的檔案系統掛載方式。
例如為儲存資料庫檔案的分區使用 noatime 作為掛載參數,由於訪問次數(access times)不再被記錄 可以帶來系統效能的一定程度的提升。

──────────────────────────────────────────────────────────────────────────────
本筆記最新配置之系統內容:
──────────────────────────────────────────────────────────────────────────────
OS:  CentOS6
HDD:  /dev/sdc /dev/sdd
RAW:  /dev/raw/raw1 /dev/raw/raw2
MySQL:  5.1.61
USER:  mysql:mysql

參考官方網站的配置指引:
http://dev.mysql.com/doc/refman/5.6/en/innodb-raw-devices.html
http://docs.oracle.com/cd/E17952_01/refman-5.1-en/innodb-raw-devices.html

──────────────────────────────────────────────────────────────────────────────
(1) 設定裸裝置(Prepare the raw device)
──────────────────────────────────────────────────────────────────────────────
在使用裸裝置之前,必須先將磁碟裝置綁定到裸裝置上:

# /bin/raw /dev/raw/raw1 /dev/sdc;
--------------------------------------------------------------------------------
/dev/raw/raw1:  bound to major 8, minor 32
--------------------------------------------------------------------------------

再綁定另一個裸裝置,然後還要讓您的MySQL資料庫的運行使用者有權讀寫裸裝置:

# /bin/raw /dev/raw/raw2 /dev/sdd;
# chown root:mysql /dev/raw/raw1 /dev/raw/raw2;
# chmod 0660 /dev/raw/raw1 /dev/raw/raw2;


# /bin/raw -qa;
# /bin/raw -q /dev/raw/raw1;
# /bin/ls -l /dev/raw/raw1;
# blockdev --report /dev/raw/raw1;
# blockdev --report /dev/sdc;


vi /etc/udev/rules.d/60-raw.rules;
--------------------------------------------------------------------------------
ACTION=="add", KERNEL=="sdc", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdd", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw2 %N"
--------------------------------------------------------------------------------
Note: this make sure device /dev/sdc and /dev/sdd will bind automatically when server reboot.

# vi /etc/udev/rules.d/41-local-permissions-rules;

──────────────────────────────────────────────────────────────────────────────
(2) 如有需要,先備份舊有的InnoDB資料表
──────────────────────────────────────────────────────────────────────────────
如果您的資料庫已經運行,並且現有資料存放區於舊的InnoDB引擎之中,如果您需要遷移的話,
請在關閉資料庫之前預先用mysqldump命令匯出您的資料, 等新引擎配置好之後再匯入即可。

可參考如下SQL命令查看和匯出您的InnoDB資料表:

mysql> SELECT table_schema,table_name,engine FROM INFORMATION_SCHEMA.TABLES;
mysql> SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine='InnoDB';

如有需要,可用mysqldump匯出資料,請參考如下格式(請用相應的資料庫和表名稱):

mysqldump -u root -p -h localhost [database].[table] > database.table.sql

注意:您必須逐個表匯出舊的資料。

──────────────────────────────────────────────────────────────────────────────
(3) 初始化階段MySQL的配置
──────────────────────────────────────────────────────────────────────────────
When you create a new data file, put the keyword newraw
immediately after the data file size in innodb_data_file_path:

# vi /etc/my.cnf;
--------------------------------------------------------------------------------
[mysqld]
innodb_buffer_pool_size=128M
innodb_data_home_dir=
innodb_data_file_path=/dev/raw/raw1:64Mnewraw;/dev/raw/raw2:64Mnewraw
--------------------------------------------------------------------------------

  • 1
  • 2
  • 下一頁

相關文章

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.