Posizioni diverse per i database MySQL?


18

Posso configurare MySQL per memorizzare un database specifico in un posto separato sul disco?

Voglio ancora che qualsiasi nuovo database vada nella posizione predefinita, ma c'è un database specifico che mi piacerebbe aver memorizzato nella mia cartella Dropbox in modo che possa rimanere sincronizzato tra alcuni computer.

Come posso fare questo?


1
Per inciso, è possibile farlo al contrario. Lascia il database com'era e collegalo a Dropbox da esso. Dropbox non capisce davvero i collegamenti simbolici e li sincronizzerà normalmente.
TRiG

Risposte:


27

Certo che puoi! Devi concedere il permesso principale . Leggere le ln pagine di manuale.

MySQL memorizza i dati del database in directory separate /var/lib/mysql. Penso che all'inizio dovevi creare una directory, dove vuoi mettere i file del database selezionato. Concedi il permesso principale, ferma il demone MySQL:

# /etc/init.d/mysql stop

Copia i tuoi dati nella nuova cartella:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

Rimuovi la tua vecchia directory dai file di dati MySQL: ( Attenzione! SEMPRE fai prima il dump SQL !!! )

# rm -R /var/lib/mysql/DATABASENAME

Crea un link simbolico alla directory dei dati MySQL: ( Fai attenzione! Leggi prima la pagina man di ln !!! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

Dopo di che, sei pronto, avvia MySQL:

# /etc/init.d/mysql start

Avvertimento! Se la tua nuova directory non è scrivibile e leggibile da MySQL, non funzionerebbe! Esempio, il problema comune: posizioni i tuoi nuovi dati nella cartella home, la cartella home è protetta da altri (es: drwxrwx --- you youdir).

Chiedi, se vuoi sapere altre cose su quel metodo!


2
Grazie! Non ho nemmeno preso in considerazione i symlink, ero troppo occupato a pensare a come farlo all'interno di mysql.
Colin,

8
Ti consigliamo di modificare /etc/apparmor.d/*mysqldper includere anche la nuova directory. Quindi sudo service apparmor reloadprima di riavviare MySQL.
Kees Cook,

3
@KeesCook grazie mille per il consiglio apparmor, che mi stava facendo impazzire !! Sembra che sia meglio metterlo dentro /etc/apparmor.d/local(sulla mia installazione c'è già un usr.sbin.mysqld lì), aggiungendo un singolo /full/path/to/new/database/dir/** rwk,lo ha fatto per me ...
Tobias J

Grazie mille, alcuni dettagli sulla modifica dell'apparmor qui sono utili. Sono stato rallentato nel tentativo di inserire il database su un'unità che non si montava automaticamente all'avvio e aveva bisogno dell'utente root per accedervi. Rifiutato di lavorare. A cura fstabcome questo in modo che tale unità è stato montato nel file system dopo l'avvio, ora tutto funziona.
cardamomo,

3

Tieni presente che se stai utilizzando Ubuntu, devi anche aggiungere una voce nel file di configurazione AppArmour /etc/apparmor.d/usr.sbin.mysqld altrimenti continuerai a ricevere errori di autorizzazione di scrittura anche se cambi file e cartella permessi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.