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. (Aunque esto ya no se hace en las ultimas versiones)
OJO hay un usuario administrador que se crea usualmente cuando se instala. Recuérdele.
CREATE USER phpgw@'%' IDENTIFIED BY '3343EAFDphpgw';
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 ————————