4 votes

Stockez chaque base de données dans un répertoire différent

Existe-t-il un moyen de stocker chaque base de données mysql dans un répertoire distinct ? Je pourrais établir un lien symbolique entre les répertoires dans /var/lib/mysql pour chaque base de données, mais je me demandais s'il existait un moyen intégré de le faire.

Merci

2voto

lynxman Points 8999

J'ai bien peur qu'il n'y ait pas de moyen intégré de faire cela, la façon dont mysql fonctionne est de définir simplement le datadir et toutes les bases de données sont censées être là dans leurs répertoires.

Si vous voulez faire cela, assurez-vous simplement que l'utilisateur sous lequel mysql tourne a accès aux répertoires finaux, les liaisons douces devraient être correctes je pense.

0 votes

Merci, je ne le pensais pas car je n'ai rien trouvé, mais j'espérais que ce soit quelque chose d'obscur qui ne soit pas documenté.

1voto

Adam Points 11

Étonnamment, le seul lien symétrique intégré de tables MyISAM individuelles
se fait par la commande CREATE TABLE comme suit :

CREATE TABLE
(
...
) ENGINE=MyISAM
DATA_DIRECTORY='absolute path of data folder'
INDEX_DIRECTORY='absolute path of index folder';

Goto http://dev.mysql.com/doc/refman/5.0/en/create-table.html et repérez les options DATA_DIRECTORY et INDEX_DIRECTORY.

Seul le fichier .frm reste sur le serveur d'origine.

BTW Ces options ne fonctionnent pas dans la version Windows de MySQL. Ces options ne sont pas disponibles pour InnoDB.

1voto

cyphun Points 53

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html :

Lorsque plusieurs tablespaces sont activés, InnoDB stocke chaque table nouvellement créée dans son propre fichier tblname.ibd. dans son propre fichier tbl_name.ibd. dans le répertoire approprié de la base de données

0voto

FariZ Points 101

Il semble que cela soit possible par une solution de contournement.

Toutes les bases de données sont situées dans le répertoire DATADIR par nom de dossier respectivement. Vous pouvez donc attacher un nouveau disque et le monter dans le dossier correspondant au nom de la base de données.

mysql> create database DatabaseName;

# ls /var/lib/mysql/DatabaseName

# mount /dev/sdb /var/lib/mysql/DatabaseName

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X