在datadir外创建InnoDB表
来源:互联网 发布:如何调用数组方法 编辑:程序博客网 时间:2024/06/06 00:34
在datadir外创建表
要在MySQL datadir外的特定位置创建新的InnoDB file-per-table tablespace,请在create table时指定DATA DIRECTORY = absolute_path_to_directory子句
提前规划好位置,因为无法使用alter语句修改一个表的DATA DIRECTORY属性.
MySQL会在目标目录中创建一个对应于数据库名称的子目录,并在改目录中创建表的.ibd文件用于存储表数据.在MySQL datadir目录下的数据库目录中,MySQL创建一个包含表的路径名称的table_name.isl文件. .isl文件由MySQL处理,像一个符号链接(不过InnoDB表不支持实际的符号链接)
示例:
版本[root@test43100 ~]# cat /etc/redhat-release CentOS release 6.4 (Final)[root@test43100 ~]# mysql -e "\s"--------------mysql Ver 14.14 Distrib 5.7.18, for linux-glibc2.5 (x86_64) using EditLine wrapperroot@mysqldb 11:00: [(none)]> use fandbDatabase changedroot@mysqldb 11:00: [fandb]> SHOW VARIABLES LIKE 'innodb_file_per_table';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | ON |+-----------------------+-------+1 row in set (0.00 sec)root@mysqldb 11:00: [fandb]> create table t_out(id int auto_increment primary key) data directory='/data/outdir';Query OK, 0 rows affected (0.37 sec)查看目标目录[mysql@test43100 data]$ tree outdir/outdir/└── fandb └── t_out.ibd查看datadir[root@test43100 fandb]# ls -lttotal 412-rw-r----- 1 mysql mysql 28 Sep 6 11:03 t_out.isl-rw-r----- 1 mysql mysql 8556 Sep 6 11:03 t_out.frm包含.isl和.frm文件
您还可以将CREATE TABLE … TABLESPACE与DATA DIRECTORY子句结合使用,以便在MySQL数据目录之外创建一个file-per-table tablespace。 为此,您必须指定innodb_file_per_table作为表空间名称。
root@mysqldb 11:03: [fandb]> create table t_out2(id int auto_increment primary key) TABLESPACE = innodb_file_per_table data directory='/data/outdir';Query OK, 0 rows affected (0.42 sec)查看目标目录[mysql@test43100 data]$ tree outdir/outdir/└── fandb ├── t_out2.ibd └── t_out.ibd查看datadir[root@test43100 fandb]# ls -lttotal 428-rw-r----- 1 mysql mysql 29 Sep 6 11:08 t_out2.isl-rw-r----- 1 mysql mysql 8556 Sep 6 11:08 t_out2.frm
使用第二章方法无需启用innodb_file_per_table
使用说明
MySQL最初保持.ibd文件打开,阻止您卸载设备,但如果服务器正忙,最终可能会关闭该表。 当MySQL运行时,请注意不要意外卸载外部设备,或者在设备断开连接时启动MySQL。 当相关的.ibd文件丢失时尝试访问表会导致严重的错误,需要重新启动服务器。
如果.ibd文件仍然不在预期路径,服务器重新启动可能会失败。 在这种情况下,请手动删除数据库目录中的table_name.isl文件,并在重新启动后执行DROP TABLE以删除.frm文件,并从数据字典中删除有关该表的信息。Before tables on an NFS-mounted volume, review potential issues outlined in Using NFS with MySQL.
If you use an LVM snapshot, file copy, or other file-based mechanism to back up the .ibd file, always use the FLUSH TABLES … FOR EXPORT statement first to make sure all changes that were buffered in memory are flushed to disk before the backup occurs.
DATA DIRECTORY子句是使用符号链接的一个支持的替代方法.InnoDB直接使用符号链接是不支持的
- 在datadir外创建InnoDB表
- 从Hibernate创建InnoDB表
- 14.6.1 Creating InnoDB Tables 创建InnoDB 表:
- 14.8.1 Creating InnoDB Tables 创建InnoDB 表
- 为什么在MySQL数据库中无法创建外键?(MyISAM和InnoDB详解)
- 15.2.5. 创建InnoDB表空间
- MYSQL 无法创建innodb类型的表
- MySQL创建InnoDB类型表-示例
- MySQL在MacOS下修改datadir目录终于成功了
- InnoDB创建数据压缩页
- Mysql 使用InnoDB引擎创建独立表空间分区
- 使用MySQL如何有效地创建基于 INNODB 引擎的表
- hibernate自动创建表时提示语法错误“type=innoDB”
- mysql innodb创建数据文件失败
- innodb purge线程的创建
- 在windows下更改mysql默认的datadir文件的位子
- 如何在创建表时同时创建外键
- InnoDB 中文参考手册 --- 4 建立 InnoDB 表
- c++函数传值方式
- 区块链探索之漫画解说
- 读取本地文件上传到数据库
- 完美解决linux下jdk版本与安装版本不一致
- 中国AR行业专题研究报告
- 在datadir外创建InnoDB表
- Java-Java I/O流解读之基于字节的I / O和字节流
- linux cd pwd 命令
- AWK里的语法
- Spring @JsonView使用
- Mysql truncate 表以后如何释放空间
- 顺序容器和简单算法
- 内部类、内部接口
- 【数据库】——函数