mysql i o优化_MySQL管理与优化(18):磁盘I/O问题

磁盘I/O问题:

使用磁盘阵列:

RAID(磁盘阵列)就是按照一定策略将数据分布到若干物理磁盘上,这样就增强了数据存储的可靠性,而且可以提高数据读写的整体性能。

常见RAID级别及其特性:

按数据分布和冗余方式,可将RAID分为几种级别:

9d802b3966c182faafe8397b9a5b4134.png

如何选择RAID级别:

根据应用的读写特性,可靠性要求,预算可以从以下几个方面考虑选择RAID级别:

1. 数据读写都很频繁,可靠性要求也很高,最好选择RAID10;

2. 数据读写频繁,写相对较少,对可靠性有一定要求,可选择RAID5;

3. 数据读写都很频繁,但可靠性要求不高,可以选择RAID0。

虚拟文件卷或软RAID:

在不具备硬件条件下,可以使用一个软RAID技术,如Linux下的lvm2。

使用Symbolic Links分布I/O:

我们可以利用操作系统的符号连接(Symbolic Links)将不同的数据库或表,索引指向不同的屋里磁盘,从而达到分布磁盘I/O的目的。

将一个数据库指向其他物理磁盘,如:

mkdir /otherdisk/databases/test

ln -s /otherdisk/database/test /path/to/datadir/test

对于MyISAM存储类型的表,可以使用DATA DIRECTORY和INDEX DIRECTORY指定目录:

-- 对于新建表

CREATE TABLE test(

id INT PRIMARY KEY,

name VARCHAR(20)) TYPE = MyISAM DATA DIRECTORY = '/disk2/data' INDEX DIRECTORY = '/disk3/index'

-- 对于已存在的表

可将表的数据文件(.MYD)和索引文件(.MYI)移动到目标目录,再建立符号连接,但表的定义文件(.frm)必须位于MySQL的数据文件目录下。

在Windows下使用符号链接。

1. 创建目录D:\data\foo;

2. 创建文件C:\mysql\data\foo.sym,在其中输入D:\data\foo。

NOTE:Symbolic Links存在一定的安全风险,如果不使用Symbolic Links,应通过启动参数skip-symbolic-links禁用这一功能。

禁止操作系统更新文件的atime属性:

# 可修改/etc/fstab, 如

/dev/sda3 /home ext4 defaults,noatime 0 2

# 重新mount分区

sudo mount -a

用裸设备(Raw Device)存在InnoDB的共享表空间:

修改MySQL配置文件,在innodb_data_file_path添加裸设备名称,并指定newraw属性:

......

[mysqld]

innodb_data_home_dir=

innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:3Gnewraw

......

启动MySQL,使其完成分区初始化工作,然后关闭MySQL。此时还不能创建或修改InnoDB表。

将innodb_data_file_path中的newraw改成raw:

......

class=programlisting[mysqld]

innodb_data_home_dir=

innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw

重新启动MySQL即可。

不吝指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值