Rechercher dans le manuel MySQL
15.6.3.6 Creating a Tablespace Outside of the Data Directory
The CREATE TABLE ...
DATA DIRECTORY
clause permits creating a
file-per-table
tablespace outside of the data directory. For example, you can use
the DATA DIRECTORY
clause to create a
tablespace on a separate storage device with particular
performance or capacity characteristics, such as a fast
SSD or a high-capacity
HDD.
Be sure of the location that you choose. The DATA
DIRECTORY
clause cannot be used with
ALTER TABLE
to change the location
later.
The tablespace data file is created in the specified directory, within in a subdirectory named for the schema to which the table belongs.
The following example demonstrates creating a file-per-table
tablespace outside of the data directory. It is assumed that the
innodb_file_per_table
variable is
enabled.
- Database changed
- # MySQL creates the tablespace file in a subdirectory that is named
- # for the schema to which the table belongs
- shell> cd /remote/directory/test
- shell> ls
- t1.ibd
When creating a tablespace outside of the data directory, ensure
that the directory is known to InnoDB
.
Otherwise, if the server halts unexpectedly before tablespace data
file pages are fully flushed, startup fails when the tablespace is
not found during the pre-recovery discovery phase that searches
known directories for tablespace data files (see
Tablespace Discovery During Crash Recovery). To make a
directory known, add it to the
innodb_directories
argument
value. innodb_directories
is a
read-only startup option that defines directories to scan at
startup for tablespace data files. Configuring it requires
restarting the server.
CREATE TABLE ...
TABLESPACE
syntax can also be used in combination with
the DATA DIRECTORY
clause to create a
file-per-table tablespace outside of the data directory. To do so,
specify innodb_file_per_table
as the tablespace
name.
The innodb_file_per_table
variable does not need to be enabled when using this method.
Usage Notes:
MySQL initially holds the tablespace data file open, preventing you from dismounting the device, but might eventually close the table if the server is busy. Be careful not to accidentally dismount an external device while MySQL is running, or start MySQL while the device is disconnected. Attempting to access a table when the associated tablespace data file is missing causes a serious error that requires a server restart.
A server restart issues errors and warnings if the tablespace data file is not at the expected path. In this case, you can restore the tablespace data file from a backup or drop the table to remove the information about it from the data dictionary.
Before placing a tablespace on an NFS-mounted volume, review potential issues outlined in Using NFS with MySQL.
If using an LVM snapshot, file copy, or other file-based mechanism to back up the tablespace data file, always use the
FLUSH TABLES ... FOR EXPORT
statement first to ensure that all changes buffered in memory are flushed to disk before the backup occurs.Using the
DATA DIRECTORY
clause is an alternative to using symbolic links, which is not supported.
Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-tablespace-placing.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.