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. 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.
Traduction non disponible
Le manuel MySQL n'est pas encore traduit en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Document créé le 26/06/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/mysql-rf-tablespace-placing.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.