使用symbolic links分布I/O

   Mysql的数据库名和表名是与文件系统的目录名和文件名对应的,默认情况下,创建的数据库和表都存放在参数datadir定义的目录下。这样如果不使用RAID或逻辑卷,所有的表都存放在一个磁盘设备上,无法发挥多磁盘并行读写的优势!在这种情况下,我们就可以利用操作系统的符号(symbolic Links)将不同数据库或表、索引指向不同的物理磁盘,从而达到分布磁盘I/O的目的。

 

 (1)将一个数据库指向其他物理磁盘

       其方法是先在目标磁盘上创建目录,然后再创建从mysql数据目录到目标目录的符号连接;

shell>mkdir /otherdisk/database/test

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

案例如下:

(一)创建文件

[root@SR3 test]# mkdir -p /disk1/database/qns

[root@SR3 test]# ln -s /mysqldata/qns/ /disk1/database/qns/
[root@SR3 test]# chown -R  mysql:mysql /disk1/

 

(二) 创建表

          

mysql> use qns;
Database changed
mysql> create table qns(id int);
Query OK, 0 rows affected (0.03 sec)

mysql> show create table qns;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| qns   | CREATE TABLE `qns` (
  `id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

 

 

(三)查看相关目录表是否生成

 

[root@SR3 qns]# ls
db.opt  qns.frm  qns.MYD  qns.MYI
[root@SR3 qns]# pwd
/disk1/database/qns/qns

[root@SR3 qns]# ls -l
total 20
-rw-rw---- 1 mysql mysql   61 Dec 23 09:08 db.opt
-rw-rw---- 1 mysql mysql 8556 Dec 23 09:11 qns.frm
-rw-rw---- 1 mysql mysql    0 Dec 23 09:11 qns.MYD
-rw-rw---- 1 mysql mysql 1024 Dec 23 09:11 qns.MYI

(四)插入数据

 

mysql> insert into qns  select * from qns;
Query OK, 1048576 rows affected (0.64 sec)
Records: 1048576  Duplicates: 0  Warnings: 0


mysql> select count(*) from qns;
+----------+
| count(*) |
+----------+
|  2097152 |
+----------+
1 row in set (0.02 sec

 

(五)查看存储空间的大小

[root@SR3 qns]# cd /mysqldata/qns
[root@SR3 qns]# du -sh *
4.0K    db.opt
12K     qns.frm
7.1M    qns.MYD
4.0K    qns.MYI
[root@SR3 qns]# du -sh *
4.0K    db.opt
12K     qns.frm
15M     qns.MYD
4.0K    qns.MYI
[root@SR3 qns]# cd /disk1/database/qns/qns
[root@SR3 qns]# du -sh *
4.0K    db.opt
12K     qns.frm
15M     qns.MYD
4.0K    qns.MYI

 

注:针对myisam的存储引擎表两边的存储空间都保持一样。

 

 

另外一个实例:

创建innodb存储引擎表

 

 

2)将MyISAM(其他存储引擎的表不支持)表的数据文件或索引文件指向其他物理磁盘

 

对于新建的表,可以通过在create table语句中增加data directory和index directory选项来完成,例如

 

mysql> create table tmp(id int primary key)
    -> ENGINE = MyISAM
    -> DATA DIRECTORY= '/disk2/data'
    -> INDEX DIRECTORY='/disk3/data';
Query OK, 0 rows affected (0.10 sec)

查看表存储位置:

 

[root@SR3 data]# ls
tmp.MYD
[root@SR3 data]# cd /disk3/data/
[root@SR3 data]# ls
tmp.MYI

root@SR3 data]# cd /mysqldata/test
[root@SR3 test]# ls
ibdata1  test.frm  test.MYD  test.MYI  tmp.frm  tmp.MYD  tmp.MYI

 

对于已有的表,可以先将其数据文件(.MYD)或索引文件(.MYI)转移到目标磁盘,然后再建立符号连接即可。需要说明的是表定义文件(.frm)必须位于Mysql数据文件目录下,不能用符号连接

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值