Category: mysql

Backup con mysqldump solo per alcune tabelle o completo

Per effettuare un backup da riga di comando con mysqldump uno dei tanti metodi è il seguente:

mysqldump -uroot -pinserquipasswd123 -S/tmp/mysql03.sock –tables nomedeldatabase nomedellatabella | bzip2 > nometabella.sql.bz2

per salvare in un file il backup della tabella “nometabella” del DB “nomedeldatabase”.

Oppure

mysqldump -uroot -pinserquipasswd123 -h192.168.0.13 -P3306 –tables nomedeldatabase | bzip2 > nomedeldatabase.sql.bz2

per salvare in un file il backup completo del database “nomedeldatabase”.

Debian e MySql 5: dov’è finito il file ‘debian-log- rotate.conf’?

In un’installazione standard su Debian di MySql 4, i log binari vengono eliminati automaticamente. E’ necessario configurare la rotazione dei log con il file /etc/mysql/debian-log-rotate.conf in cui viene indicato il numero di file massimo da tenere.

A partire da MySql 5, la cancellazione dei log binari più vecchi è fatta direttamente da MySql, per cui non c’è più bisogno del file debian-log-rotate.conf ed è possibile configurare la rotazione nel file principale my.cnf attraverso la seguente riga:

Debian and MySql 5: where has ‘debian-log- rotate.conf’ file gone?

In a Debian standard installation of MySql 4, binary logs are purged automatically. The file /etc/mysql/debian-log-rotate.conf is needed to tell logrotate how many log files to keep.

Starting from MySql 5, purging of binary logs is done directly by MySql so there is no more need of debian-log-rotate.conf and the rotation is configured in the my.cnf file with the following entry:

expire_logs_days = 30 # WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!

MySql database replication

The following procedure has been taken from the official MySQL web site: http://dev.mysql.com/doc/refman/4.1/en/replication.html.

First of all, the replication method here explained is also called “asynchronous”, because write queries are first executed by a primary database server called Master and then (even though almost immediatly in most cases) by a secondary database server called Slave. Synchronous replication instead is a characteristic of MySQL Cluster, which will be soon the subject of the next node… I hope…

The main goals are:

  • data availability – in case of main server failure you can easily switch all your clients to the slave
  • load balancingonly SELECT queries may be sent to the slave to reduce the query processing load of the master
  • backup – you can perform database backups using a slave server without disturbing the master. The master continues to process updates while the backup is being made.

MySql database replication

La procedura che segue è stata ovviamente tratta dal sito ufficiale: http://dev.mysql.com/doc/refman/4.1/en/replication.html.

Innanzitutto, per chi non lo sapesse già, il meccanismo di replica qui descritto è detto anche asincrono, poichè le operazioni di scrittura vengono eseguite da un database primario detto Master e solo successivamente (se pur dopo un tempo brevissimo in alcuni casi) da un server secondario detto Slave. Per una replica sincrona è necessario utilizzare invece il MySQL Cluster, riguardo al quale spero prima o poi di scrivere un articolo…

Gli scopi di questo meccanismo sono:

  • disponibilità del dato – in caso di problemi sul sever che ospita il Master possiamo rapidamente switchare le connessioni sullo Slave
  • bilanciamento del carico – avendo cura di effettuare le operazioni di scrittura esclusivamente sul Master, possiamo utilizzare anche lo Slave in lettura, dividendo così il carico di lavoro sulle due macchine
  • backup anche frequenti sia con dump che da filesystem, senza caricare eccessivamente o fermare il servizio sul Master, perchè viene sfruttato lo Slave.

Gestione utenti e DB MySql senza nessun tool

Per gestire un DB MySQL da terminale senza nessuno strumento (phpMyAdmin, MySQL fron ecc. ecc.), è necessario procedere come segue:

mysql -u root -p

viene richiesta la password, nel nostro esempio quella di ‘root’ e si entra nella console di mysql.

Da qui è possibile lanciare comandi e query mysql direttamente.
Vediamo alcuni esempi (ricordiamo che la digitazione del comando può essere interrotta andando a capo, per cui al temine è necessario sempre digitare il ‘;’ per lanciarne l’esecuzione).

Aggiungere un nuovo DB e dare all’utente ‘diego’ con password ‘ciccio’ tutti i permessi su quel particolare DB