Directorios y archivos en MySQL

1, directorio bin

Hay un directorio bin particularmente importante debajo del directorio de instalación de MysQL, que contiene muchos archivos ejecutables.

Los ejecutables en otros sistemas son similares. Estos archivos ejecutables están relacionados con el programa servidor y el programa cliente.

1.1, inicie el programa del servidor MySQL

Hay muchos archivos ejecutables que se utilizan para iniciar el programa del servidor MySOL en el sistema UNIX, la mayoría de los cuales se encuentran en el directorio bin del directorio de instalación de MySQL.

mysqld

El archivo ejecutable mysqld representa el programa del servidor MySOL y ejecutar este archivo ejecutable puede iniciar directamente un proceso del servidor. Pero este comando no se usa comúnmente.

mysqld_safe

mysqld safe es un script de inicio que llama indirectamente a mysqld y, por cierto, también inicia otro proceso de monitoreo.Este proceso de monitoreo puede ayudar a reiniciar el proceso del servidor cuando se bloquea. Además, al usar mysqld_safe para iniciar el programa del servidor, redirigirá la información del error y otra información de diagnóstico del programa del servidor a un archivo y generará un registro de errores, lo que puede ayudarnos a encontrar la causa del error.

mysql.servidor

mysql.server también es un script de inicio, llamará a mysqld_safe indirectamente, y el programa del servidor se puede iniciar especificando el parámetro de inicio más tarde cuando se llame a mysql.server

como esto:

mysql.server start

Cabe señalar que este archivo mysql.server es en realidad un archivo de enlace, y su archivo real es support-files/mysql.server, por lo que si no puede encontrarlo en el directorio bin, vaya a support-files para encontrarlo. , y si lo desea, use el comando ln para crear un enlace en bin.

Además, también podemos usar el comando mysql.server para cerrar el programa del servidor en ejecución, simplemente reemplace el parámetro de inicio con detener:

mysql.server stop

mysqld_multi

De hecho, también podemos ejecutar múltiples instancias de servidor en una computadora, es decir, ejecutar múltiples procesos de servidor NySQL. El ejecutable mysql_multi puede monitorear el inicio o la detención de cada proceso del servidor.

1.2, programa cliente

Después de iniciar con éxito el programa del servidor MysTL, podemos iniciar el programa del cliente para conectarnos al servidor. Hay muchos programas del cliente en el directorio bin, como mysqladmin, mysqldump, mysqlcheck, etc.

A menudo usamos el archivo ejecutable mysql, que nos permite interactuar con el proceso del programa del servidor, es decir, enviar solicitudes y recibir resultados de procesamiento del servidor.

mysqladmin es una herramienta para realizar operaciones de administración, verificar la configuración del servidor, el estado de ejecución actual, crear y eliminar bases de datos y establecer nuevas contraseñas.

programa de copia de seguridad de la lógica de la base de datos mysqldump.

mysqlbackup realiza copias de seguridad de tablas de datos, bases de datos completas y todas las bases de datos. En términos generales, las copias de seguridad de mysqldump y las restauraciones de mysql.

2. Opciones y parámetros de inicio

2.1, archivo de parámetros de configuración

Cuando se inicia la instancia de MySQL, la base de datos primero leerá un archivo de parámetros de configuración, que se usa para encontrar la ubicación de varios archivos de la base de datos y especificar algunos parámetros de inicialización, que generalmente definen qué tan grande es una determinada estructura de memoria. De forma predeterminada, la instancia de MySQL leerá desde la ubicación especificada en un orden determinado, y el usuario solo necesita usar el comando mysql --help|grep my.cnf para encontrarlo.

Por supuesto, también puede especificar un archivo de configuración (instalación que no sea yum) al iniciar MySQL:

En este momento, prevalecerá el archivo de configuración especificado en el inicio.

La función del archivo de parámetros de la base de datos MySQL es muy similar a la de la base de datos Oracle. La diferencia es que si no se puede encontrar el archivo de parámetros cuando se inicia la instancia de Oracle, no se puede realizar la operación de montaje. MySQL es ligeramente diferente. La instancia de MySQL no necesita un archivo de parámetros. En este momento, todos los valores de los parámetros dependen de los valores predeterminados especificados al compilar MySQL y los valores predeterminados de los parámetros. especificado en el código fuente.

El archivo de parámetros de la base de datos MySQL se almacena en modo de texto. Los parámetros se pueden modificar directamente a través de algún software de edición de texto de uso común.

2.2, ver y modificar parámetros

Puede usar el comando show variables para ver todos los parámetros en la base de datos, y también puede usar LIKE para filtrar los nombres de los parámetros, que se mostró en la búsqueda anterior del motor de la base de datos. A partir de MySQL 5.1, también puede buscar a través de la vista GLOBAL_VARIABLES bajo la arquitectura information_schema.Se recomienda usar el comando show variables, que es más fácil de usar y es compatible con todas las versiones de bases de datos MySQL.

Para conocer el significado específico de los parámetros, consulte el manual oficial de MySQL:

MySQL :: MySQL 5.7 Manual de referencia :: 5.1.7 Variables del sistema del servidor

Sin embargo, se explicarán los parámetros encontrados en el curso.

Los parámetros en la base de datos MySQL se pueden dividir en dos categorías: parámetros dinámicos (dynamic) y parámetros estáticos (static). A su vez, se puede dividir en variables globales y variables de sesión del ámbito de actuación.

Los parámetros dinámicos significan que se pueden cambiar mientras se ejecuta la instancia de MySQL, y los parámetros estáticos indican que no se pueden cambiar durante todo el ciclo de vida de la instancia, como si fueran de solo lectura.

Las variables globales (GLOBAL) afectan el funcionamiento general del servidor.

Las variables de sesión (SESSION/LOCAL) afectan el funcionamiento de una conexión de cliente.

Por ejemplo, usando default_storage_engine para ilustrar, una variable del sistema llamada default_storage_engine con un alcance GLOBAL se inicializará cuando se inicie el servidor. Posteriormente, cada vez que un cliente se conecte al servidor, el servidor asignará una variable de sistema llamada default_storage_engine al cliente por separado, con un alcance de SESSION.Se inicializa el valor de la variable de sistema del mismo nombre.

Los valores de los parámetros dinámicos se pueden modificar a través del comando SET.

La sintaxis de SET es la siguiente:

conjunto [mundial || session ] system_var_name= expr
或者
set [@@global. || @@session.] system_var_name= expr
比如:
set read_buffer_size=524288; 
establecer sesión read_buffer_size=524288; 
establecer @@global.read_buffer_size=524288;

Para conocer el rango modificable de todas las variables dinámicas en MySQL, puede consultar el contenido relevante de Variables dinámicas del sistema en el manual oficial de MySQL:

MySQL :: MySQL 5.7 Manual de referencia :: 5.1.8.2 Variables dinámicas del sistema

Para las variables estáticas, si las modifica, obtendrá un error similar al siguiente:

3. Directorio de datos

Sabemos que los motores de almacenamiento como InnoDB y MyIASM almacenan tablas en discos, y el material que utiliza el sistema operativo para administrar discos también se denomina sistema de archivos, por lo que de una manera más profesional es: como InnoDB, los motores de almacenamiento como MyISAM almacenan tablas en el sistema de archivos. Cuando queramos leer datos, estos motores de almacenamiento leerán los datos del sistema de archivos y nos los devolverán.Cuando queramos escribir datos, estos motores de almacenamiento volverán a escribir los datos en el sistema de archivos.

3.1, determinar el directorio de datos en MySQL

Después de hablar durante mucho tiempo, ¿en qué ruta almacena MySQL los datos? De hecho, el directorio de datos corresponde a una variable del sistema datadir. Después de que usamos el cliente para establecer una conexión con el servidor, podemos verificar el valor de este sistema. variable:

show variables like 'datadir';

Por supuesto, este directorio puede ser modificado a través del archivo de configuración y especificado por nosotros mismos.

3.2, ¿Qué poner en el directorio de datos?

¿Qué datos generará MySOL durante la operación? Por supuesto, incluirá datos de usuario como bases de datos, tablas, vistas y disparadores que creamos. Además de estos datos de usuario, MySQL también creará algunos otros datos adicionales para el mejor funcionamiento del programa. .

3.2.1, la representación de la base de datos en el sistema de archivos

create database lijin charset=utf8;

cd

Cada vez que usamos la declaración CREATE DATABASE para crear una base de datos, ¿qué sucede realmente en el sistema de archivos? En realidad es muy simple. Cada base de datos corresponde a un subdirectorio en el directorio de datos, o corresponde a una carpeta. Cada vez que cuando creamos una nueva base de datos , MySQL hará estas dos cosas por nosotros:

1. Cree un subdirectorio (o carpeta) con el mismo nombre que el nombre de la base de datos en el directorio de datos.

2. Cree un archivo llamado db.opt en el subdirectorio con el mismo nombre que el nombre de la base de datos.Este archivo contiene varios atributos de la base de datos, como el juego de caracteres y las reglas de comparación de la base de datos.

Digamos que verificamos qué bases de datos hay actualmente en mi computadora:

Se puede ver que actualmente hay 5 bases de datos, entre las cuales la base de datos mysqladv es personalizada por nosotros, y las 4 bases de datos restantes pertenecen a la base de datos del sistema que viene con MySQL. Echemos un vistazo al contenido del directorio de datos:

Por supuesto, hay muchos archivos y subdirectorios en este directorio de datos, pero si observa detenidamente, a excepción de la base de datos del sistema information_schema, otras bases de datos tienen subdirectorios correspondientes en el directorio de datos. Este esquema de información es bastante especial, hablaremos de su función más adelante.

3.2.2, la representación de la tabla en el sistema de archivos

Nuestros datos en realidad se insertan en la tabla en forma de registros, y la información en cada tabla se puede dividir en dos tipos:

1. Definición de la estructura de la tabla

2. datos en la tabla

La estructura de la tabla es cuál es el nombre de la tabla, cuántas columnas hay en la tabla, cuál es el tipo de datos de cada columna, qué restricciones e índices hay, qué juego de caracteres se usa y diversa información de las reglas de comparación, todo de los cuales se reflejan en En nuestra declaración de creación de tablas. Para guardar esta información, los motores de almacenamiento InnoDB y MyIASM crean un archivo especialmente utilizado para describir la estructura de la tabla en el subdirectorio de la base de datos correspondiente en el directorio de datos.El nombre del archivo es el siguiente: table name.frm

Por ejemplo, creamos una tabla llamada prueba en la base de datos lijin:

Luego se creará un archivo llamado test.frm en el subdirectorio correspondiente a la base de datos mysqladv para describir la estructura de la tabla. El sufijo .fm se almacena en formato binario.

cd

¿En qué archivo se almacenan los datos en la tabla? En este tema, los diferentes motores de almacenamiento son diferentes. Echemos un vistazo a qué archivos usan InnoDB y MyISAM para guardar los datos en la tabla.

3.2.3, cómo lnnoDB almacena datos de tablas

Los datos de InnoDB se colocarán en el concepto de espacio de tablas o espacio de archivos (nombre en inglés: table space o espacio de archivos).Este espacio de tablas es un concepto abstracto, que puede corresponder a uno o más archivos reales en el sistema de archivos (diferentes tablas espacios) El número correspondiente de archivos puede variar). Cada espacio de tabla se puede dividir en muchas, muchas páginas, y los datos de nuestra tabla se almacenan en algunas páginas bajo un espacio de tabla determinado. Hay varios tipos de tablespaces.

Espacio de tablas del sistema (espacio de tablas del sistema)

Este llamado espacio de tablas del sistema puede corresponder a uno o más archivos reales en el sistema de archivos. De manera predeterminada, InnoDB creará un archivo llamado ibdata1 en el directorio de datos (búsquelo en su directorio de datos), tamaño Es un archivo de 12M, que es la representación del tablespace de almacenamiento correspondiente en el sistema de archivos.

Este archivo se denomina archivo autoexpandible, es decir, aumentará el tamaño del archivo cuando no sea suficiente. Por supuesto, si desea que el espacio de tablas del sistema se corresponda con varios archivos reales en el sistema de archivos, o simplemente piense que el nombre del archivo ibdata1 original suena feo, entonces puede configurar las rutas de archivo correspondientes y sus tamaños cuando se inicia MySQL.También podemos configurar las rutas de archivo correspondientes al espacio de tabla del sistema que no está en el directorio de datos, o incluso configurarlos en un directorio separado partición de disco

Una cosa a tener en cuenta es que en un servidor MySQL, solo hay una copia del espacio de tablas del sistema. En cada versión de MySQL5.5.7 a MySQL5.6.6, los datos de nuestra tabla se almacenarán en este tablespace del sistema de forma predeterminada.

Espacio de tabla independiente (espacio de tabla de archivo por tabla)

En MySQL5.6.6 y versiones posteriores, InnoB no almacena los datos de cada tabla en el tablespace del sistema por defecto, sino que crea un tablespace independiente para cada tabla, es decir, cuántas tablas hemos creado, hay tantos tablespaces independientes como los hay. Si utiliza un espacio de tabla independiente para almacenar datos de tabla, se creará un archivo que representa el espacio de tabla independiente en el subdirectorio correspondiente a la base de datos a la que pertenece la tabla. El nombre del archivo es el mismo que el nombre de la tabla, excepto que una extensión de .ibd se agrega, por lo que el nombre de archivo completo se ve así: nombre de tabla.ibd.

Por ejemplo, si usamos un espacio de tabla independiente para almacenar la tabla de prueba en la base de datos lijin, estos dos archivos se crearán para la tabla de prueba en el directorio lijin correspondiente a la base de datos donde se encuentra la tabla:

test.frm y test.ibd

El archivo test.ibd se utiliza para almacenar los datos y los índices en la tabla de prueba. Por supuesto, también podemos especificar si usar el espacio de tabla del sistema o un espacio de tabla independiente para almacenar datos.Esta función está controlada por el parámetro de inicio

control innodb_file_per_table, por ejemplo, cuando queremos almacenar deliberadamente datos de tablas en el tablespace del sistema, podemos configurarlo así al iniciar el servidor MySQL:

[server]
​
innodb_file_per_table=0

Cuando el valor de imodb_file_per table es 0, significa usar el espacio de tablas del sistema; cuando el valor de innodb_file_per table es 1, significa usar un espacio de tablas independiente. Sin embargo, el parámetro inmodb_file_per_table solo funciona para tablas recién creadas y no funciona para tablas que ya han asignado espacios de tabla.

Otros tipos de tablespaces

Con el desarrollo de MySQL, además de los dos espacios de tabla anteriores, ahora se proponen algunos tipos diferentes de espacios de tabla, como espacio de tabla general (espacio de tabla general), espacio de tabla de deshacer (espacio de tabla de deshacer), espacio de tabla temporal <espacio de tabla temporal) espera.

3.2.4, ¿Cómo almacena MyISAM los datos de la tabla?

Los datos y los índices en MyISAM se almacenan por separado. Por lo tanto, se utilizan diferentes archivos en el sistema de archivos para almacenar archivos de datos y archivos de índice. Y a diferencia de InnoDB, MyISA no tiene el llamado espacio de tabla, y los datos de la tabla se almacenan en el subdirectorio de la base de datos correspondiente.

Si la tabla test_myisam utiliza el motor de almacenamiento MyISAM, se crearán tres archivos para la tabla myisam en el directorio lijin correspondiente a la base de datos donde se encuentra:

Entre ellos, test_myisam.MYD representa el archivo de datos de la tabla, que es el registro de usuario que insertamos, test_myisam.MYI representa el archivo de índice de la tabla, y el índice que creamos para la tabla se colocará en este archivo.

3.3, archivos de registro

Durante la ejecución del servidor, se generarán varios registros, como registros de consultas regulares, registros de errores, registros binarios, registros de rehacer, registros de deshacer, etc. Los archivos de registro registran varios tipos de actividades que afectan la base de datos MySQL.

Los archivos de registro comunes son: registro de errores (registro de errores), registro de consultas lentas (registro de consultas lentas), registro de consultas (registro de consultas), archivo binario (registro bin).

registro de errores

El archivo de registro de errores registra el proceso de inicio, ejecución y cierre de MySQL. Cuando encuentre problemas, primero debe verificar este archivo para localizar el problema. Este archivo no solo registra todos los mensajes de error, sino que también registra algunos mensajes de advertencia o información correcta.

Los usuarios pueden usar el siguiente comando para ver la ubicación del archivo de registro de errores:

show variables like 'log_error'\G;

Cuando MySQL no se inicia normalmente, el primer archivo que debe buscar debe ser el archivo de registro de errores, que registra los mensajes de error.

registro de consultas lentas

Los registros de consultas lentos pueden ayudar a localizar sentencias SQL que pueden tener problemas, para optimizar el nivel de sentencia SQL.

Ya sabemos que el registro de consultas lentas puede ayudar a localizar sentencias SQL que pueden tener problemas, para optimizar el nivel de sentencia SQL. Pero el valor predeterminado está desactivado, debemos abrirlo manualmente.

show VARIABLES like 'slow_query_log';

set GLOBAL slow_query_log=1;

Enciende 1, apaga 0

Pero, ¿qué tan lento es lento? Se puede establecer un umbral en MySQL, y todas las declaraciones SQL cuyo tiempo de ejecución exceda este valor se registran en el registro de consultas lentas. El parámetro long_query_time es este umbral. El valor predeterminado es 10, que representa 10 segundos.

show VARIABLES like '%long_query_time%';

Por supuesto, también puede establecer

set global long_query_time=0;

El valor predeterminado es 10 segundos, aquí se establece en 0 para la conveniencia de la demostración

Al mismo tiempo, si no se utiliza un índice para la instrucción SQL en ejecución, la base de datos MySQL también puede registrar esta instrucción SQL en el archivo de registro de consultas lentas. Los parámetros de control son:

show VARIABLES like '%log_queries_not_using_indexes%';

1 activado, 0 desactivado (predeterminado)

show VARIABLES like '%slow_query_log_file%';

registro de consultas

Compruebe si el archivo de registro común actual está habilitado

show variables like '%general%'

开启通⽤⽇志查询: set global general_log = on;
关闭通⽤⽇志查询:set global general_log = off;

selé

El registro de consultas registra información sobre todas las solicitudes realizadas a la base de datos MySQL, ya sea que estas solicitudes se hayan ejecutado correctamente o no.

Nombre de archivo predeterminado: hostname.log

Registro binario (binlog)

El registro binario registra todas las declaraciones DDL y DML (excepto la selección de declaración de consulta de datos) en forma de eventos, y también incluye el tiempo consumido por la ejecución de la declaración.

Varias funciones de los registros binarios:

Recuperación: la recuperación de algunos datos requiere un registro binario. Por ejemplo, después de restaurar un archivo de copia de seguridad completo de la base de datos, el usuario puede realizar una recuperación puntual a través del archivo binario.

Replicación: Su principio es similar a la recuperación, una base de datos MySQL remota (generalmente llamada esclava o standby) y una base de datos MySQL (generalmente llamada maestra o primaria) se sincronizan en tiempo real mediante la replicación y ejecución de registros binarios.

Auditoría: los usuarios pueden auditar la información en el registro binario para determinar si hay un ataque de inyección en la base de datos.

parámetro log-bin Este parámetro se utiliza para controlar si se abre el registro binario, el valor predeterminado es cerrado.

Si desea habilitar la función de registro binario, puede especificar el siguiente formato en el archivo de configuración de MySQL:

"nombre" es el nombre del archivo de registro binario

Si no se proporciona el nombre, la base de datos utilizará el nombre del archivo de registro predeterminado (el nombre del archivo es el nombre del host, el sufijo es el número de serie del registro binario) y el archivo se guarda en el directorio donde se encuentra la base de datos. ubicado (bajo datadir)

--Habilitar/establecer el archivo de registro binario (se puede omitir el nombre)

log-bin=nombre;

Después de la configuración, algo similar a:

bin_log.00001 es el archivo de registro binario, bin_log.index es el archivo de índice binario, que se utiliza para almacenar el número de serie del registro binario generado en el pasado. Normalmente, no se recomienda modificar este archivo manualmente.

Los archivos de registro binarios no están habilitados de forma predeterminada y los parámetros deben especificarse manualmente para habilitarlos. Habilitar esta opción afectará el rendimiento de MySQL, pero la pérdida de rendimiento es muy limitada. De acuerdo con la prueba en el manual oficial de MySQL, encender el registro binario reducirá el rendimiento en un 1%.

Compruebe si binlog está habilitado

show variables like 'log_bin';

Modifique my.cnf en el directorio de instalación de mysql

log_bin=mysql-bin
binlog-format=ROW
server-id=1
expire_logs_days =30

3.4, otros archivos de datos

Además de los datos almacenados por el usuario como se mencionó anteriormente, el archivo de datos también incluye algunos archivos adicionales para ejecutar mejor el programa. Por supuesto, estos archivos pueden no estar necesariamente ubicados en el directorio de datos y pueden especificarse en el archivo de configuración. o al inicio Directorio de almacenamiento.

Incluye principalmente este tipo de archivos:

• Archivos de proceso del servidor.

Sabemos que cada vez que se ejecuta un programa de servidor MySQL, significa iniciar un proceso. El servidor MySQL escribirá su propio ID de proceso en un archivo pid.

archivo de enchufe

Archivos necesarios al conectarse con sockets de dominio UNIX.

· Archivos de claves y certificados SSL y RSA predeterminados o generados automáticamente.

Supongo que te gusta

Origin blog.csdn.net/m0_70299172/article/details/130544085
Recomendado
Clasificación