<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      mysql innodb 設置 raw,完成linux下繞過內核緩沖區,完成直接I/O

      [摘要](轉自linux社區) MySQL 的 InnoDB 存儲引擎不僅可以緩存索引,而且還可以緩存數據,如果將其表和索引存儲在裸設備(Raw Device)上,從而繞過了文件系統的高速緩存和緩沖器而直接訪問磁盤,那么將大大降低Linux文件系統的負擔,使系統性能獲得顯著改善。 另外,從裸設備在數據庫應...
      (轉自linux社區)

      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

      參考官方網站的配置指引:

      ──────────────────────────────────────────────────────────────────────────────
      (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
      --------------------------------------------------------------------------------

      ?

      后記:

      mysql 還提供了另一種實現方式,配置 my.ini 里 innodb_flush_method

      innodb_flush_method = O_DIRECT

      這樣也可以實現直接I/O

      ?

      以上就是mysql innodb 配置 raw,實現linux下繞過內核緩沖區,實現直接I/O的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清