MySQL使用裸设备
生活随笔
收集整理的這篇文章主要介紹了
MySQL使用裸设备
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.名詞注釋:
a.裸設備:是一種沒有經過格式化,不被Unix/Linux通過文件系統來讀取的特殊類型的塊設備文件,允許以直接訪問硬盤的方式訪問一個存儲設備,而不經過操作系統的高速緩存和緩沖器。裸設備可以綁定一個分區,也可以綁定一個磁盤。
應用程序如數據庫可以直接使用裸設備,來管理數據的緩存方式,而不將這些任務推給操作系統。
b.字符設備:對字符設備的讀寫不需要通過系統的buffer。不可被文件系統mount。
c.塊設備:對塊設備的讀寫需要通過系統的buffer。可以被mount到文件系統中。
2.linux下創建裸設備
a.創建pv
# pvcreate /dev/sda
b.創建vg
# vgcreate VolGroup00 /dev/sda
c.創建lv
# lvcreate –L 2G –n lv_mydata VolGroup00
3.linux下綁定裸設備
a.方式一:
raw /dev/raw/raw[n] /dev/<blockdev>
n的范圍是0-8191。執行完會在/dev/raw/目錄下生成一個對應的raw[n]文件。通過raw命令綁定的裸設備在系統重啟后會失效。
# raw /dev/raw/raw1 /dev/VolGroup00/lv_mydata
/dev/raw/raw1:? bound to major 253, minor 2
/dev/raw/raw1是裸設備名稱,這個名不能隨便改變的,否則會出錯。如需要改動使用ln來創建鏈接。
b.方式二:
修改/etc/sysconfig/rawdevices配置文件,在文件中加入以下內容,每個裸設備一行。
/dev/raw/raw1 /dev/VolGroup00/lv_mydata
或/dev/raw/raw1 253 2
# service rawdevices start
Assigning devices:
/dev/raw/raw1? –>?? /dev/VolGroup00/lv_mydata
/dev/raw/raw1:? bound to major 253, minor 2
done
# chkconfig rawdevices on
4.更改權限
# chown mysql.mysql /dev/mapper/VolGroup00-lv_mydata
權限不對會報錯:
110325 12:54:13? InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /dev/mapper/VolGroup00-lv_mydata
5.MySQL使用裸設備
MyISAM存儲引擎只能緩存索引,不能緩存數據文件,因此操作系統的IO性能對MyISAM表的存取速率至關重要。InnoDB存儲引擎不僅可以緩存索引還可以緩存數據。因此可以使用裸設備來存儲InnoDB的共享表空間,這樣就不再需要文件系統的開銷,從而提高性能。
InnoDB的表空間分為兩種:一種是共享表空間,使用ibdata文件來存放數據,所有表和索引數據被存放在同一個表空間,通過innodb_data_file_path來指定;另一種是獨享表空間,每個表的數據和索引被存放在一個單獨的.ibd文件中。共享表空間是必須存在的,Innodb的undo信息和其他一些元數據信息是存放在共享表空間里面的。
如果將獨享表空間存儲在裸設備上,那么每個表是一個裸設備,這樣裸設備的數量將會是很大的。共享表空間不會出現這個問題的。下面是把共享表空間存儲在裸設備上:
a.在mysql配置文件中,增加裸設備文件名并指定newraw屬性
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = /dev/mapper/VolGroup00-lv_mydata:2Gnewraw
b.初始化裸設備
重啟mysql服務,待其完成分區初始化工作后,再關閉mysql服務。此階段不能創建更改InnoDB表,否則再重啟服務時更改的內容丟失。當用newraw指定任何分區時,InnoDB會阻止用戶修改數據。
c.修改newraw屬性
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = /dev/mapper/VolGroup00-lv_mydata:2Graw
d.再重啟mysql服務
服務正常啟動后,就可以正常使用了。
a.裸設備:是一種沒有經過格式化,不被Unix/Linux通過文件系統來讀取的特殊類型的塊設備文件,允許以直接訪問硬盤的方式訪問一個存儲設備,而不經過操作系統的高速緩存和緩沖器。裸設備可以綁定一個分區,也可以綁定一個磁盤。
應用程序如數據庫可以直接使用裸設備,來管理數據的緩存方式,而不將這些任務推給操作系統。
b.字符設備:對字符設備的讀寫不需要通過系統的buffer。不可被文件系統mount。
c.塊設備:對塊設備的讀寫需要通過系統的buffer。可以被mount到文件系統中。
2.linux下創建裸設備
a.創建pv
# pvcreate /dev/sda
b.創建vg
# vgcreate VolGroup00 /dev/sda
c.創建lv
# lvcreate –L 2G –n lv_mydata VolGroup00
3.linux下綁定裸設備
a.方式一:
raw /dev/raw/raw[n] /dev/<blockdev>
n的范圍是0-8191。執行完會在/dev/raw/目錄下生成一個對應的raw[n]文件。通過raw命令綁定的裸設備在系統重啟后會失效。
# raw /dev/raw/raw1 /dev/VolGroup00/lv_mydata
/dev/raw/raw1:? bound to major 253, minor 2
/dev/raw/raw1是裸設備名稱,這個名不能隨便改變的,否則會出錯。如需要改動使用ln來創建鏈接。
b.方式二:
修改/etc/sysconfig/rawdevices配置文件,在文件中加入以下內容,每個裸設備一行。
/dev/raw/raw1 /dev/VolGroup00/lv_mydata
或/dev/raw/raw1 253 2
# service rawdevices start
Assigning devices:
/dev/raw/raw1? –>?? /dev/VolGroup00/lv_mydata
/dev/raw/raw1:? bound to major 253, minor 2
done
# chkconfig rawdevices on
4.更改權限
# chown mysql.mysql /dev/mapper/VolGroup00-lv_mydata
權限不對會報錯:
110325 12:54:13? InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /dev/mapper/VolGroup00-lv_mydata
5.MySQL使用裸設備
MyISAM存儲引擎只能緩存索引,不能緩存數據文件,因此操作系統的IO性能對MyISAM表的存取速率至關重要。InnoDB存儲引擎不僅可以緩存索引還可以緩存數據。因此可以使用裸設備來存儲InnoDB的共享表空間,這樣就不再需要文件系統的開銷,從而提高性能。
InnoDB的表空間分為兩種:一種是共享表空間,使用ibdata文件來存放數據,所有表和索引數據被存放在同一個表空間,通過innodb_data_file_path來指定;另一種是獨享表空間,每個表的數據和索引被存放在一個單獨的.ibd文件中。共享表空間是必須存在的,Innodb的undo信息和其他一些元數據信息是存放在共享表空間里面的。
如果將獨享表空間存儲在裸設備上,那么每個表是一個裸設備,這樣裸設備的數量將會是很大的。共享表空間不會出現這個問題的。下面是把共享表空間存儲在裸設備上:
a.在mysql配置文件中,增加裸設備文件名并指定newraw屬性
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = /dev/mapper/VolGroup00-lv_mydata:2Gnewraw
b.初始化裸設備
重啟mysql服務,待其完成分區初始化工作后,再關閉mysql服務。此階段不能創建更改InnoDB表,否則再重啟服務時更改的內容丟失。當用newraw指定任何分區時,InnoDB會阻止用戶修改數據。
c.修改newraw屬性
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = /dev/mapper/VolGroup00-lv_mydata:2Graw
d.再重啟mysql服務
服務正常啟動后,就可以正常使用了。
轉載于:https://blog.51cto.com/sx521/774798
總結
以上是生活随笔為你收集整理的MySQL使用裸设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux查服务器总内存大小,在linu
- 下一篇: Android如何进行反编译