来自 美高梅4858mgm 2019-10-19 10:25 的文章
当前位置: 美高梅4858官方网站 > 美高梅4858mgm > 正文

美高梅4858mgm实现直接I

(转自linux社区)

MySQL 的 InnoDB 存款和储蓄引擎不仅能够缓存索引,并且还是能够缓存数据,假若将其表和目录存款和储蓄在裸设备(Raw Device)上,进而绕过了文件系统的高速缓存和缓冲器而平昔访谈磁盘,那么将大大降低Linux文件系统的承负,使系统本性获得明显立异。

其他,从裸设备在数据库应用的优化原理中,大家也足以看来优化数据库的二个主旨趋向,正是何等设法减少因数据库特有的 I/O 密集型访谈所导致的文件系统的费劲负责。由此,尽管在现存的基于文件系统的数据仓库储存款和储蓄引擎上,也可思考采用极其的文件系统挂载格局。
比方为存储数据库文件的分区使用 noatime 作为挂载参数,由于访谈次数(access times)不再被记录 能够带来系统个性的自然水平的进级。

──────────────────────────────────────────────────────────────────────────────
本笔记最新安顿之系统遭遇:
──────────────────────────────────────────────────────────────────────────────
OS:  CentOS6
HDD:  /dev/sdc /dev/sdd
RAW:  /dev/raw/raw1 /dev/raw/raw2
MySQL:  5.1.61
USER:  mysql:mysql

参照官方网站的计划指引:

──────────────────────────────────────────────────────────────────────────────
(1) 设置裸设备(Prepare the raw device)
──────────────────────────────────────────────────────────────────────────────
在使用裸设备从前,必需先将磁盘设备绑定到裸设备上:

# /bin/raw /dev/raw/raw1 /dev/sdc;

/dev/raw/raw1:  bound to major 8, minor 32

再绑定另三个裸设备,然后还要让你的MySQL数据库的运行顾客有权读写裸设备:

# /bin/raw /dev/raw/raw2 /dev/sdd;
# chown root:mysql /dev/raw/raw1 /dev/raw/raw2;
# chmod 0660 /dev/raw/raw1 /dev/raw/raw2;

# /bin/raw -qa;
# /bin/raw -q /dev/raw/raw1;
# /bin/ls -l /dev/raw/raw1;
# blockdev --report /dev/raw/raw1;
# blockdev --report /dev/sdc;

vi /etc/udev/rules.d/60-raw.rules;

ACTION=="add", KERNEL=="sdc", GROUP=="mysql", MODE=="0660", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdd", GROUP=="mysql", MODE=="0660",

RUN+="/bin/raw /dev/raw/raw2 %N"

Note: this make sure device /dev/sdc and /dev/sdd will bind automatically when server reboot.

# vi /etc/udev/rules.d/41-local-permissions-rules;

──────────────────────────────────────────────────────────────────────────────
(2) 如有要求,先备份旧有的InnoDB数据表
──────────────────────────────────────────────────────────────────────────────
即使您的数据库已经运转,並且现存数量存储于旧的InnoDB引擎之中,假使您须要迁移的话,
请在关闭数据库从前先行用mysqldump命令导出您的数额, 等新内燃机配置好今后再导入就可以。

可参考如下SQL命令查看和导出您的InnoDB数据表:

mysql> SELECT table_schema,table_name,engine FROM INFORMATION_SCHEMA.TABLES;
mysql> SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine='InnoDB';

如有须求,可用mysqldump导出多少,请参见如下格式(请用相应的数据库和表名称):

mysqldump -u root -p -h localhost [database]美高梅4858mgm,.[table] > database.table.sql

在乎:您必得每一个表导出旧的数码。

──────────────────────────────────────────────────────────────────────────────
(3) 开端化阶段MySQL的配备
──────────────────────────────────────────────────────────────────────────────
When you create a new data file, put the keyword newraw 
immediately after the data file size in innodb_data_file_path:

# vi /etc/my.cnf;

[mysqld]
innodb_buffer_pool_size=128M
innodb_data_home_dir=

innodb_data_file_path=/dev/raw/raw1:64Mnewraw;/dev/raw/raw2:64Mnewraw

 

后记:

mysql 还提供了另一种达成情势,配置 my.ini 里 innodb_flush_method

innodb_flush_method = O_DIRECT

如此那般也得以达成直接I/O

 

本文由美高梅4858官方网站发布于美高梅4858mgm,转载请注明出处:美高梅4858mgm实现直接I

关键词: