zoukankan      html  css  js  c++  java
  • mysql之 表数据存放路径非datadir目录

    假如,新建一张表,并让该表的存储路径 不是默认的/path/to/datadir/dbname 。而是 指定存储的位置 应该如何处理?


    方法一
    shell> mkdir /Generalt1
    shell> chown mysql.mysql /Generalt1
    mysql> create table test_ger1 (a int) data directory='/Generalt1';
    Query OK, 0 rows affected (0.15 sec)
    shell> cd /Generalt1

    shell> ll test_ger1* # 在datadir 的 test 目录下
    -rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm
    -rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl # 这是链接文件,链接到上面的ibd文件
    shell> cat test_ger1.isl # 一个文本文件,内容就是idb文件的路径
    /Generalt1/test/test_ger1.ibd


    方法二
    在mysql 5.7之后,可以使用`通用表空间`

    语法:
    CREATE TABLESPACE tablespace_name ADD DATAFILE 'file_name' [FILE_BLOCK_SIZE = value] [ENGINE [=] engine_name]

    -- 1: 创建一个通用表空间
    mysql> create tablespace ger_space add datafile '/Generalt1/ger_space.ibd' file_block_size=8192;
    Query OK, 0 rows affected (0.07 sec)
    -- datafile 指定存储路径后,在datadir下会产生一个isl文件,该文件的内容为General space的ibd文件的路径
    -- 如果datafile不指定路径,则ibd文件默认存储在datadir目录下,且不需要isl文件了

    mysql> create tablespace ger_space2 add datafile 'ger_space2.ibd' file_block_size=8192;
    Query OK, 0 rows affected (0.06 sec)
    shell> ll ger*
    -rw-r-----. 1 mysql mysql 32768 Jan 3 16:51 ger_space2.ibd # 未指定路径,存放于datadir目录
    -rw-r-----. 1 mysql mysql 26 Jan 3 16:50 ger_space.isl # 指定了其他路径,存在isl链接文件

    shell> cat ger_space.isl
    /Generalt1/ger_space.ibd # ibd文件真实存在的路径

    mysql> select * from information_schema.innodb_sys_tablespaces where name='ger_space'G
    *************************** 1. row ***************************
    SPACE: 96
    NAME: ger_space
    FLAG: 2304
    FILE_FORMAT: Any
    ROW_FORMAT: Any
    PAGE_SIZE: 8192 -- page_size是8k
    ZIP_PAGE_SIZE: 0
    SPACE_TYPE: General -- General类型
    FS_BLOCK_SIZE: 0
    FILE_SIZE: 18446744073709551615
    ALLOCATED_SIZE: 2
    COMPRESSION: None
    1 row in set (0.00 sec)

    -- 2: 创建表
    mysql> create table test_ger2 (a int) tablespace=ger_space;
    Query OK, 0 rows affected (0.11 sec)

    shell> ll test_ger* # 在datadir 的 test 目录下
    -rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm
    -rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl
    -rw-r-----. 1 mysql mysql 8554 Jan 3 17:09 test_ger2.frm # 仅有一个frm文件

    shell> ll /Generalt1/
    total 52
    drwxr-x---. 2 mysql mysql 4096 Jan 3 16:41 test
    -rw-r-----. 1 mysql mysql 49152 Jan 3 17:09 ger_space.ibd # test_ger2的ibd文件其实存储在ger_space.ibd的通用表空间中

    mysql> create table test_ger3 (a int) tablespace=ger_space; -- test_ger3 也存放在ger_space.ibd中
    Query OK, 0 rows affected (0.09 sec)

  • 相关阅读:
    Git 基础
    SharePoint 2013 对象模型操作"网站设置"菜单
    SharePoint 2013 隐藏部分Ribbon菜单
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 设置自定义布局页
    SharePoint 2013 "通知我"功能简介
    SharePoint 2013 创建web应用程序报错"This page can’t be displayed"
    SharePoint 禁用本地回环的两个方法
  • 原文地址:https://www.cnblogs.com/andy6/p/9582622.html
Copyright © 2011-2022 走看看