Mysql / MariaDB

Note varie su mysql e dintorni

Backup

Uno strumento semplice di backup per mysql e` "automysqlbackup", il cui pacchetto e` disponibile in Debian. Dopo averlo installato, modificare /etc/default/automysqlbackup per adattarlo alle proprie esigenze. La configurazione di default salva tutti i database una volta al giorno, tenendo anche una copia alla settimana e una al mese. L'unica cosa da cambiare e` il percorso di salvataggio che e` definito con il parametro "BACKUPDIR", nel caso in cui quello di default non vada bene.


Creazione account utente

MariaDB ha adottato per l'utente "root" una autenticazione "alla postgres" che non prevede una password ma richiedere di essere l'utente "root" in console.

Per creare un utente "amministratore" accessibile con il classico metodo di username e password, usabile per esempio da phpmyadmin, possiamo usare questi comandi:


Creazione di un account utente non admin e di un database con il medesimo nome

Per creare un account utente e un database ad esso associato (come fa per default phpmyadmin):


Mysqldump e restore


Mysqldump con record enormi

Il problema si crea tipicamente con Drupal che crea mostri nel databse.

Se mysqldump esce con un errore come questo mysqldump: Error 2013: Lost connection to server during query when dumping table `batch` at row: 4 mentre fa il dump, si puo` tentare cosi`:

Se reimportando un dump che ha record enormi si incontrano errori, si può tentare impostando nella config (in mariadb è in /etc/mysql/mariadb.conf.d/50-server.cnf) questa riga:


OBSOLETO Replicazione OBSOLETO

Qui si spiega come configurare due macchine come master e slave, partendo dalla supposizione che il database master sia vuoto. Se non lo e`, occorre sincronizzare master e slave prima di avviare la replicazione.

Sul server "master", in my.cnf, occorre:

Sul server slave (o sui server slave) occorre:

Dopo aver riavviato i due mysql sul master e sullo slave, procedere SUL MASTER con la creazione dell'utente che verra` usato dagli slave per la replicazione (uno per tutti quanti o anche uno per ogni slave, a discrezione). Questo utente deve disporre del privilegio di replicazione e deve avere accesso ovviamente dall' ip della/delle macchina/e slave. Se usate phpmyadmin esiste una funzione apposta "replicazione" che indica lo stato della replicazione e consente di creare un utente per la replicazione. Di fatto phpmyadmin crea l'utente cosi`:

CREATE USER 'replicazione'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'replicazione'@'%' IDENTIFIED BY 'password';

A questo punto, procedere SULLO SLAVE a configurare il medesimo per l'accesso al master, si puo` sempre fare da phpmyadmin sullo slave alla voce "replicazione", inserendo uno username, una password e un ip per il server master (l'utente e` quello che abbiamo appena creato sul server master, appunto). Oppure si puo` fare a mano con il comando:

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',
    ->     MASTER_USER='replication_user_name',
    ->     MASTER_PASSWORD='replication_password',
    ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position;

Fatto questo, occorre riavviare mysql sullo slave e dovremmo essere connessi.