zoukankan      html  css  js  c++  java
  • 创建表的时候把表空间定义到其他目录

    一、需求场景

    可能有这么一种场景,系统中是 SSD 跟 SATA 混用,需要把经常读写的数据放在SSD上面,历史数据放到SATA上面

    二、实验场景

    在test库创建一个表 t1 ,定义目录到 /tmp 下面

    create database test;
    use test;
    create table t1(id int primary key) data directory = '/tmp';

    cd 到 /tmp 目录下

    cd /tmp
    ls -l
    drwxr-x---. 2 mysql mysql  20 Nov  7 21:48 test
    cd test
    ls -l
    -rw-r-----. 1 mysql mysql 98304 Nov  7 21:48 t1.ibd

    /tmp 下多了个 test 目录,test下有了t1.ibd 表空间。但是有个疑问,就是表定义文件在哪?难道还在datadir下面?

    cd 到 datadir(指的是datadir定义的目录) 下

    cd /database/mysql/mysql3306/data/test/
    ls -l
    -rw-r-----. 1 mysql mysql   67 Nov  7 21:43 db.opt
    -rw-r-----. 1 mysql mysql 8556 Nov  7 21:48 t1.frm
    -rw-r-----. 1 mysql mysql   16 Nov  7 21:48 t1.isl

    果然在 datadir 下面,不过还多了一个 t1.isl文件,这个是什么鬼。先不管,cat 一下

    cat t1.isl 
    /tmp/test/t1.ibd

    好像是指定到 /tmp/test/t1.ibd。看一下官方的解释

    包含表空间路径isl文件文件在datadir下创建。该 isl文件被视为符号链接。

    三、注意事项

    如果目录之外的表空间盘被卸载了,数据库是启动不了的。处理办法是删掉 isl,启动数据库之后再删除表

     

  • 相关阅读:
    Java从入门到实战之(22)数组之练习
    LeetCode343. 整数拆分
    LeetCode64. 最小路径和
    LeetCode120. 三角形最小路径和
    LeetCode37. 解数独
    实验:通过Telnet访问路由器
    telnet 命令使用方法详解,telnet命令怎么用?
    COBIT、ITIL
    500 internal privoxy error错误怎么解决?
    iPhone12有充电器和耳机吗
  • 原文地址:https://www.cnblogs.com/ziroro/p/9928109.html
Copyright © 2011-2022 走看看