En el fichero /etc/my.cnf se guardan los parámetros de configuración de las bases de datos MySQL y MariaDB. Sin embargo, los valores por defecto puede que no nos sirvan y tengamos que personalizar alguno de ellos dependiendo de la capacidad de nuestro sistema y uso de nuestra base de datos.
Adjunto un ejemplo de los parámetros más interesantes que pueden mejorar el rendimiento de nuestra base de datos:
[root]# cat /etc/my.cnf
[mysqld]
#datadir=/var/lib/mysql
datadir=/MySQL/data
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# Habilitar la cache de consultas en memoria – 64MB por cada GB de RAM fisica
query_cache_type=1 # 0 desactiva cache de consultas, 1 la activa y 2 se activa bajo peticion
query_cache_size=256M
# Tamaño de cache de los indices – 32MB por cada GB de RAM fisica
key_buffer_size=128M
# Tamaño de la cache de busquedas – 1MB por cada GB de RAM fisica
sort_buffer_size=4M
# Tamaño de la cache de lecturas – 1MB por cada GB de RAM fisica
read_buffer_size=4M
# Tamaño maximo de una tabla temporal en RAM
tmp_table_size=1G
max_heap_table_size=1G # Valor recomendado igual a tmp_table_size
# Deshabilitar la resolucion de nombres por DNS. Solo por IP y no por hostname.
skip-name-resolve=1
# Numero maximo de hilos en ejecucion que se pueden cachear y reusar
# 100 – ((Threads_created / Connections) * 100)
# mysql> show status like ‘Threads_created’;
# mysql> show status like ‘Connections’;
thread_cache_size=95
# Motor innodb
innodb_file_per_table=ON
innodb_buffer_pool_size=256M
innodb_log_file_size=64M
innodb_log_files_in_group=8
innodb_read_io_threads=4
innodb_write_io_threads=8 #To stress the double write buffer
# Habilitamos los logs binarios para poder restaurar datos en caso de perdida
# Ejemplo:
# mysqlbinlog mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 –database=db_name –start-datetime=”2016-07-07 00:12:00″ –stop-datetime=”2016-07-07 10:35:00″ | mysql -u root -p
log-bin=mysql-bin
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root]#
También nos puede ser de mucha utilidad el script escrito en PERL mysqltuner.pl, que analiza las estadísticas de nuestra base de datos para sugerir cambios en los parámetros de arranque de la misma para mejorar su rendimiento o seguridad.
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,