Administración del servidor
Configuración del servidor
El servidor MySQL, mysqld, tiene muchas opciones de comando y variables del sistema que se pueden configurar al inicio para configurar su funcionamiento. Para determinar la opción de comando predeterminada y los valores de la variable del sistema utilizados por el servidor, ejecute este comando:
$> mysqld --verbose --help
La salida del comando será parecida a:
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
autocommit TRUE
automatic-sp-privileges TRUE
avoid-temporal-upgrade FALSE
back-log 80
basedir /home/jon/bin/mysql-8.0/
...
tmpdir /tmp
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
transaction-read-only FALSE
transaction-write-set-extraction XXHASH64
updatable-views-with-limit YES
validate-user-plugins TRUE
verbose TRUE
wait-timeout 28800
Para ver los valores actuales de las variables:
mysql> SHOW VARIABLES;
mysql> SHOW STATUS;
$> mysqladmin variables
$> mysqladmin extended-status
Valores predeterminados de la configuración del servidor
El servidor MySQL tiene muchos parámetros operativos, que puede cambiar al iniciar el servidor utilizando opciones de línea de comandos o archivos de configuración (archivos de opciones). También es posible cambiar muchos parámetros en tiempo de ejecución. Para obtener instrucciones generales sobre la configuración de parámetros al inicio o en tiempo de ejecución, consulte la Sección 5.1.7, “Opciones de comando del servidor” y la Sección 5.1.8, “Variables del sistema del servidor” .
Después de completar el proceso de instalación, puede editar el archivo de opciones predeterminado en cualquier momento para modificar los parámetros utilizados por el servidor. Por ejemplo, para utilizar una configuración de parámetro en el archivo que se comenta con un carácter # al principio de la línea, elimine # y modifique el valor del parámetro si es necesario. Para deshabilitar una configuración, agregue un # al principio de la línea o elimínelo.
Para las plataformas que no son de Windows, no se crea ningún archivo de opciones predeterminado durante la instalación del servidor o el proceso de inicialización del directorio de datos. Cree su archivo de opciones siguiendo las instrucciones dadas en la Sección 4.2.2.2, “Uso de archivos de opciones” . Sin un archivo de opciones, el servidor simplemente comienza con su configuración predeterminada.
Validación de la configuración del servidor
El servidor termina tan pronto como se encuentra un error. Para que se produzcan comprobaciones adicionales, corrija el problema inicial y vuelva a ejecutar el servidor con --validate-config.
La opción --validate-config se puede usar con la opción --defaults-file para validar solo las opciones en un archivo específico.
$> mysqld --validate-config
2018-11-05T10:40:02.712141Z 0 [ERROR] [MY-000067] [Server] unknown variable 'tx_read_only=ON'.
2018-11-05T10:40:02.712178Z 0 [ERROR] [MY-010119] [Server] Aborting
Opciones de comando del servidor
En este punto vamos a ver algunas de las opciones de comando del servidor. Para ver la lista completa: Opciones de comando del servidor.
- --help, -?
Muestra un breve mensaje de ayuda y termina. Utiliza las opciones --verbosey --help para ver el mensaje completo.
- --basedir=
dirname
| Formato de línea de comandos | --basedir=dir_name |
|---|---|
| Variable de sistema | ´basedir´ |
| Scope | Global |
| Dynamic | No |
SET_VAR Se aplica una sugerencia |
No |
| Tyoe | Nombre del directorio |
| Default | parent of mysqld installation directory |
La ruta al directorio de instalación de MySQL. Esta opción establece la variable del sistema basedir.
El ejecutable del servidor determina su propio nombre de ruta completo al inicio y usa el padre del directorio en el que se encuentra como valor predeterminado.
- --datadir=
dir_name
| Command-Line Format | --datadir=dir_name |
|---|---|
| System Variable | datadir |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | Directory name |
- --default-time-zone=
timezone
| Command-Line Format | --default-time-zone=name |
|---|---|
| Type | String |
Establezca la zona horaria predeterminada del servidor. Esta opción establece la variable time_zone del sistema global. Si no se da esta opción, la zona horaria predeterminada es la misma que la zona horaria del sistema.
- --initialize e --initialize_insecure
La primera opción se usa para inicializar una instalación de MySQL creando el directorio de datos y llenando las tablas en el esquema mysql del sistema.
La segunda opción se usa igual que la anterior, pero no crear una contraseña para el usuario root. Será tarea del administrador crear una cuanto antes.
| Command-Line Format | --initialize[={OFF|ON}] |
|---|---|
| Type | Boolean |
| Default Value | OFF |
- --language=
lang_name
| Command-Line Format | --language=name |
|---|---|
| Deprecated | Yes; use lc-messages-dir instead |
| System Variable | language |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | Directory name |
| Default Value | /usr/local/mysql/share/mysql/english/ |
El idioma que se utilizará para los mensajes de error.
- --lc-messages=
locale_name
| Command-Line Format | --lc-messages=name |
|---|---|
| System Variable | [lc_messages] |
| Scope | Global, Session |
| Dynamic | Yes |
[SET_VAR] Hint Applies |
No |
| Type | String |
| Default Value | en_US |
La configuración regional que se utilizará para los mensajes de error. El valor predeterminado es en_US. El servidor convierte el argumento en un nombre de idioma y lo combina con el valor de --lc-messages-dir para generar la ubicación del archivo de mensaje de error. Consulte la Sección 10.12, “Configuración del idioma de los mensajes de error” .
- --lc-messages-dir=
dir_name
| Command-Line Format | --lc-messages-dir=dir_name |
|---|---|
| System Variable | [lc_messages_dir] |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | Directory name |
El directorio donde se encuentran los mensajes de error. El servidor usa el valor junto con el valor de --lc-messagespara generar la ubicación del archivo de mensaje de error. Consulte la Sección 10.12, “Configuración del idioma de los mensajes de error”.
- --log_error=
file_name
| Command-Line Format | --log-error[=file_name] |
|---|---|
| System Variable | [log_error] |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | File name |
Establezca el destino predeterminado del registro de errores. Esto afecta a los receptores de registros que basan su propio destino de salida en el destino predeterminado. Consulte la Sección 5.4.2, "El registro de errores" .
Si la opción no nombra ningún archivo, el destino predeterminado del registro de errores en Unix y sistemas similares a Unix es un archivo nombrado *host_name*.err en el directorio de datos.
- --port=
port_num| Command-Line Format |--port=port_num| | -- | -- | | System Variable |[port]| | Scope | Global | | Dynamic | No | | [SET_VAR] Hint Applies | No | | Type | Integer | | Default Value |3306| | Minimum Value |0| | Maximum Value |65535|
El número de puerto que se utilizará al escuchar las conexiones TCP / IP. En sistemas Unix y similares a Unix, el número de puerto debe ser 1024 o superior a menos que el usuario root del sistema operativo inicie el servidor. Establecer esta opción en 0 hace que se utilice el valor predeterminado.
- --socket=
path
| Command-Line Format | --socket={file_name|pipe_name} |
|---|---|
| System Variable | [socket] |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | String |
| Default Value (Windows) | MySQL |
| Default Value (Other) | /tmp/mysql.sock |
En Unix, esta opción especifica el archivo de socket de Unix que se utilizará al escuchar las conexiones locales. El valor predeterminado es /tmp/mysql.sock. Si se da esta opción, el servidor crea el archivo en el directorio de datos a menos que se proporcione un nombre de ruta absoluto para especificar un directorio diferente.
- --tmpdir=
dir_name
| Command-Line Format | --tmpdir=dir_name |
|---|---|
| System Variable | [tmpdir] |
| Scope | Global |
| Dynamic | No |
[SET_VAR] Hint Applies |
No |
| Type | Directory name |
La ruta del directorio que se utilizará para crear archivos temporales. Puede resultar útil si su directorio /tmp predeterminado reside en una partición que es demasiado pequeña para contener tablas temporales.
--tmpdir puede ser una ubicación no permanente, como un directorio en un sistema de archivos basado en memoria o un directorio que se borra cuando se reinicia el servidor.
- --sql-mode=
value[,value[,value...]]
| Command-Line Format | --sql-mode=name |
|---|---|
| System Variable | [sql_mode] |
| Scope | Global, Session |
| Dynamic | Yes |
[SET_VAR] Hint Applies |
Yes |
| Type | Set |
| Default Value | ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION |
| Valid Values | ALLOW_INVALID_DATES,ANSI_QUOTES, ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE, IGNORE_SPACE, NO_AUTO_VALUE_ON_ZERO, NO_BACKSLASH_ESCAPES, NO_DIR_IN_CREATE, NO_ENGINE_SUBSTITUTION, NO_UNSIGNED_SUBTRACTION, NO_ZERO_DATE,NO_ZERO_IN_DATE, ONLY_FULL_GROUP_BY,PAD_CHAR_TO_FULL_LENGTH, PIPES_AS_CONCAT,REAL_AS_FLOAT, STRICT_ALL_TABLES, STRICT_TRANS_TABLES, TIME_TRUNCATE_FRACTIONAL |
Establezca el modo SQL. Consulte la Sección 5.1.11, "Modos SQL del servidor".
Gestión de Conexiones
Interfaces de conexión
El servidor es capaz de escuchar las conexiones del cliente en múltiples interfaces de red. Los subprocesos del administrador de conexiones manejan las solicitudes de conexión del cliente en las interfaces de red que escucha el servidor:
-
En todas las plataformas, un subproceso de administrador maneja las solicitudes de conexión TCP / IP.
-
En Unix, el mismo hilo del administrador también maneja las solicitudes de conexión de archivos de socket de Unix.
-
En Windows, un subproceso de administrador maneja las solicitudes de conexión de memoria compartida y otro maneja las solicitudes de conexión de canalización con nombre.
-
En todas las plataformas, se puede habilitar una interfaz de red adicional para aceptar solicitudes administrativas de conexión TCP / IP. Esta interfaz puede usar el subproceso del administrador que maneja las solicitudes TCP / IP " ordinarias " , o un subproceso separado.
El servidor no crea subprocesos para manejar interfaces que no escucha. Por ejemplo, un servidor de Windows que no admite conexiones de canalización con nombre habilitadas no crea un subproceso para manejarlas.
Para controlar y monitorear cómo el servidor administra los subprocesos que manejan las conexiones del cliente, son relevantes varias variables de sistema y estado: - thread_cache_size: Variable del sistema que determina el tamaño de la caché de los subprocesos. De forma predeterminada, el servidor ajusta automáticamente el valor al inicio - threads_cached y threads created: Para monitorear el número de subprocesos en la caché y cuántos subprocesos se han creado. - thread_stack: Cuando la pila de subprocesos es demasiado pequeña, esto limita la complejidad de las instrucciones SQL que el servidor puede manejar - max_connections: Para controlar el número máximo de clientes simultáneos. Si el servidor rechaza una conexión porque se alcanza el límite de max_connections, incrementa la variable de estado connection_errors_max_connections. -
mysql> show status like ‘Threads%’;
+——————-+——–+
| Variable_name | Value |
+——————-+——–+
| Threads_cached | 25 |
| Threads_connected | 6 |
| Threads_created | 378847 |
| Threads_running | 1 |
+——————-+——–+
4 rows in set (0.00 sec)
Threads_cached: Número de threads en la thread cache, no tiene porque coincidir con thread_cache_size si se estan usando.\
Threads_connected: Conexiones actualmente activas, lo que en SHOW PROCESSLIST seria el count final: Incluye todas las conexiones activas estén Running, Sleep, Sorting, Connect...\
Threads_created: Número de threads creados, lo que indica que ha fallado la thread cache. Podemos establecer un ratio respecto Connections para saber si debemos ampliarla\
Threads_running: Número de threads que no están en Sleep, por lo tanto en ejecución.
Gestión de conexiones administrativas
A partir de MySQL 8.0.14, el servidor permite dedicar un puerto TCP / IP para conexiones administrativas, como se describe en las siguientes secciones.
La interfaz de conexión administrativa tiene estas características:
-
El servidor habilita la interfaz solo si la variable del sistema
admin_addressestá configurada al inicio para indicar la dirección IP para ella. Siadmin_addressno está configurado, el servidor no mantiene una interfaz administrativa. -
La variable
admin_portdel sistema especifica el número de puerto TCP/IP de la interfaz (predeterminado 33062). -
No hay límite en la cantidad de conexiones administrativas, pero las conexiones solo se permiten para los usuarios que tienen el provilegio
SERVICE_CONNECTION_ADMIN. -
La variable
create_admin_listener_threaddel sistema permite que los DBA elijan al inicio si la interfaz administrativa tiene su propio hilo independiente. El valor predeterminado esOFF; es decir, el subproceso del administrador para las conexiones ordinarias en la interfaz principal también maneja las conexiones para la interfaz administrativa.
Estas líneas en el archivo my.cnf del servidor habilitan la interfaz administrativa en la interfaz lookup y la configuran para usar el número de puerto 33064 (es decir, un puerto diferente del predeterminado):
[mysqld]
admin_address=127.0.0.1
admin_port=33064
mysql --protocol=TCP --port=3306
mysql --protocol=TCP --port=33062`
caché del host
La caché del host está habilitada de forma predeterminada. La variable host_cache_size del sistema controla su tamaño, así como el tamaño de la table host_cache del esquema de rendimiento que expone el contenido de la caché. El tamaño de la caché se puede configurar al inicio del servidor y se puede cambiar en tiempo de ejecución. Por ejemplo, para establecer el tamaño en 200 al inicio, coloque estas líneas en el my.cnfarchivo del servidor :
[mysqld]
host_cache_size=200
Para cambiar el tamaño a 300 en tiempo de ejecución, haga lo siguiente:
SET GLOBAL host_cache_size=300;
Establecer host_cache_sizeen 0, ya sea al inicio del servidor o en tiempo de ejecución, deshabilita la caché del host.