El artículo cubría una configuración básica del servidor MySQL® en el sistema operativo Ubuntu®. Describía cómo configurar la contraseña raíz, crear una base de datos y agregar un usuario para la base de datos. Este artículo examina la configuración de MySQL con un poco más de detalle para que pueda ajustar su configuración y estar preparado en caso de que algo salga mal.
Buscar los archivos de configuración
Por defecto, puede encontrar los archivos de configuración de MySQL® en:
/etc/mysql
Sin embargo, si no están allí, puede usar mysqld
para encontrar la configuración. Ejecute el siguiente comando:
$ /usr/sbin/mysqld --help --verbose
La primera parte de la larga respuesta describe las opciones que puede enviar al servidor cuando lo inicia. La segunda parte muestra la configuración establecida durante la compilación del servidor.
Cerca del comienzo de la salida, busque un par de líneas que se parezcan al siguiente ejemplo:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
El servidor examina esa lista hasta que encuentra un archivo de configuración.
archivo de configuración my.cnf
Abra y revise el /etc/mysql/my.cnf archivo.
Líneas de comentario, comenzando con # , documentar el uso de los diferentes ajustes. Muestran detalles sobre la ubicación de archivos de registro, archivos de base de datos y otros detalles.
Configurar grupos
El archivo de configuración contiene líneas con una sola palabra entre corchetes, como [cliente] o [mysqld] .Esas secciones son grupos de configuración. Hacen que los elementos de configuración importantes sean más visibles para los programas que leen el archivo de configuración.
La sección de configuración del servidor es, técnicamente, una colección de herramientas. Eso incluye el servidor (mysqld
), el cliente (mysql
), y otras herramientas. Esos programas buscan en my.cnf para ver cómo deben comportarse.
La sección de configuración del cliente controla el mysql
cliente, y el mysqld
La sección controla la configuración del servidor.
Archivos de registro
Los archivos de registro son el mejor lugar para comenzar a solucionar problemas de cualquier programa. De forma predeterminada, MySQL almacena sus archivos de registro en el siguiente directorio:
/var/log/mysql
Es posible que deba usar sudo
para obtener una lista de los archivos en ese directorio.
Si no encuentra los registros de MySQL® en el directorio predeterminado, verifique la configuración de MySQL. Ver my.cnf archivo y busque un log_error
línea, como en:
log_error = /var/log/mysql/error.log
Si no ve una línea como esa, cree una en mysqld para que MySQL® pueda usar su propio registro de errores. Use la ubicación en el ejemplo, creando el /var/log/mysql directorio si aún no existe. Luego, reinicie MySQL para realizar el cambio.
Asegúrese de que el usuario pueda escribir en el directorio de registro elegido controlando mysql
proceso. El usuario que ejecuta el proceso se define en la configuración de usuario valor para mysqld en my.cnf .
Configuración de red
Puede haber una configuración de "puerto" tanto en el cliente y servidor secciones de configuración. El puerto debajo del servidor La sección controla en qué puerto escucha el servidor. El puerto predeterminado es 3306
pero puedes cambiarlo.
El puerto en el cliente La sección le dice al cliente a qué puerto conectarse por defecto. Por lo general, desea que la configuración de ambos puertos coincida.
Si está utilizando la configuración predeterminada, no verá las entradas del puerto en el archivo de configuración. Si desea cambiar el puerto, agregue las siguientes líneas en las categorías correspondientes:
[client]
port = 3306
[mysqld]
port = 3306
La otra configuración de red que debe buscar es bind-address valor. Por lo general, se establece en la dirección de localhost, 127.0.0.1 . Al vincularse a localhost, el servidor garantiza que nadie pueda conectarse a él desde fuera de la computadora local.
Si está ejecutando su servidor MySQL en una computadora diferente de su aplicación, debe vincularse a una dirección accesible de forma remota en lugar del host local. Cambie la configuración de la dirección de enlace para que coincida con su dirección IP pública. Por razones de seguridad, debe usar una dirección IP de back-end en una red.
Si no ve una dirección de vinculación entrada, debe poner uno en mysqld categoría para ayudar a controlar el acceso al servidor:
[mysqld]
$ bind-address = 127.0.0.1
Recuerde tener en cuenta el nombre de host del cliente cuando configure los usuarios de su base de datos y proporcione acceso al firewall si está ejecutando iptables
.
mysqld y mysqld_safe
Detrás de escena, hay dos versiones del servidor MySQL, mysqld
y mysqld_safe
. Ambos leen las mismas secciones de configuración. Sin embargo, mysqld_safe
se lanza con más funciones de seguridad habilitadas para que sea más fácil recuperarse de la resolución de problemas.
Ambos mysqld
y mysqld_safe
leer entradas de configuración en mysqld sección. Si incluye un mysqld_safe sección, entonces solo mysqld_safe usa esos valores.
De forma predeterminada, el servicio MySQL inicia mysqld_safe
, que es apropiado.
mysqladmin
El mysqladmin
La herramienta le permite realizar algunas funciones administrativas desde la línea de comandos, que este artículo no aborda. Puede explorar la herramienta con más profundidad más adelante para ver lo que puede hacer, especialmente si necesita crear secuencias de comandos que realicen funciones como comprobar el estado del servidor o crear y eliminar bases de datos.
Copias de seguridad
Tiene las siguientes opciones para hacer una copia de seguridad de sus bases de datos, además de la habitual hacer una copia de seguridad de todo el equipo enfoque. Las dos opciones principales son copiar los archivos de la base de datos o usar mysqldump
.
Copia de archivo
Por defecto, MySQL crea un directorio para cada base de datos en su directorio de datos, /var/lib/mysql .
Después de encontrar el directorio de datos, espere un momento antes de hacer una copia. Cuando el servidor de la base de datos está activo, escribe nuevos valores en las tablas. No interrumpa estos procesos para evitar dañar potencialmente su copia de seguridad.
Para asegurarse de haber copiado los archivos de la base de datos sin problemas, debe apagar el servidor MySQL por completo antes de la copia.
Puede bloquear la base de datos como solo lectura durante la duración de la copia. Cuando termines, suelta el candado. De esa manera, sus aplicaciones aún pueden leer datos mientras realiza la copia de seguridad de los archivos.
Bloquee las bases de datos para solo lectura ejecutando el siguiente comando desde la línea de comando:
$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"
Ejecute el siguiente comando para desbloquear la base de datos cuando haya terminado:
$ mysql -u root -p -e "UNLOCK TABLES;"
La opción de cliente MySQL, -e
, le dice al cliente que ejecute la consulta entre comillas como si la ingresáramos en el shell de MySQL®.
Si está escribiendo estos comandos en un script, puede poner la contraseña entre comillas justo después de -p
sin espacio entre los dos, similar a los siguientes ejemplos:
$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"
Asegúrese de configurar los permisos en ese archivo para restringir el acceso de lectura por razones de seguridad de la contraseña.
mysqldump
Otro enfoque para hacer una copia de seguridad de su base de datos es usar el mysqldump
herramienta. En lugar de copiar los archivos de la base de datos directamente, mysqldump
genera un archivo de texto que representa la base de datos. De forma predeterminada, el archivo de texto contiene una lista de declaraciones SQL para recrear la base de datos, pero también puede exportar la base de datos en otro formato como .CSV o .XML . Puede leer la página de manual de mysqldump
para ver todas sus opciones.
Las sentencias generadas por mysqldump
ir directamente a la salida estándar. Puede especificar un para redirigir la salida ejecutando el siguiente comando en la línea de comando:
$ mysqldump -u root -p demodb > dbbackup.sql
Este comando le dice a mysqldump
para recrear el demodb base de datos en declaraciones SQL y escribirlas en el archivo dbbackup.sql . Tenga en cuenta que las opciones de nombre de usuario y contraseña funcionan igual que el cliente MySQL, por lo que puede incluir la contraseña directamente después de -p
en un guión.
Restaurar desde mysqldump
Restaurando un mysqldump
la base de datos es similar a cómo creó el volcado, pero usa mysql
en lugar de mysqldump
,como se muestra en el siguiente comando de restauración:
$ mysql -u root -p demodb < dbbackup.sql
Además, tenga en cuenta que el <
el paréntesis angular cambia de dirección. Eso cambia el comando de redirigir su salida a extraer la entrada del archivo existente. Esa entrada se envía a mysql
comando, lo que hace que las instrucciones vuelvan a crear la base de datos.
De forma predeterminada, las declaraciones SQL generadas se agregan a las tablas de bases de datos existentes y no las sobrescriben. Si está restaurando una copia de seguridad sobre una base de datos existente, primero debe eliminar las tablas de la base de datos o eliminar y volver a crear la base de datos. Puede cambiar ese comportamiento usando el $ --add-drop-table
opción con el comando que crea el mysqldump
. Eso causa mysqldump
para agregar un comando a los archivos de copia de seguridad que escribe que elimina las tablas antes de volver a crearlas.
Motor de base de datos
El motor de base de datos es el proceso que funciona entre bastidores, escribiendo y leyendo datos de archivos. Solo necesita saber sobre esto si desea ejecutar una aplicación que ha sido optimizada para un motor de base de datos en particular.
Las aplicaciones que necesitan tablas las crean a pedido y crean el tipo de motor automáticamente. Para ver el motor que usan las tablas de su base de datos, puede ejecutar el siguiente comando en el shell de MySQL, cambiando demodb al nombre de su base de datos.:
$ SHOW TABLE STATUS FROM demodb;
Elegir un motor
Idealmente, no tendrá que elegir un motor. Si no está muy familiarizado con MySQL, permita que la aplicación elija uno por defecto. Si está escribiendo la aplicación, use el motor predeterminado hasta que se sienta más cómodo con sus opciones.
Siga las instrucciones del administrador de su base de datos (DBA), si tiene una.
Los dos motores de base de datos más utilizados con MySQL son MyISAM
y InnoDB
. El motor de base de datos predeterminado para MySQL versión 5.1 y anteriores es MyISAM
, mientras que InnoDB
es el motor de base de datos predeterminado a partir de la versión 5.5 de MySQL.
MiISAM
Porque MyISAM
ha sido el predeterminado en MySQL por un tiempo, es la opción más compatible de los dos motores principales. Ciertos tipos de búsquedas funcionan mejor en MyISAM
que InnoDB
. Aunque es el más antiguo de los dos, podría ser la mejor opción para un tipo de aplicación determinado.
InnoDB
InnoDB
rendimiento porque InnoDB
requiere muchos ajustes a su entorno y patrones de acceso. La configuración predeterminada es óptima para el uso diario de desarrollo de software.
InnoDB
es más tolerante a fallas que MyISAM
y maneja bloqueos y recuperación con un riesgo mucho menor de corrupción de la base de datos.
Si su aplicación requiere InnoDB y está utilizando MySQL 5.1 o anterior, es posible que ya no haya ninguna configuración en my.cnf archivo de configuración. Eso puede ser un problema si está ejecutando en un servidor que no tiene mucha memoria.
La siguiente configuración puede ayudarlo a comenzar con InnoDB en un servidor compartido con 256 megas de RAM:
innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table
Agréguelos a [mysqld] sección del archivo de configuración. Una vez más, esas son solo guías aproximadas. Pueden ayudarlo a comenzar, pero no están optimizados. Consulte con su DBA o experimente con cambios incrementales a lo largo del tiempo para mejorar el rendimiento.
Artículos relacionados
- Instalar el servidor MySQL® en el sistema operativo Ubuntu
- Restablecer una contraseña raíz de MySQL®