MySQL 将数据文件分布到不同的磁盘

MySQL之SAN/NAS存储实战与多磁盘卷优化指南 大家好!在数据库领域,存储架构的选择与优化一直是性能保障的核心议题。写作本文的初衷,是希望与各位开发者、运维人员分享SAN(存储区域网络)、NAS(网络附加存储)的实战经验,以及多磁盘卷的配置技巧,帮助大家在实际项目中根据业务需求做出合理决策。文中将结合具体场景,用通俗易懂的语言解析技术要点,并通过图表和代码实例辅助理解。欢迎随时交流探讨! 阅读详情

为了提高IO性能,可以将不同的文件放在不同的磁盘。这里只说明InnoDB,MyISAM的修改方式。


1.环境

OS: CentOS 6.5 x64

MySQL: 5.6 for Linux (x86_64)


2.InnoDB

InnoDB指定数据文件的位置

mysql> SHOW VARIABLES LIKE 'innodb_file_per_table';    #先检查一下配置变量
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table |
ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

如果innodb_file_per_table值为OFF,可以动态修改:

set global innodb_file_per_table=1;


CREATE TABLE temp3
(empno smallint(4) not null,
 ename varchar(10),
 job varchar(9),
 mgr smallint(4),
 hiredate date,
 sal float(7, 2),
 comm float(7, 2),
 deptno tinyint(2)
) engine=innodb charset=utf8 data directory='/u01/mysql/temp/';

[root@test1 temp]# pwd
/u01/mysql/temp
[root@test1 temp]# ls
temp2.MYD  temp2.MYI  temp.MYD  temp.MYI  test     #由于表在test库下,所以在指定的目录里产生了个test目录
[root@test1 temp]# cd test
[root@test1 test]# pwd
/u01/mysql/temp/test
[root@test1 test]# ll
total 96
-rw-rw---- 1 mysql mysql 98304 Jun 29 18:27 temp3.ibd     #数据文件在这


InnoDB的数据文件不能像MyISAM一样使用标签链接方式指定数据文件。



3.MyISAM

mysql> SHOW VARIABLES LIKE 'have_symlink';     #先检查一下配置变量
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_symlink  |
DISABLED |
+---------------+----------+
1 row in set (0.00 sec)


DISABLED 不可用,修改have_symlink变量,需要重启服务。


[root@test1 temp]# vi /etc/my.cnf

[mysqld]
basedir=/u01/mysql
datadir=/u01/mysql/data
socket=/u01/mysql/log/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=1     #需要配置成1
log-bin=mysql-bin
server-id=1

。。。

[root@test1 test]# /etc/init.d/mysql restart
Shutting down MySQL....                                    [  OK  ]
Starting MySQL...                                          [  OK  ]


mysql> SHOW VARIABLES LIKE 'have_symlink';     #再次检查,现在ok
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_symlink  |
YES   |
+---------------+-------+
1 row in set (0.00 sec)


如果是新表,可以在创建的时候指定目录:

CREATE TABLE temp
(empno smallint(4) not null,
 ename varchar(10),
 job varchar(9),
 mgr smallint(4),
 hiredate date,
 sal float(7, 2),
 comm float(7, 2),
 deptno tinyint(2)
) engine=myisam data directory='/u01/mysql/temp' index directory='/u01/mysql/temp';</span>

这时在数据目录里看数据文件:

[root@test1 test]# pwd
/u01/mysql/data/test
[root@test1 test]# ll -rth
。。。
-rw-rw---- 1 mysql mysql 8.6K Jun 29 06:56 temp.frm
lrwxrwxrwx 1 mysql mysql   24 Jun 29 06:56 temp.MYI -> /u01/mysql/temp/temp.MYI
lrwxrwxrwx 1 mysql mysql   24 Jun 29 06:56 temp.MYD -> /u01/mysql/temp/temp.MYD
这里用/u01/mysql/temp/目录只是用了演示,生产环境应该将这两个文件放到别的磁盘上。


如果表已经存在,需要先停掉mysql,再ln:

[root@test1 test]# pwd
/u01/mysql/data/test
[root@test1 test]# ll temp2*     #已经存在temp2表
-rw-rw---- 1 mysql mysql 8780 Jun 29 09:10 temp2.frm
-rw-rw---- 1 mysql mysql  548 Jun 29 09:10 temp2.MYD
-rw-rw---- 1 mysql mysql 1024 Jun 29 09:10 temp2.MYI

[root@test1 test]# /etc/init.d/mysql stop     #停掉mysql
Shutting down MySQL...                                     [  OK  ]

[root@test1 test]# mv temp2.MYD ../../temp/     #移到别的目录

[root@test1 test]# mv temp2.MYI ../../temp/     #移到别的目录

[root@test1 test]# ln -s /u01/mysql/temp/temp2.MYD /u01/mysql/data/test/temp2.MYD

[root@test1 test]# ln -s /u01/mysql/temp/temp2.MYI /u01/mysql/data/test/temp2.MYI

[root@test1 test]# ll temp2*
-rw-rw---- 1 mysql mysql 8780 Jun 29 09:10 temp2.frm
lrwxrwxrwx 1 root  root    25 Jun 29 09:18 temp2.MYD -> /u01/mysql/temp/temp2.MYD
lrwxrwxrwx 1 root  root    25 Jun 29 09:19 temp2.MYI -> /u01/mysql/temp/temp2.MYI

[root@test1 test]# /etc/init.d/mysql start
Starting MySQL.                                            [  OK  ]

mysql> select * from temp2;
+-------+--------------+-----------+------+------------+---------+---------+--------+
| empno | ename        | job       | mgr  | hiredate   | sal     | comm    | deptno |
+-------+--------------+-----------+------+------------+---------+---------+--------+
|  7369 | 员工SMITH    | CLERK     | 7902 | 1980-12-17 |  800.00 |    NULL |     20 |
|  7499 | 员工ALLEN    | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
|  7521 | 员工WARD     | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
|  7566 | 员工JONES    | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
|  7654 | 员工MARTIN   | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
|  7698 | 员工BLAKE    | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
|  7782 | 员工CLARK    | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
|  7788 | 员工SCOTT    | ANALYST   | 7566 | 1982-10-09 | 3000.00 |    NULL |     20 |
|  7839 | 员工KING     | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
|  7844 | 员工TURNER   | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
|  7876 | 员工ADAMS    | CLERK     | 7788 | 1983-01-12 | 1100.00 |    NULL |     20 |
|  7900 | 员工JAMES    | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
|  7902 | 员工FORD     | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
|  7934 | 员工MILLER   | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
+-------+--------------+-----------+------+------------+---------+---------+--------+
14 rows in set (0.00 sec)

数据正常。


不管是InnoDB还是MyISAM,都不能使用alter table 修改数据文件所以位置。




MySQL核心技术原理之:内存与磁盘管理 内存和硬盘是数据库系统中最主要的两种存储设备,对数据库性能的影响是最大的。相对于存储在内存中的数据,将数据持久化到硬盘上可以提高数据的生命周期并提供更好的可用性。虽然许多公司都在投入巨资建设数据中心,但最终还是会面临各种因素限制而难以建立起如此庞大的服务器集群。因此,如何合理地分配、划分硬盘空间,从而提升数据库性能,成为一个重要课题。在本系列的文章中,我将为读者详细阐述MySQL内存管理和硬盘管理相关的原理,结合实际案例展示最佳实践和优化方案。 阅读详情

相关推荐

Visual Tracker Benchamark傻瓜式教程(二)

问题  1 1  在调用main.m跑TRE和SRE时,因为会生成相应的.mat数据文件,如果跑完以后发现自己算法生成的.mat文件有问题,那么要把该文件删除,待找到错误原因后,重新生成相应的.mat文件。因为程序中写的是如果已经存在了.mat文件,例如已经存在car4_STC.mat文件,即使该文件中的数据有错误,但是重新跑时会默认该文件中的数据写完,不会重新写入数据 问题  2  b

mingbujingren的专栏 9928

MySQL事件

文章目录MySQL事件事件事件调度器创建事件查看事件修改时间删除事件举例 MySQL事件 事件 事件是指根据计划在未来的指定时间执行一次或多次的任务。任务开始和结束于指定的日期和时间,期间执行一次或间隔执行多次。与触发器不同,事件由事件触发,且并不依赖于特定的触发动作。 事件的管理由事件调度器完成。事件由一个特殊的事件调度程序线程执行,当我们提到事件调度程序时,实际上指的是这个线程。在运行时,具有process权限的用户可以在show processlist的输出中看到事件调度程序线程及其当前状态。

qq_44734036的博客 1881

Power BI常见问题篇1:无法打开文档

Power BI常见问题篇1:无法打开文档

weixin_48273257的博客 3304

mysql5.7 优化 四

8.12 优化 MySQL 服务器 8.12.1 系统因素 8.12.1 系统因素 一些系统级因素会在很大程度上影响性能: 如果您有足够的 RAM,则可以删除所有交换设备。即使您有空闲内存,某些操作系统在某些情况下也会使用交换设备。 避免MyISAM表的外部锁定。默认为禁用外部锁定。和 选项显式启用--external-locking和--skip-external-locking禁用外部锁定。 只要您只运行一台服务器,禁用外部锁定就不会影响 MySQL 的功能。请记住在运行myisamch...

LOST_9的博客 1282

解决Keil uVision许可证管理中Unknown Product错误

嵌入式开发中,IDE工具的许可证管理是确保开发环境正常运行的关键环节。Keil uVision作为ARM架构的主流开发工具,其许可证系统采用加密验证机制,通过产品版本识别实现授权控制。当出现Unknown Product错误时,通常源于版本兼容性问题或区域发行版差异,这直接影响开发工具链的可用性。特别是在维护历史项目或使用中国特供版时,开发者常会遇到此类问题。通过分析许可证类型、调整安装配置或建立虚拟化开发环境等工程实践方案,可以有效解决这类授权验证故障,保障嵌入式项目的持续集成与交付效率。

weixin_33743248的博客 363

用deepseek部署全自动的机器人--bytebot

Bytebot是一款开源AI桌面代理,提供完整的虚拟桌面环境,支持跨应用任务处理、文件管理、文档处理等复杂工作流。其技术架构包含核心控制、LLM代理、UI等组件,支持Docker和Kubernetes部署。本文演示了基于CloudStudio的部署流程,包括环境配置、Docker部署及DeepSeek API集成,实现多模型调用功能。

Kin 2481

mysql 不同磁盘_MySQL 将数据文件分布到不同的磁盘

为了提高IO性能,可以将不同的文件放在不同的磁盘。这里只说明InnoDB,MyISAM的修改方式。1.环境OS: CentOS 6.5 x64MySQL:5.6 for Linux (x86_64)2.InnoDBInnoDB指定数据文件的位置mysql> SHOW VARIABLES LIKE 'innodb_file_per_table'; #先检查一下配置变量+--------...

weixin_33344629的博客 649

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

MySQL中部分系统变量介绍

  have_symlink                             DISABLED                                   YES 用以支持在表定义中指定数据目录和索引目录(全局静态系统变量)   innodb_additional_mem_pool_size          268435456        (256M)   ...

weixin_34411563的博客 145

ROS牛耕法全覆盖规划:从算法原理到清洁机器人实战解析

本文深入解析ROS牛耕法全覆盖规划算法在清洁机器人中的应用,从算法原理到实战优化技巧全面覆盖。详细介绍了地图预处理、区域分解和路径优化等关键步骤,并分享实际案例中的解决方案,帮助开发者提升机器人清扫效率和覆盖率。

weixin_27013291的博客 392

面向RKNN平台的YOLOv11 Pose部署实战:模型转换、优化与端侧姿态估计推理

本文研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案。通过分析模型架构和关键技术,提出完整的转换流程,包括ONNX格式转换、检测头优化和量化配置。在RK3588硬件平台上实现了100 FPS的实时姿态检测,验证了该方案的可行性。研究主要贡献包括:1)提出YOLOv11 Pose到RKNN平台的完整转换方案;2)优化后处理算法;3)实现高效的边缘计算部署。实验结果表明,该方案能有效解决边缘设备计算资源受限的问题,为人机交互等应用场景提供了实用的技术方案。

m0_71589036的博客 613

mysql 不同磁盘_MySQL 将数据文件分布到不同的磁盘 shenwenkai

[root@test1 temp]# vi /etc/my.cnf[mysqld]basedir=/u01/mysqldatadir=/u01/mysql/datasocket=/u01/mysql/log/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security risks...

weixin_30007303的博客 136

【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装

GB200 的高性能通信依赖。

jundao1997的专栏 705

mysql 分盘_MySQL 将数据文件分布到不同的磁盘

[root@test1 temp]# vi /etc/my.cnf[mysqld]basedir=/u01/mysqldatadir=/u01/mysql/datasocket=/u01/mysql/log/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security risks...

weixin_31460419的博客 405

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Innodb配置,将数据与日志放在不同磁盘可以加快性能

An advanced my.cnf example. Suppose that you have a Linux computer with 2GB RAM and three 60GB hard disks at directory paths /, /dr2 and /dr3. The following example shows possible configurati...

whsq1987的博客 210

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

充分理解MyISAM

MyISAM 是mysql 默认的存储引擎。当create新表时 ,不指定存储引擎时,默认使用它。每个MyISAM 在磁盘上存储成三个文件 文件名与表名字相同。拓展名分别是  .frm(存储表定义) .MYD(存储数据) .MYI(存储索引),数据和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。MyISAM 的特性存储限制:没有实物支持:没有锁机制:表锁B树索引:支持哈希索引:不支持...

dzyweer的博客 419

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mysql 下载到其他盘中_MYSQL 如果把数据文件保存到其他磁盘里

今天在优快云上有人问起分开存储数据文件的问题。现在写下来。为了突破磁盘搜索的瓶颈。我们要把MYSQL的数据和索引保存到其他不同的磁盘中。目前还只是支持MyISAM引擎。在MYSQL中,官这个叫象征性链接。1、在WINDOWS下的象征性链接。数据库目录:E:/LAMP/mysql5/data数据库名字:symlink目的数据库目录:D:/MYSQLDATA如果原来的数据库目录下已经有symlink...

weixin_42299778的博客 261

mysql初识之数据文件及其他文件

在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等。

秋韩 1万+

解析OceanBase v4.2磁盘数据文件支持按需扩展的功能

若你日常习惯使用MySQL,使用过Oceanbase数据库后,也许会对OceanBase的磁盘数据文件样式提出这样的问题:为何储存数据仅用一个大型的block_file文件呢?

OceanBase分布式数据库的博客 1524

【Oracle篇】掌握数据文件在ASM磁盘组和本地系统文件拷贝的多种方式

掌握数据文件从ASM磁盘组复制到文件系统(或者反向操作)的 4 种方式:RMAN中的CONVERT DATAFILE命令、ASMCMD工具中的cp命令(11g及以上)、使用DBMS_FILE_TRANSFER包、通过ASM FTP方式进行传输

奈斯DB的博客 1742

mysql配置多个磁盘_MySQL多实例配置(两)

MySQL操作和维护一个集中的数据库的。它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例。这个功能是由mysqld_multi实现。mysqld_multimysqld的服务进程。这些mysqld服务进程程序能够用不同的socket或是监听于不同的端口,同一时候将数据文件分布到不同的磁盘以分散IO。mysqld_multi提供简单的命令用于启动。关闭和报告所管理的服务器的状态。...

weixin_34061793的博客 1050

mysql实现表分区不同的磁盘_MYSQL数据库mysql分表和分区的区别浅析

《MYSQL数据库mysql分表和分区的区别浅析》要点:本文介绍了MYSQL数据库mysql分表和分区的区别浅析,希望对您有用。如果有疑问,可以联系我们。MYSQL必读一、什么是mysql分表和分区MYSQL必读什么是分表,从表面意思上看呢,就是把一张表分成N多个小表MYSQL必读什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上MYSQL必读二、...

weixin_34221374的博客 338

【MySQL从入门到放弃】InnoDB磁盘结构(一)

篇幅原因,本文只解析了InnoDB磁盘结构中的表空间、数据字典、双写缓冲区,对他们的功能、分类等做了细致分析,并对数据的双写流程做了解析。下一篇我们继续把剩下的重做日志、撤销日志、二进制日志做一个全面解析。

晚风心里吹 1041

mysql线性hash_MySQL 5.5 创建 线性Hash分区表,并将表文件分布到不同的物理磁盘上...

应用环境OLAP,请不要再直接在OLTP环境下参考要合并不同服务器上的数据,考虑到以后会不断添加游戏区组服务器,所以使用mysql5.5的LINEAR HASH分区,当添加的区组超过hash分区后再添加分区,停机维护时再将新添加的分区表文件分布到其他物理分区上去.下面是建表SQLDROP TABLE IF EXISTS gyyx_middle.`wd_char_info`;tudou@GyyxCR...

weixin_39605521的博客 152
上一篇: mongdb 3 安装 分片 复本 搭建
下一篇: 在Linux上部署Java访问MongoDB
本木生
博客等级 码龄14年 18粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值