2011-01-08 8 views
5

Tengo dos instancias de mysql en la misma máquina. Las instalaciones están en/usr/loca/mysql1 y/usr/local/mysql2.cambiando la ruta predeterminada de my.cnf en mysql

Tengo archivos my.cnf separados ubicados en/etc/mysql1 y/etc/mysql2. Instalé la primera instancia de mi sql usando la distribución fuente y con la opción --prefix =/usr/local/mysql1. El segundo lo obtuve al copiar y pasar el mismo directorio a/usr/local/mysql2.

Cuando inicio el daemon mysql en /usr.local/mysql/libexec, lee el archivo my.cnf en/etc/mysql1. Y si inicio el daemon mysql en/usr/local/mysql2, se lee el mismo archivo my.cnf. Tengo números de puerto y archivos .sock separados definidos en el archivo .cnf en esas 2 ubicaciones.

Puedo leer el archivo my.cnf en la segunda ubicación utilizando la opción --defaults-file =/etc/mysql2/my.cnf en el inicio de mysqld. No necesito ingresar esto cada vez que inicio el daemon.

Si voy a tener más instancias, ¿cómo puedo apuntar el archivo my.cnf correcto para leer a todos y cada uno de los demonios mysql. ¿Cuál es la explicación detrás de los enlaces de mysqld con el archivo my.cnf?

cómo puedo predefinir la ubicación del archivo my.cnf para cada instancia.

+0

Simplemente escriba dos secuencias de comandos de inicio de mysqld (o mysqlmanager) separadas que separen cada una de las demás – ajreal

+0

¿Cuál es su sistema operativo? –

Respuesta

6

Como ya has descubierto, MySQL tiene una ubicación de búsqueda compilada para su archivo de configuración. Aunque puede recompilarse usted mismo, al cambiar esto, también ha descubierto la opción --defaults-file en mysqld, que le indica que use una ruta de configuración completamente diferente. Junto con --data-dir, esto significa que puede iniciar múltiples instancias de MySQL vinculadas a diferentes puertos (y direcciones, si le gusta) y trabajar con conjuntos de datos completamente independientes, mientras trabaja con los mismos binarios y bibliotecas.

Tradicionalmente, la mayoría de las distribuciones del sistema operativo agrupan un único guión de inicio para iniciar la instancia "predeterminada" de MySQL; es decir, el que está instalado en la ubicación "habitual" y con la ruta de configuración estándar. A pesar de que se trata del caso más común, lo que está buscando es un poco diferente, por lo que deberá crear scripts separados para iniciar las instancias por separado.

Si planea implementar muchas instancias de MySQL en la misma máquina (y tendría que preguntar por qué), entonces puede escribir una secuencia de comandos de inicio personalizada que tenga alguna manera de "descubrir" cada una de estos (tal vez mediante la inspección de algún directorio que contiene un diseño "común"), y luego pasa por encima de ellos, comenzando cada uno. Por supuesto, el mismo script de inicio necesita ser capaz de localizar y cerrar correctamente cada uno.

0

Creo que la única manera segura es compilar desde el origen con la opción de prefijo. O eso, o crea un script bash que inicie mysql2 con la opción --defaults-file y luego lo use para iniciarlo.

Sin embargo, "crear" otra instalación de la manera en que lo hizo no es bueno. Cuando compila un paquete, el PREFIJO está codificado en el ejecutable. Por lo tanto, cada vez que busca un recurso, comienza desde ese prefijo, a menos que se indique lo contrario con las opciones de línea de comando.

Por lo tanto, si yo fuera usted, me gustaría volver a compilar desde la fuente con un nuevo prefijo.

Cuestiones relacionadas