Wednesday, September 11, 2013

mysqld_multi

Original post: http://anothermysqldba.blogspot.com/2013/09/mysqldmulti.html

Así que yo estaba trabajando recientemente con mysqld_multi y me di cuenta que se trataba de una característica que no veo en muchos blogs en ​​estos días. Ellos existen y yo hemos enumerado algunos en la parte inferior de este post para su referencia.

Sus razones tienden a variar y ser discutible cuando se trata el concepto de: debe ejecutar más de una instancia de MySQL en el mismo hardware.

Para evitar cualquier confusión, si desea instalar otra instancia de MySQL para fines de prueba y no como una instancia de producción, a continuación, sólo debe trabajar con MySQL Sandbox . Si por alguna razón que no funciona, se puede ejecutar otro servidor como muchas personas suelen hacer: crear nuevos archivos my.cnf e iniciar el servidor mysql con los comandos personalizados y mysqld_safe.

Mysqld_multi hace que sea mucho más fácil para usted para ejecutar múltiples servidores.

Por ejemplo:
Usted tiene un servidor secundario que se ejecuta en el puerto 3306. Es un read_only esclavo y tiene una gran cantidad de hardware en lugar de espera para convertirse en el nuevo servidor primario cuando falla la corriente primaria. También quisiera aprovechar la Percona conjunto de herramientas y tiene un servidor secundario replicado que se ejecuta en un modo diferido. Si se pudiera actualizar a MySQL 5.6 , entonces no sería necesario pt-esclavo-delay pero en la actualidad eso no es una opción.

En cualquier caso, usted tiene unos límites presupuestarios y no se permite otro servidor. Entonces te das por vencido? Usted tiene el espacio en disco para celebrar otra versión del servidor en el cuadro de secundaria ¿por qué no? La idea de tener que iniciar y detener versiones y etc personalizados puede ser desagradable para algunos. Así que en lugar se puede crear una nueva versión del archivo my.cnf, pero primero usted puede hacer lo siguiente.

Recojo editor favorito (es decir: vi)
vi /etc/multi_my.cnf
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = mysql
log = /var/log/multi_mysql.log

# Port 3306 Server
[mysqld1]
>socket = /tmp/mysql_3306.sock
port = 3306
pid-file = /var/lib/mysql/mysql_3306.pid
datadir = /var/lib/mysql/
user = mysql
Ahora usted puede tomar la sección [mysqld] de su archivo my.cnf y copiarlo en esta ubicación.

cat /etc/my.cnf >> /etc/multi_my.cnf
Si utiliza el comando anterior edición de limpiar lo que sólo tiene la sección [mysqld] copiado.

A continuación, puede crear la sección del puerto 3307.
# Port 3307 Server
[mysqld2]
socket = /tmp/mysql_3307.sock
port = 3307
pid-file = /var/lib/mysql2/mysql_3307.pid
datadir = /var/lib/mysql2/
user = mysql
Y el ejemplo de la configuración se puede encontrar aquí:
http://dev.mysql.com/doc/refman/5.6/en/mysqld-multi.html

Para este ejemplo voy a suponer que va a crear una copia de seguridad del servidor de puerto 3306 con Percona Xtrabackup y colocarla en el nuevo datadir.
innobackupex --defaults-file=/etc/my.cnf --user=root --password=<password> --port=3306 --no-timestamp /var/lib/mysql2/
innobackupex --apply-log /var/lib/mysql2/
Ahora puede probar esto ahora con el binario mysqld_multi (/ usr / bin / mysqld_multi) o la creación de iniciar y detener la secuencia de comandos. Una plantilla viene con su instalación de MySQL: / usr / share / mysql / mysqld_multi.server

Puede copiar este en el directorio init.d o probarlo desde la ubicación actual.
El script por defecto en el archivo / etc / my.cnf. Así que para empezar a probar esto con el - default_file informe = / etc / multi_my.cnf

La opción de informe es el similar al argumento de estado para ver si el servidor está en ejecución. Si opta por ejecutar esto como el proceso por omisión que pueda enlace simbólico o copiar el archivo / etc / multi_my.cnf como el nuevo / etc / my.cnf
/etc/init.d/mysqld_multi.server report 1,2
/etc/init.d/mysqld_multi.server report 1
/etc/init.d/mysqld_multi.server report 2

Lo anterior se dará marcha de estado para cada argumento dan ese curso de referencias a una instancia de MySQL diferente. Usted puede hacer lo mismo la totalidad de las siguientes opciones: {start | stop | Informe | restart}

Si todo ha ido bien se puede "empezar a 2", que se iniciará la instancia en el puerto 3307. A continuación, iniciar sesión y cambiar principal con la información de posición binlog proporcionada en el archivo xtrabackup_binlog_info.
CHANGE MASTER TO
MASTER_HOST='localhost',
MASTER_PORT=3306,
MASTER_LOG_FILE='<log filename>',
MASTER_LOG_POS=<position>;

Start slave;
Por ahora usted tiene una copia duplicada de su servidor esclavo secundario. Si utiliza pt-esclavo-delay puede ejecutar el siguiente comando, el valor predeterminado es una hora de retraso.
pt-slave-delay --port=3307 --socket=/tmp/mysql_3307.sock --host=localhost

Espero que esto al menos puede empezar.