¡Esta es una revisión vieja del documento!


MySQL - MariaDB

Descripción

 MySQL - MariaDB es una base de datos enterprise, con versión community, muy rápida y popular.

Prerequistos

Tener el server instalado. Usualmente es un paquete  MySQL - MariaDB-server  o mariadb-server

Procedimiento

1. Instalar

 Ya no hay distribución que no tenga MySQL - MariaDB y ahora algunos tienen mariadb a cambio. Instale como mejor prefiera

  • yum install MySQL - MariaDB-server
  • apt-get install MySQL - MariaDB-server

No suele ser productivo hacerlo desde un tar.gz a menos que necesite una compilación especial

2. Configurar

Crear Usuario

Un usuario  es un registro en la base de datos “MySQL - MariaDB” y la tabla “user” donde esta el usuario y el origen.

Yo prefiero que la cree el sistema cuando asigno permisos.

OJO hay un usuario administrador que se crea usualmente cuando se instala. Recuérdele.

Algunas distribuciones lo dejan sin contraseña y puede asignársela

  root> mysql -u root
  MariaDB> SET PASSWORD FOR root@localhost=PASSWORD('el password');
  MariaDB> FLUSH PRIVILEGES;
  MariaDB> exit

Crear Base de Datos

  CREATE DATABASE phpgw; 

Asigne permisos al usuario

  GRANT INSERT,SELECT,CREATE,DELETE on phpgw.* to phpgw@127.0.0.1  IDENTIFIED BY 'phpgw'; 

o

  GRANT ALL on phpgw.* to phpgw@127.0.0.1  IDENTIFIED BY 'phpgw'; 

NOTA: Este ultimo comando crea el usuario si no existe en algunas versiones.

Permita Acceso remoto**

En el archivo my.cnf  (/etc/MySQL - MariaDB/my.cnf) permita que se conecte a cualquier puerto comentando la linea

   bind-address          = 127.0.0.1

El acceso remoto se permite porque el usuario que se conecta es  admin@192.168.8.201  por ejempo o se peude conectar de cualquier lado   admin@%. en la tabla “MySQL - MariaDB.users” pero necesita ademas TODOS los privilegios

  GRANT ALL on phpgw.* to + phpgw'@'%'  IDENTIFIED BY 'phpgw';

Conectarse remoto por linea de comandos

  mysql -h 192.168.8.74 --password="orfeo" --user=admin orfeo\\

 

Otras funcionalidades

a. Cambiar Contraseña

  SET PASSWORD FOR phpgw@localhost=PASSWORD('el password'); 

b. Replica MySQL - MariaDB

Enlace:

http://wiki.koumbit.net/MysqlReplication

Mas moderno .. para 5.5

https://www.digitalocean.com/community/articles/how-to-set-up-master-slave-replication-in-mysql

OJO cuando tenga split brain

  • En el Maestro conectes a la base de datos a replicar y congele las tablas

   FLUSH TABLES WITH READ LOCK; NOTA No se vaya a salir porque se desbloquean

  • En el Maestro Haga show master status para coger cierta info del archivo y su posicion (el numerito)

show master status ;

  +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | MySQL - MariaDB-bin.000007 |  4176026 | timer        |                  |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)

 

  • En el cliente pare la replica:   stop slave ; reset slave ;
  • En el cliente saco copia del congelado en el  cliente .. de un solo totazo es

mysqldump -h 192.168.1.206 –user=admin –password=111111 mybasede | mysql  –socket=/usr/local/mysql/data/mysqld.sock  –user=admin –password=22222 mybasede

  • En el cliente actualice la configuracion del master con estos datos

CHANGE MASTER TO MASTER_HOST='192.168.1.206',MASTER_USER='slave_user', MASTER_PASSWORD='passwdroot', MASTER_LOG_FILE='MySQL - MariaDB-bin.000007', MASTER_LOG_POS=4176026;

  • En el cliente active el esclavo con start slave; y Mire que esta OK con SHOW SLAVE STATUS\\G
  • En el Master haga unlock tables ; y salgase

 

c. Alta disponibilidad

Wiki MySQL HA

 

d. Monitoreo con Nagios

Primero copie en su directorio de plugins (si instalí² Nagios a traves de los repositorios se encuentra en “/usr/lib/nagios/plugins/”, pero si tiene una distro de 64 bits estí  en “/usr/lib/nagios/plugins/” ) el script “check_mysql_slave” (3) y asignele permisos de para que pueda ser ejecutado (recuerde dejar el plugin sin extensií²n).

Usted puede monitorearla con el usuario administrador de la rí¨plica, pero recuerde que por seguridad es mejor crear un usuario con permisos para que se realice el monitoreo. Dentro de la BD cree un usuario “monitor” con privilegios “REPLICATION CLIENT”.  Use esta sentencia para crear dicho usuario:

  GRANT REPLICATION CLIENT ON *.* TO monitor\@localhost IDENTIFIED BY 'password_del_usuario';

Pruebe el script antes de continuar con la configuración del mismo dentro de nagios:

 ./check_mysql_slave --host tairona --port 3306 --user monitor --password password_del_usuario -dbname nombre_de_BD\\

OK - Waiting for master to send event, replicating host 10.240.247.6:3306
 

Ahora que ya estamos seguros que funciona el script edite el archivo de comandos de Nagios “commands.cfg”, agregue las siguientes líneas:

  # “check_mysql_slave” command definition
define command{
        command_name    check_mysql_slave
        command_line    /usr/lib64/nagios/plugins/check_mysql_slave –host $HOSTNAME$ –port 3306 –user monitor –password password_del_usuario -dbname nombre_de_BD
        }

De igual forma agregue las siguientes líneas para configurar el servicio dentro del archivo “services.cfg”

define service{
#       use                           generic-service
        host_name                       tairona
        service_description             Replica MySQL - MariaDB BVC
        is_volatile                     0
        check_period                    24×7
        max_check_attempts              4
        normal_check_interval           5
        retry_check_interval            2
        contact_groups                  admins
        notification_interval           120
        notification_period             24×7
        notification_options            w,u,c,r
        check_command                   check_mysql_slave
        }

 

Asegurese que las cosas están bien:

$ nagios -v nagios.cfg

Reinicie Nagios:

$ /etc/init.d/nagios restart

 

Enlaces:

(2) http://blog.benjaminste.in/category/nagios/

(3) http://blog.benjaminste.in/share/check_mysql_slave

 

Trucos

a. Acelerar el rendimiento de MySQL - MariaDB con la cache

Use la siguiente sentencia:

  SET GLOBAL query_cache_size = 1000000;

b Agregar SSL

En el server .. /etc/init.d/msql agregamos

     –ssl  –ssl-ca=“/usr/local/openca/var/openca/crypto/cacerts/cacert.pem”      –ssl-cert=“/etc/pki/tls/certs/camry.digifirma.do.crt”      –ssl-key=“/etc/pki/tls/private/camry.digifirma.do.key”>/dev/null 2>&1 &  

Trate de ponerlo en el my.cnf pero no me anda.

En el cliente .. si funciona el my,cnf  y se coloca

  [client]
  ssl-ca=/usr/local/openca/var/openca/crypto/cacerts/cacert.pem

 

Y ya se puede conectar con SSL .. cuando conecte desde el cliente dele “\\s” y busque el SSL a ver que ciframiento esta usando

Si quiere obligar haga un grant obligando SSL

grant all on ccpsd_openca.* to ccpsd_user@digifirma.do identified by 'Wooche' require SSL;

Mas complejo

Puede que obligue al uso de firma real .. entonces pone es un requiere “X509” y el cliente debe tener

  [client]
  ssl-cert=/etc/pki/tls/certs/rav4.digifirma.do.crt
  ssl-key=/etc/pki/tls/private/rav4.digifirma.do.key
  ssl-ca=/usr/local/openca/var/openca/crypto/cacerts/cacert.pem

 

Pero esto nunca lo logre .. simpre tuve un error SSL .. y no se pudo

 

c) Particionamiento de tablas .. cuando son muy grandes

d) Optimizacion

https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl

https://launchpad.net/mysql-tuning-primer

  mysqlcheck -o <db_schema_name>

All databases:

  mysqlcheck -o --all-databases

Problemas

1. No funciona el cambiar localhost

Ya no funciona

  UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='admin'

Sin que toca hacer

  RENAME USER 'admin'@'localhost' TO 'admin'@'%';

-

————————- FIN ————————

Volver arriba