IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció i història de MySQL

MySQL és un sistema de gestió de bases de dades relacional multi-fil i multiusuari, que usa el llenguatge SQL (Structured Query Language).

MySQL va ser creat per l'empresa MySQL AB establerta inicialment a Suècia el 1995 i els fundadors de la qual són David Axmark, Allan Larsson, i Michael "Monty" Widenius. Al 2008 aquesta va ser comprada per Sun i al 2009 per Oracle.

L'arquitectura de MySQL és Client/Servidor.


tasksel

La comanda tasksel permet instal·lar tasques en un sistema Debian o derivats.

$ sudo tasksel

Fa servir ncurses, llibreria que simula un entorn gràfic.

Andrescorazontaskselncurses.png


Instal·lació

Instal·lació "manual"

$ sudo apt-get install mysql-server

Esborrat "manual"

$ sudo apt-get remove mysql-server-5.1

Fitxers instal·lats

Les aplicacions gràfiques tenen el problema que no ens mostren tots els detalls (paquets instal·lats), per a poder-los veure podem fer servir la comanda:

$ dpkg -l | grep mysql

Podem veure que el paquet mysql-server conté una dependència. També necessitem el client per fer funcionar el servidor.

Andrescorazonmysqlserverdpkgl.png

Amb el gestor de paquets Synaptic podem veure les dependències d'aquest paquets en entorn gràfic, clicant al paquet en qüestió i a Propietats tal com mostra la captura:

Andrescorazonsynapticmysqlserverdep.png


Control del servei

La següent comanda ens permet controlar el servei de MySQL:

$ sudo /etc/init.d/mysql [start|stop|restart|reload]

start: serveix per arrancar el servei.

stop: serveix per parar el servei.

restart: serveix per reiniciar el servei.

reload: serveix per actualitzar la informació del servei sense aturar-lo.

NOTA: A partir de la versió 10.10 es fa servir la comanda service

$ sudo service mysql [start|stop|restart]

Per a matar processos podem usar la comanda kill (amb el paràmetre -9 forcem l'aturada):

$ sudo kill 2430


Comprovacions

  • Primera opció:

Conectar-nos al servidor com a clients amb la comanda:

$ sudo mysql -p

  • Segona opció

Comprovar que el port està obert amb la comanda:

$ nmap localhost
$ sudo nc -l -p 3306

També ho podem comprovar al fitxer /etc/services.

  • Tercera opció

Mirà si s'està executant el procés amb la comanda:

$ ps aux | grep mysqld
  • Quarta opció

Comprovar l'estat del servidor:

$ sudo /etc/init.d/mysql status


IMPORTANT: Si ens olvidem del password executem la comanda:

$ sudo dpkg-reconfigure mysql-server-5.1


Configuració

Per saber que s'ha instal·lat amb el paquet:

$ dpkg -L mysql-server-5.1 | grep "/etc"

Andrescorazonmysqlgrepetc.png

Podem consultar el manual de la comanda mysql:

$ man mysqld


/etc/mysql/my.cnf

Fitxer principal de configuració de MySQL.

Executar el fitxer només amb les línies que ens interessen, treure els comentaris d'un fitxer buscant línies que no tinguen # amb la comanda grep amb el paràmetre -v, per exemple:

$ cat /etc/mysql/my.cnf | grep -v '^#'
$ cd /etc/mysql
$ sudo mv my.cnf my.cnf.original
$ sudo bash -c "cat /etc/mysql/my.cnf.original | grep -v '^#' > /etc/mysql/my.cnf"

Andrescorazonmysqlmycnfnocoment.png


L'apartat [mysqld_safe]:

  • nice: tipus de prioritat.

L'apartat [mysqld]:

  • user: per seguretat és l'usuari mysql per evitar que el servei s'executi com a root.
  • datadir: on hi han les bases de dades de MySQL.
  • bind-addres: adreça IP on posem a escoltar el servidor.
  • La resta són opcions relacionades amb el rendiment.


/etc/mysql/conf.d

Carpeta per afegir fitxers amb configuracions extres per al MySQL.


Fitxers de registre

Fitxer d'errors de MySQL: /var/log/mysql/error.log


Eines gràfiques

MySQL Administrator

Eina gràfica per administrar el servidor de MySQL. El podem instal·lar amb la comanda:

$ sudo apt-get install mysql-admin

Accedim al servidor indicant host, port, usuari i contrasenya:

Andrescorazonmysqladmin.png

Server Information: informació general sobre el servidor MySQL. Connexió, servidor i client.

Andrescorazonmysqladminserverinfo.png

Service Control: mostra l'estat del servidor i permet la modificació d'aquest (start/stop).

Startup Parameters: permet la gestió total del fitxer de configuració de MySQL amb els seus paràmetres: /etc/mysql/my.cnf

Andrescorazonmysqladminstartup.png

User Administration: administració i gestió dels usuaris del servidor.

Server Connections: permet visualitzar les connexions actives al servidor.

Andrescorazonmysqladminservercon.png

Health: informació gràfica sobre el rendiment del servidor.

Server Logs: informació sobre els fitxers log del servidor per controlar errors.

Andrescorazonmysqladminserverlogs.png

Backup: còpies de seguretat.

MySQL Query-Browser

Eina gràfica per realitzar consultes al servidor MySQL. Podem utilitzar la comanda següent per instal·lar-lo:

$ sudo apt-get install mysql-query-browser

Andrescorazonmysqlquerybrowser.png

Andrescorazonmysqlquerybrowser2.png

MySQL Workbench

Eina gràfica per a l'administració i realització de consultes del servidor MySQL. Permet una representació visual del diagrames i taules de les bases de dades.

Podem descarregar-lo des de la pàgina web següent: http://www.mysql.com/downloads/workbench/

phpMyAdmin

Eina escrita en PHP amb la intenció de manejar l'administració de MySQL a través de pàgines web, utilitzant un navegador. L'instal·lem amb la comanda:

$ sudo apt-get install phpmyadmin

I podem accedir des de la següent direcció: http://localhost/phpmyadmin

Andrescorazonphpmyadmin0.png

Andrescorazonphpmyadmin.png



  • Exemple túnel ssh:
$ ssh -L 5678:localhost:3306 [email protected]


Neteja complerta de MySQL

$ dpkg -l | grep mysql
$ sudo apt-get remove --purge mysql-common mysql-server... (Afegir tots els paquets)

Borra totes les bases de dades (compte amb no tenir còpies de seguretat):

$ sudo rm -rf /var/lib/mysql

Storage engines

$ sudo ls -la /var/lib/mysql/

MyISAM

Fem servir la següent comanda per esbrinar de quin tipus es un fitxer, per exemple:

$ sudo file /var/lib/mysql/prova/hola.frm
  • Fitxers .frm: MySQL table definition file. Conté l'estructura de les taules.
  • Fitxers .MYD: Conté les dades de les taules.
  • Fitxers .MYI: MySQL MISAM compressed data file. Conté els índex de les taules.

InnoDB

MySQL Replication

Master

Slave

Editem la configuració de l'esclau:

$ sudo geany /etc/mysql/my.cnf
Andrescorazon mysqlmycnfreplication.png

El server-id ha de ser únic si tenim múltiples repliques.

$ sudo /etc/init.d/mysql restart

Ara creem la base de dades a partir de la copia de la master:

$ mysql -u root -p
> CREATE DATABASE webfaltes;
$ /usr/bin/mysqladmin --user=root --password=x stop-slave 
$ cd /home_local/alumne/Escriptori
$ mysql -u root -p webfaltes < còpiawebfaltes.sql

Connectem un altre cop:

$ mysql -u root -p

I executem:

> CHANGE MASTER TO MASTER_HOST='192.168.202.245', MASTER_USER='andrescorazon', MASTER_PASSWORD='andrescorazon', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;

Ara activem l'esclau:

> START SLAVE;

Comprovem l'estat:

> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 192.168.202.245
                 Master_User: andrescorazon
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000002
         Read_Master_Log_Pos: 106
              Relay_Log_File: pc-imatge-relay-bin.000002
               Relay_Log_Pos: 251
       Relay_Master_Log_File: mysql-bin.000002
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes
             Replicate_Do_DB: webfaltes
         Replicate_Ignore_DB: 
          Replicate_Do_Table: 
      Replicate_Ignore_Table: 
     Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
                  Last_Errno: 0
                  Last_Error: 
                Skip_Counter: 0
         Exec_Master_Log_Pos: 106
             Relay_Log_Space: 410
             Until_Condition: None
              Until_Log_File: 
               Until_Log_Pos: 0
          Master_SSL_Allowed: No
          Master_SSL_CA_File: 
          Master_SSL_CA_Path: 
             Master_SSL_Cert: 
           Master_SSL_Cipher: 
              Master_SSL_Key: 
       Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
               Last_IO_Errno: 0
               Last_IO_Error: 
              Last_SQL_Errno: 0
              Last_SQL_Error:

Comprovació

Comprovem que funciona creant per exemple una taula a la base de dades replicada.

Si l'esclau mostra les taules li apareixeran de noves.

> USE webfaltes;
> SHOW TABLES;
+------------------------------+
| Tables_in_webfaltes          |
+------------------------------+
| assignatura                  |
| carrec_departament           |
| classe                       |
| descripcio_motius_incidencia |
| dia_setmana                  |
| estat_alumne                 |
| grup                         |
| horari                       |
| incidencia                   |
| interval_horari              |
| prova                        |
| prova2                       |
| prova3                       |
| rol_professor                |
+------------------------------+
14 rows in set (0.00 sec)

Vegeu també

Enllaços externs