MySQL的innodb支援把表和索引儲存在裸裝置中,儲存的I/O等待問題一直是影響資料庫效能的關鍵,裸裝置不需要經過檔案系統I/O處理,因而在效能上有一定的提升,在使用rhel中的kvm虛擬機器的時候有明顯的感覺,使用裸裝置+virtio的效能基本與物理機沒差別;在Oracle中,裸裝置從11g開始就不被支援,而10g rac的ocr和votedisk還必須使用裸裝置儲存,Oracle推薦使用ASM來提升儲存的I/O效能,ASM支援條帶,冗餘和線上添加刪除磁碟組等等進階功能,同時有具有一定的可管理性;相比之下MySQL的裸裝置就比較脆弱,或許在分布式基礎上,MySQL單一實例的資料量還不需要用裸裝置來提升I/0效能,下面來示範下如何在MySQL上使用裸裝置儲存innodb儲存類型的表和索引
一:建立LVM卷,並使用raw來綁定,其中raw1-raw5為oracle的asm磁碟
- [root@ www.bkjia.com ~]# lvcreate -n mydata -L 1G VolGroup00
- Volume Groups with the clustered attribute will be inaccessible.
- Logical volume "mydata" created
-
- [root@ www.bkjia.com ~]# lvs
- Skipping clustered volume group new_vg
- LV VG Attr LSize Origin Snap% Move Log Copy% Convert
- LogVol00 VolGroup00 -wi-ao 29.28G
- LogVol01 VolGroup00 -wi-ao 29.28G
- mydata VolGroup00 -wi-a- 1.00G
-
- [root@ www.bkjia.com ~]# cat /etc/sysconfig/rawdevices
- /dev/raw/raw1 /dev/sdb1
- /dev/raw/raw2 /dev/sdc1
- /dev/raw/raw3 /dev/sdd1
- /dev/raw/raw4 /dev/sde1
- /dev/raw/raw5 /dev/sdf1
-
- /dev/raw/raw6 /dev/VolGroup00/mydata
-
- [root@ www.bkjia.com ~]# service rawdevices restart
- Assigning devices:
- /dev/raw/raw1 --> /dev/sdb1
- /dev/raw/raw1: bound to major 8, minor 17
- /dev/raw/raw2 --> /dev/sdc1
- /dev/raw/raw2: bound to major 8, minor 33
- /dev/raw/raw3 --> /dev/sdd1
- /dev/raw/raw3: bound to major 8, minor 49
- /dev/raw/raw4 --> /dev/sde1
- /dev/raw/raw4: bound to major 8, minor 65
- /dev/raw/raw5 --> /dev/sdf1
- /dev/raw/raw5: bound to major 8, minor 81
- /dev/raw/raw6 --> /dev/VolGroup00/mydata
- /dev/raw/raw6: bound to major 253, minor 2
- done
-
- [root@ www.bkjia.com ~]# raw -qa
- /dev/raw/raw1: bound to major 8, minor 17
- /dev/raw/raw2: bound to major 8, minor 33
- /dev/raw/raw3: bound to major 8, minor 49
- /dev/raw/raw4: bound to major 8, minor 65
- /dev/raw/raw5: bound to major 8, minor 81
- /dev/raw/raw6: bound to major 253, minor 2
-
- [root@ www.bkjia.com ~]# chown mysql.mysql /dev/raw/raw6