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”.

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