Instalación Binaria y Ajuste de MySQL 5.7.19 en Entornos Linux RHEL/CentOS

Configuración de Límites y Parámetros del Kernel

Verifique la versión del sistema operativo para garantizar la compatibilidad con los binarios precompilados:

# cat /etc/os-release | grep VERSION
VERSION="7 (Core)"

Aplique restricciones de recursos a nivel de sesión. Edite /etc/security/limits.conf e incorpore las siguientes directivas para evitar el agotamiento de descriptores de archivo y procesos:

dbmgr soft nofile 65535
dbmgr hard nofile 65535
dbmgr soft nproc  4096
dbmgr hard nproc  4096

Optimice el comportamiento de la memoria virtual y la escritura diferida modificando /etc/sysctl.d/99-db-tuning.conf:

vm.swappiness = 1
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

Active los cambios con sysctl -p /etc/sysctl.d/99-db-tuning.conf.

Configure el planificador de E/S del dispositivo de almacenamiento en deadline para reducir la latencia de transacciones:

# echo "deadline" > /sys/block/sdb/queue/scheduler

Descompresión de Binarios y Estructura de Directorios

Descargue y extraiga el paquete en la ubicación designada:

# curl -LO https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
# tar -xzf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /opt/

Vincule la carpeta extraída y prepare la jerarquía de almacenamiento:

# ln -sf /opt/mysql-5.7.19-linux-glibc2.12-x86_64 /opt/mysql_runtime
# mkdir -p /var/db_data/node_01/{almacen,bitacoras}

Asigne la propiedad correcta y satisfaga las dependencias del sistema:

# chown -R dbmgr:dbmgr /opt/mysql_runtime
# chown -R dbmgr:dbmgr /var/db_data
# yum -y groupinstall "Development Tools"
# yum -y install libaio libnuma

Generación del Archivo de Parámetros

Defina /etc/db_instance.cnf con una configuración modular que priorice InnoDB, deshabilite cachés obsoletos y establezca rutas personalizadas:

[client]
port = 3307
socket = /var/db_data/node_01/almacen/db.sock
default-character-set = utf8mb4

[mysql]
prompt = "\\u@\\h:\\p [\\d]> "
no-auto-rehash

[mysqld]
# Rutas e identidad
user = dbmgr
basedir = /opt/mysql_runtime
datadir = /var/db_data/node_01/almacen
port = 3307
socket = /var/db_data/node_01/almacen/db.sock
default_storage_engine = InnoDB
character-set-server = utf8mb4

# Límites y tablas
open_files_limit = 65535
innodb_file_per_table = ON
innodb_open_files = 65535

# Almacenamiento InnoDB
innodb_buffer_pool_size = 2G
innodb_log_buffer_size = 32M
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
innodb_data_file_path = ibdata1:512M:autoextend
innodb_flush_log_at_trx_commit = 1

# Binlog y replicación
server-id = 200
log_bin = /var/db_data/node_01/bitacoras/mysqld-bin
binlog_format = ROW
sync_binlog = 1

# Limpieza de características heredadas
query_cache_size = 0
query_cache_type = 0

Inicialización, Arranque y Aseguramiento

Genere las tablas del sistema y registre la contraseña temporal:

# cd /opt/mysql_runtime/bin
# ./mysqld --defaults-file=/etc/db_instance.cnf --user=dbmgr --datadir=/var/db_data/node_01/almacen --initialize
# grep 'A temporary password' /var/db_data/node_01/almacen/*.err

Levante el servicio en segundo plano utilizando el gestor de arranque nativo:

# /opt/mysql_runtime/bin/mysqld_safe --defaults-file=/etc/db_instance.cnf &

Conéctese y aplique la rotación de credenciales con la sintaxis moderna:

# /opt/mysql_runtime/bin/mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin$ecure2024!';

Elimine componentes de demostración y restricicones innecesarias:

mysql> DROP DATABASE IF EXISTS test;
mysql> DELETE FROM mysql.user WHERE user = '' OR host != 'localhost';
mysql> TRUNCATE TABLE mysql.db;
mysql> FLUSH PRIVILEGES;

Ejecute el apagado ordenado para garentizar la persistencia de los datos:

# /opt/mysql_runtime/bin/mysqladmin -u root -p shutdown

Etiquetas: mysql-5-7 rhel-database-deployment innodb-tuning linux-sysctl-config binary-package-install

Publicado el 10-4 09:33