Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9350597
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: Mysql/postgreSQL

2012-10-23 10:48:28

MySQL使用裸设备存储  

2011-10-09 12:17:09|  分类: my存储引擎 |  标签: |字号 

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/
    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服务
服务正常启动后,就可以正常使用了。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


裸设备简单测试
2009年4月28日
我这里用的SUN VBOX以及SUPER-SMACK来得到的数据。
至于SUPER-SMACK的介绍参见我以前的文章。
裸设备的参数设置参见手册。
 
MySQL使用裸设备存储 - zhuzhu - 五事九思  (大连Linux主机维护)
 
 
MySQL使用裸设备存储 - zhuzhu - 五事九思  (大连Linux主机维护)


 

阅读(921) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~