Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb

MySQL 5.6 リファレンスマニュアル  /  ...  /  共有テーブルスペースでの RAW ディスクパーティションの使用

14.5.8 共有テーブルスペースでの RAW ディスクパーティションの使用

InnoDBシステムテーブルスペースでは、データファイルとして RAW ディスクパーティションを使用できます。この方法を使用すると、ファイルシステムのオーバーヘッドが発生せずに、Windows 上および一部の Linux と Unix 上でバッファーに入れられない I/O が有効になります。RAW パーティションを使用する場合と使用しない場合でテストを実行して、この変更によって実際にシステム上のパフォーマンスが改善されるかどうかを確認します。

RAW ディスクパーティションを使用する場合は、MySQL サーバーを実行しているユーザー ID がそのパーティションに対する読み取り権限および書き込み権限を持っていることを確認します。たとえば、mysql ユーザーとしてサーバーを実行する場合は、そのパーティションが mysql によって読み取り可能および書き込み可能である必要があります。--memlock オプションを付けてサーバーを実行する場合は、サーバーを root として実行する必要があるため、パーティションが root によって読み取り可能および書き込み可能である必要があります。


Linux および Unix システムでの RAW ディスクパーティションの割り当て

  1. 新しいデータファイルを作成する際は、innodb_data_file_path オプションのデータファイルサイズの直後に、newraw というキーワードを指定します。パーティションは、少なくとも指定したサイズと同じである必要があります。ディスク指定の 1M バイトは通常 1,000,000 バイトを意味するのに対して、InnoDB 内の 1M バイトは 1024 × 1024 バイトであることに注意してください。

  2. サーバーを再起動します。InnoDB によって newraw キーワードが認識され、新しいパーティションが初期化されます。ただし、まだ InnoDB テーブルを作成したり変更したりしないでください。そうしなければ、サーバーを次に再起動したときに InnoDB によってパーティションが再初期化され、変更がすべて失われます。(安全策として、InnoDB では、newraw を含むパーティションが指定されたときにユーザーがデータを更新することが回避されます。)

  3. InnoDB によって新しいパーティションが初期化されたら、サーバーを停止し、データファイルの指定で newrawraw に変更します。

  4. サーバーを再起動します。これにより、InnoDB で変更を行うことが許可されます。

Windows での RAW ディスクパーティションの割り当て

Windows システムでは、Linux および Unix システムで説明したものと同じ手順および付随するガイドラインが適用されます。ただし、Windows では innodb_data_file_path の設定がわずかに異なります。

  1. 新しいデータファイルを作成する際は、innodb_data_file_path オプションのデータファイルサイズの直後に、newraw というキーワードを指定します。


    //./ は、物理ドライブにアクセスするための Windows の構文 \\.\ に対応しています。前述の例では、D: がパーティションのドライブ文字です。

  2. サーバーを再起動します。InnoDB によって newraw キーワードが認識され、新しいパーティションが初期化されます。

  3. InnoDB によって新しいパーティションが初期化されたら、サーバーを停止し、データファイルの指定で newrawraw に変更します。

  4. サーバーを再起動します。これにより、InnoDB で変更を行うことが許可されます。

User Comments
  Posted by M Z on August 26, 2004
The following does not work on Windows
I think the problem is in "::".
  Posted by Andrew Button on July 19, 2006
This is how I set up MySQL to use a raw device on RedHat Linux ES4. I could not access the disk partiton directly so I had to create raw devices that link to the disk partitions.

Using parted I created the raw partition (it did not let me add it in the install as there is no mount point).

Assign this partition to a raw device using raw. I.e.

raw /dev/raw/raw1 /dev/cciss/c0d0p5

Then make accessible the raw device to mysql (as mentioned in the docs):

chown mysql dev/raw/raw1

Then use the raw device (as shown in the docs). i.e.

innodb_data_home_dir =
innodb_data_file_path = /dev/raw/raw1:20000Mnewraw;
  Posted by Ralf Schwedler on August 16, 2007
Chowning the raw device like in

chown mysql /dev/raw/raw1

will fail after the next reboot, if the /dev-tree is dynamically created by, e.g. udev, a MAKEDEV-script or similar. After reboot, the device will regain its former permission, typically excluding access by mysql.

A permanent solution is (in the case of a udev-generated /dev) to create the file /etc/udev/rules.d/41-local-permissions-rules containing the single line:

KERNEL=="sda5" GROUP="mysql"

to make /dev/sda5 accessible to group mysql.

  Posted by Seva E on January 16, 2008
innodb_file_per_table must be set to 0 (default). If it's set (to 1), InnoDB table data files (.ibd) will be created in the datadir instead of in the raw device's shared tablespace even if innodb_data_home_dir is blank.

Not sure if this is a bug or a feature, but this is not what I expected. Tested with mysql-5.0.22-2.1 (RHEL 5).
  Posted by Joaquin Alcañiz on April 15, 2008
It works fine on Windows. Follow next steps:
1. Select a primary clear partition and format it on FAT32 (instead NTFS). Assign a drive letter to it, and compute its size in Mb or Gb (asume M: and 30Gb in this example)
2. Edit "my.ini" file and add on it:
innodb_data_file_path=//./M::30Gnewraw (yes, use "::")
3. Start mysqld service and WAIT until disk ends working. (see at LED on front your PC).
4. Stop mysqld service.
5. Edit "my.ini" file and change ("newraw" to "raw"):
6. Start mysqld service again, you can create and load your databases.

  Posted by Nikolay Pelov on April 23, 2011
You might want to use size of raw device in bytes or at least kilobytes, because when creating partitions the size does not match exactly if specified in GB:
innodb_data_file_path = /dev/raw/raw1:199108608newraw;
innodb_data_file_path = /dev/raw/raw1:194442Knewraw;
and NOT like this
innodb_data_file_path = /dev/raw/raw1:200MBnewraw;
(This partition was created as 200 MB)
Sign Up Login You must be logged in to post a comment.