Instancias en MySQL
En el siguiente artículo se describe un ejemplo de cómo crear una instancia MySQL con sus respectivos parámetros de configuración.
Fichero *.cnf
En ambientes Linux Debian existe un árbol de ficheros de configuración donde se pueden editar los parámetros principales de la instancia, dentro del directorio: /etc/mysql/conf.d/; se puede crear un fichero con extensión .cnf para todas las instancias o un fichero por cada instancia.
Si se desea un fichero para todas las instancias sería un fichero parecido al siguiente:
# Instancia 1
[mysqld1]
user = mysql
pid-file = /var/run/mysqld/my1.pid
socket = /var/run/mysqld/my1.sock
port = 3308
datadir = /var/lib/my1
tmpdir = /tmp
log-error = /var/log/mysql/my1.log
# Instancia 2
[mysqld2]
user = mysql
pid-file = /var/run/mysqld/my2.pid
socket = /var/run/mysqld/my2.sock
port = 3309
datadir = /var/lib/my2
tmpdir = /tmp
log-error = /var/log/mysql/my2.log
Si se desea un fichero por cada instancia sería el nombre del fichero dentro de la ruta especificada (/etc/mysql/conf.d/) y con su respectivo nombre y contenido. Por ejemplo para instancia 1 sería fichero my1.cnf:
# Instancia 1
[mysqld1]
user = mysql
pid-file = /var/run/mysqld/my1.pid
socket = /var/run/mysqld/my1.sock
port = 3308
datadir = /var/lib/my1
tmpdir = /tmp
log-error = /var/log/mysql/my1.log
La segunda instancia con un fichero parecido por ejemplo my2.cnf y su respectivo contenido:
# Instancia 2
[mysqld2]
user = mysql
pid-file = /var/run/mysqld/my2.pid
socket = /var/run/mysqld/my2.sock
port = 3309
datadir = /var/lib/my2
tmpdir = /tmp
log-error = /var/log/mysql/my2.log
Inicializar instancia
Antes de dar inicio al proceso y servicio de la instancia, se debe instalar o inicializar la estructura de la siguiente manera:
mysql_install_db --user=mysql --ldata=/var/lib/directorio_instancia
El argumento --ldata es el parámetro establecido en el fichero de configuración de las instancias que aparece como: datadir
Gestionar instancias
La gestión de instancias consiste en iniciar, reiniciar, detener el servicio o proceso de las instancias.
Para iniciar una instancia determinada se pasa como argumento la instancia en cuestión, si es la instancia número uno (1) sería con el comando:
mysqld_multi start 1
Si se desea un rango específico sería:
mysqld_multi start 1-5
Si se desean ciertas instancias sería:
mysqld_multi start 1,3,6
Para detener las instancias se usa el mismo patrón que para iniciar instancias pero con la instrucción stop, ejemplo:
mysqld_multi stop 1
Y así también las combinaciones para rango o determinadas instancias que se usan para iniciar.
Conexión a una instancia
Si se desea realizar una conexión a una instancia específica, se realiza de la siguiente manera:
mysql --port=3308 --socket=/var/run/mysqld/instancia1.sock
Igualmente si existe un usuario determinado, por ejemplo:
mysql -u myusuariodb --port=3308 --socket=/var/run/mysqld/instancia1.sock
Visualizar instancias
Se puede visualizar el estatus de las instancias con netstat, por ejemplo:
netstat -pvatun | grep 3308