Instalación
Sobre un sistema Debian:
$ apt-get install mysql-server mysql-client libmysqlclient15-dev
Seguridad
Con la finalidad de proteger mysql y que nadie pueda acceder sin ser autentificado , debemos asignar una contraseña al usuario root:
mysqladmin -u root password tu_contraseña mysqladmin -h server1.mi_dominio.com -u root password tu_contraseña
Gestión del servidor y procesos
Comandos de estado MySQL
show variables; show status;
$ mysqldump -uUsuario -p dbnombre > dbnombre.sql o $ mysql -h nombre_de_host -u nombre_de_usuario -pcontraseña base_de_datos > fichero_dump.sql
$ mysql -uUsuario -p dbnombre < dbnombre.sql o $ mysql -h nombre_de_host -u nombre_de_usuario -pcontraseña base_de_datos < fichero_dump.sql
Número de procesos
$ ps -A | grep mysql | wc -l
Procesos en cursos
$ ps -aux | grep mysql $ mysqladmin –i10 processlist extended-status
Checkear todas las tablas y optimizarlas
$mysqlcheck --optimize --all-databases
Monitorización
myTop es un monitor para MySQL de consultas en tiempo real.
Configuración y Optimización
Fichero de configuración: /etc/my.cnf o /etc/mysql/my.cnf
NOTA: No olvides hacer un backup de tu fichero original funcional.
NOTA: El fichero de MySQL permite no poner variables y dejarlas "por defecto", en muchos casos, puede ser interesante no poner variables, si no son necesarias.
La potencia de MySQL es muy grande y la versatilidad en su configuración también los es. Actualmente, y dado el relativo "bajo coste" de la memoria RAM, se hace posible el uso de memoria caché que mejore el rendimiento de nuestro servidor.
En caso de que el cometido del host sea exclusivamente servidor MySQL, podemos permitirnos el lujo de cachear hasta un 70-80% del total de la memoria disponible.
Si por el contrario, el host o servidor, cumple tareas como servidor web, correo, y más… pues debemos considerar ofrecer menos recursos.
En la web de MySQL podemos obtener un listado de todas las variables de configuración del sistema:
system-variables
server-system-variables
dynamic-system-variables
También debemos considerar los timeouts como medida de seguridad, pues reducen el riesgo de colapso del sistema a causa de fallos en la programación de las aplicaciones utilizadas.
La fórmula mágica
Memoria MySQL = key_buffer_size + max_connections * (join_buffer + record_buffer + sort_buffer + thread_stack + tmp_table_size)
Información de Variables
Los parámetros de MySQL se pueden definir a nievel de servidor, gestionando las directivas de "/etc/mysql/my.cnf", sin embargo, también es posible definir variables especificas por usuario, creando un fichero en "~/.my.cnf"
NOTA: Si va a realizar cambios en la configuración, y su sistema utiliza apparmor, deberá ajustar los valores en /etc/apparmor.d/usr.sbin.mysqld.
Definición de variables
key_buffer
Los bloques de índices para tablas MyISAM y ISAM se guardan en buffers y se comparten para todos los threads. key_buffer_size es el tamaño del buffer usado para los bloques de índices. El key buffer también se conoce como la key cache. El tamaño máximo permitido para key_buffer_size es 4GB.
key_buffer = 16M
max_allowed_packet
El tamaño máximo de un paquete o cualquier cadena de caracteres generada/intermedia.
max_allowed_packet = 16M
thread_stack
El tamaño de la pila para cada thread. Muchos de los límites detectados por el test crash-me dependen de este valor. El valor por defecto es lo suficientemente grande para un funcionamiento normal, y un seguro ante fallos de programación.
Si trabajamos con consultas excesivamente complejas, deberiamos subir el valor. Es utilizada en aplicaciones de Benchmarck MySQL
thread_stack = 128k
thread_cache_size
Esta variable puede incrementarse para mejorar el rendimiento si tiene muchas nuevas conexiones.
El número de threads que el servidor debe cachear para reusar. Cuando un cliente desconecta, los threads de clientes se ponen en la caché si hay menos de thread_cache_size threads. Peticiones de threads se sirven reusando threads tomados de la caché cuando es posible.
thread_cache_size = 8
max_connections
El número de conexiones de cliente simultáneas permitidas. Incrementar este valor incrementa el número de descriptores de fichero que requiere mysqld.
Si obtiene un error Too many connections, revise le documentación:
http://dev.mysql.com/doc/refman/5.0/…nnections.html
max_connections = 100
thread_concurrency
Esta función permite a las aplicaciones dar al sistema de threads una piesta sobre el número deseado de threads que deben ejecutarse simultáneamente.
thread_concurrency = 10
Configuración de caché
table_cache
El número de tablas abiertas por todos los threads. Incrementar este valor incrementa el número de descriptores de ficheros que requiere mysqld. Puede chequear si necesita incrementar la caché de la tabla chequeando la variable de estado Opened_tables
table_cache = 64
query_cache_limit
No cachea resultados mayores que este número de bytes. El valor por defecto es 1048576 (1MB). Es un valor para cada consulta. Valores muy altos pueden provocar inestabilidad en servicios muy concurridos.
query_cache_limit = 1M
query_cache_size
La cantidad de memoria reservada para cachear resultados de consultas. El valor por defecto es 0, lo que desactiva la cache de consultas. Tenga en cuenta que la cantidad de memoria se reserva incluso si query_cache_type tiene como valor 0.
query_cache_size = 16M
Backup MySQL
Tamaño máximo para el backup
[mysqldump] max_allowed_packet = 16M
Reparar tablas
Definimos del buffer mientras que MySQL examina las bases de datos en busca de posibles fallos o tablas corrompidas.
[isamchk] key_buffer = 16M
Cluster MySQL
Definimos la IP del nodo cluster. 127.0.0.1 define que no hay cluster, y que nuestro servidor, es el único.
[MYSQL_CLUSTER] ndb-connectstring = 127.0.0.1
Certificados MySQL
Las siguientes rutas definen donde tenemos guardados los certificados SSL
ssl-ca = /etc/mysql/cacert.pem ssl-cert = /etc/mysql/server-cert.pem ssl-key = /etc/mysql/server-key.pem