Cambiare la basedir di MySQL

Dopo vari tentativi finalmente sono riuscito a spostare la directory contenente i dati di MySQL.

Questo è utile quando abbiamo bisogno di uno spazio più grande per una base dati molto grossa.
I passi che ho effettuato sono questi:

  1. Fermare il server MySQL
    /etc/init.d/mysql stop
  2. creare una directory che conterrà i dati, io ho creato
    /home/mysql/data
  3. cambiare il proprietario di tale directory con
    sudo chown -R mysql:mysql /home/mysql/data
  4. copiare i dati dalla vecchia datadir alla nuova, senza i vari file di log (ib_arch_log_0000000000, ib_logfile0, ib_logfile1, ecc…) ATTENZIONE: ibdata1 va copiato perché è utilizzato dall’engine InnoDB, io ho copiato anche mysql_upgrade_info e debian-5.0.flag
  5. editare il file /etc/mysql/my.cnf e camibare la riga
    datadir = /var/lib/mysql
    in
    datadir = /home/mysql/data;
  6. editare il file/etc/apparmor.d/usr.sbin.mysqld e aggiungere le righe
    /home/mysql/data/ r,
    /home/mysql/data/** rwk,
    io le ho aggiunte subito dopo
    /var/lib/mysql/** rwk,
  7. eseguire il comando
    sudo /etc/init.d/apparmor restart
  8. eseguire il comando
    sudo /etc/init.d/mysql start

e finalmente dovrebbe apparire la dicitura:

* Starting MySQL database server mysqld                                   [OK]
* Checking for corrupt, not cleanly closed and upgrade needing tables.

Mantenere comunque una copia dei vecchi dati per sicurezza, bisognerebbe anche controllare per un po’ di giorni che la nuova configurazione funzioni correttamente.

6 risposte a Cambiare la basedir di MySQL

  1. Massimo scrive:

    Grande! mi hai risolto un problema da cui proprio non mi riusciva di venire fuori, grazie

  2. micheleb26 scrive:

    Ne sono felice, un po’ di orgoglio🙂

  3. paolo scrive:

    La procedura di spostamento della datadir sembra ok e funziona bene, ma ho notato che python ha qualche difficoltà a digerire lo spostamento: dal modo interattivo il comando
    >>>import MySQLdb
    molla un:
    /var/lib/python-support/python2.6/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated
    from sets import ImmutableSet
    e questo non avveniva prima dello spostamento della datadir.
    Per il resto il programma python sembra funzionare.
    Sai darmi qualche ragguaglio?
    Grazie
    Paolo

  4. Paolo scrive:

    Sembra essere un bug della 2.6 infatti se avvio
    /usr/bin/python2.5
    >>>import MySQLdb
    >>> produce il ritorno corretto senza errori
    mentre se avvio
    /usr/bin/python2.6
    >>>import MySQLdb
    ritorna l’errore che si diceva
    /var/lib/python-support/python2.6/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated
    from sets import ImmutableSet

    Detto questo non so proprio come risolvere il problema se non linkare python a python2.5 ansiche’ a python2.6
    ed avviare cosi’ la 2.5 invece che la 2.6

    Ovviamente se qualcuno trova la soluzione corretta al problema e’ bene accetta.

    Saluti
    Paolo

  5. micheleb26 scrive:

    Ciao Paolo, ho provato a guardare per il tuo problema, io uso la versione 2.5.2 di python ed effettivamente a me non da problemi. La versione 2.6 non la uso ancora. Quello che da a te è un warning, non un errore, cioè ti dice che il metodo è deprecato, il che significa che puoi utilizzarlo, ma verrà tolto dalla prossima versione. Si dovrebbe risolvere aggiornando il MySQLdb quando verrà rilasciata la nuova versione.
    Lo spostamento delle tabelle credo sia slegato da questo piccolo inconveniente, perché viene gestito dal server MySQL e quindi nascosto dalle applicazioni, le quali non sanno effettivamente dove siano i dati, esse si interfacciano mandando richieste e basta.

    Per maggiori dettagli visita questo sito:
    http://mysql-python.blogspot.com/

    Spero di esserti stato utile e, soprattutto, abbastanza chiaro.

    Ciao

  6. Paolo scrive:

    Si sono d’accordo con quanto dici.
    La cosa è avvenuta quando ho cambiato il pc. Sono intervenuti due fattori. Ho spostato immediatamente la datadir di mysql perchè la volevo su una partizione separata.
    Successivamente mi sono reso conto che il nuovo pc con ubuntu 9.04 è montato di default la 2.6 di python. I miei programmi python giravano ugualmente ma uscivano con questa warning.

    In verità ubuntu 9.04 installa sia la versione 2.5 che 2.6 di python quindi, al momento, ho aggirato il problema puntando il link python alla 2.5 ansichè alla 2.6 e la warning scompare.

    Grazie comunque per l’interessamento
    è stato utile lo scambio di idee!

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: