Configuración de la replicación de datos de salida de Azure Database for MySQL: servidor flexible
En este artículo, se describe cómo configurar la replicación de datos de salida en el servidor flexible de Azure Database for MySQL mediante la configuración de los servidores de origen y de réplica. En este artículo se asume que tiene alguna experiencia previa con servidores y bases de datos MySQL.
Para la replicación de datos de salida, el origen siempre es el servidor flexible de Azure Database for MySQL. La réplica puede ser cualquier servidor MySQL externo en otros proveedores de nube, entornos locales o máquinas virtuales. Antes de realizar los pasos que se indican en este artículo examine las limitaciones y los requisitos de la replicación de datos de salida.
Nota
En este artículo se hace referencia al término esclavo, un término que Microsoft ya no usa. Cuando se elimine el término del software, se eliminará también de este artículo.
Cree una instancia del servidor flexible de Azure Database for MySQL para usarla como origen.
Cree una instancia del servidor flexible de Azure Database for MySQL (por ejemplo, sourceserver.mysql.database.Azure.com). Consulte Inicio rápido: Creación de una instancia de Azure Database for MySQL con Azure Portal. Este es el servidor de "origen" de la replicación de datos de salida.
Cree cuentas de usuario duplicadas y los privilegios correspondientes.
- Las cuentas de usuario no se replican desde el servidor de origen al servidor de réplica. Suponga que planea proporcionar a los usuarios acceso al servidor de réplica. En ese caso, debe crear manualmente todas las cuentas y los privilegios correspondientes en esta instancia recién creada de servidor flexible de Azure Database for MySQL.
Configuración del servidor MySQL
Los pasos siguientes preparan y configuran la instancia de servidor flexible de Azure Database for MySQL que actúa como origen.
Requisitos de red
Asegúrese de que la configuración de red se ha establecido de forma que los servidores de origen y réplica puedan comunicarse sin problemas.
Si el servidor de origen está en acceso público, asegúrese de que las reglas de firewall permiten la dirección IP del servidor de réplica. Si el servidor de réplicas está hospedado en Azure, asegúrese de seleccionar la opción de permitir el acceso público desde cualquier servicio de Azure desde la página de redes de Azure Portal. Si el servidor de origen está en acceso privado, asegúrese de que el servidor de réplica puede conectarse al origen a través del emparejamiento de red virtual o una conexión de puerta de enlace de VPN de red virtual a red virtual.Nota:
Para más información: Conceptos de conectividad y redes para Azure Database for MySQL (servidor flexible).
Activación del registro binario
Compruebe si se ha habilitado el registro binario en el servidor de origen mediante la ejecución del comando siguiente:
SHOW VARIABLES LIKE 'log_bin';
Si la variable log_bin se devuelve con el valor "ON", el registro binario está habilitado en el servidor.
Creación de un rol de replicación y configuración del permiso
Cree una cuenta de usuario en el servidor de origen configurado con privilegios de replicación. Esto puede realizarse a través de los comandos SQL o una herramienta como MySQL Workbench. Tenga en cuenta si planea replicar con SSL, ya que necesitará especificarse al crear el usuario. Consulte la documentación de MySQL para entender cómo agregar cuentas de usuario en el servidor de origen.
En los siguientes comandos, el nuevo rol de replicación puede acceder al origen desde cualquier máquina, no solo desde la que hospeda al propio origen. Esto se hace especificando "syncuser@'%'" en el comando create user. Consulte la documentación de MySQL para más información acerca de la especificación de nombres de cuenta.
Hay algunas herramientas que puede usar para establecer nombres de cuenta. Seleccione la que mejor se adapte a su entorno.
Replicación con SSL
Para requerir SSL a todas las conexiones de usuario, use el comando siguiente para crear un usuario:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
Replicación sin SSL
Si SSL no es necesario para todas las conexiones, use el comando siguiente para crear un usuario:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
Vuelque y restaure el servidor de origen.
Omita esta sección si es un servidor de origen recién creado sin datos existentes para migrar a la réplica. En este momento, puede desbloquear las tablas:
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
Siga los pasos que se indican a continuación si el servidor de origen tiene datos existentes para migrar a la réplica.
Determine qué bases de datos y tablas quiere replicar en el servidor flexible de Azure Database for MySQL y realice el volcado de memoria desde el servidor de origen. Puede utilizar mysqldump para volcar bases de datos desde el servidor principal. Para más información, visite Volcado y restauración. No es necesario volcar la biblioteca de MySQL y la biblioteca de prueba.
Establezca el servidor de origen en modo de lectura/escritura.
Después de volcar la base de datos, cambie la instancia de origen de servidor flexible de Azure Database for MySQL al modo de lectura y escritura.
SET GLOBAL read_only = OFF;
UNLOCK TABLES;
- Restaure el archivo de volcado en el servidor nuevo. Restaure el archivo de volcado en el servidor creado en el servidor flexible de Azure Database for MySQL. Consulte "Volcado y restauración" para restaurar un archivo de volcado en una instancia de servidor flexible de Azure Database for MySQL. Si el archivo de volcado es grande, cárguelo a una máquina virtual en Azure dentro de la misma región que el servidor de réplica. Restáurelo en la instancia de servidor flexible de Azure Database for MySQL desde la máquina virtual.
Nota:
Si quiere evitar establecer la base de datos como de solo lectura al realizar un volcado o una recuperación, puede usar mydumper/myloader.
Configure el servidor de réplica para iniciar la replicación de datos de salida.
Filtrado
Suponga que la replicación de datos de salida se está configurando entre el servidor flexible de Azure Database for MySQL y un servidor MySQL externo de otros proveedores de nube o del entorno local. En ese caso, debe usar la replicación para filtrar las tablas personalizadas de Azure en el servidor de réplicas. Esto se puede lograr si establece Replicate_Wild_Ignore_Table = "mysql.__%" para filtrar las tablas internas mysql del servidor flexible de Azure Database for MySQL. Consulte MySQL :: Manual de referencia de MySQL 5.7 :: Instrucción CHANGE REPLICATION FILTER de 13.4.2.2 para más información sobre cómo modificar este parámetro de servidor.
Establezca el servidor de réplica. Para ello, debe conectarlo y abrir el shell de MySQL en el servidor de réplica. En el símbolo del sistema, ejecute la siguiente operación, que configura varios valores de replicación de MySQL al mismo tiempo:
CHANGE THE REPLICATION SOURCE TO SOURCE_HOST='<master_host>', SOURCE_USER='<master_user>', SOURCE_PASSWORD='<master_password>', SOURCE_LOG_FILE='<master_log_file>', SOURCE_LOG_POS=<master_log_pos>
- master_host: nombre de host del servidor de origen (ejemplo: "source.mysql.database.Azure.com")
- master_user: nombre de usuario del servidor de origen (ejemplo: "syncuser"@"%")
- master_password: contraseña para el servidor de origen
- master_log_file: nombre del archivo de registro binario procedente de la ejecución de show master status
- master_log_pos: posición de registro binario procedente de la ejecución de show master status
Nota
Para usar SSL para la conexión, agregue el atributo SOURCE_SSL=1 al comando. Para más información sobre el uso de SSL en un contexto de replicación, visite: https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html
Active el servidor de réplica mediante el siguiente comando.
START REPLICA;
En este momento, la instancia de réplica comienza a replicar los cambios realizados en la base de datos del servidor de origen. Para probarlo, cree una tabla de ejemplo en la base de datos de origen y compruebe si se replica correctamente.
Compruebe el estado de replicación.
Llame al comando show slave status\G en el servidor de réplica para ver el estado de replicación.
show slave status;
Si el estado de Slave_IO_Running y Slave_SQL_Running son
yes
y el valor de Seconds_Behind_Master es0
, la replicación funciona correctamente. Seconds_Behind_Master indica el retraso de la réplica. La réplica procesa actualizaciones si el valor no es0
.Si el servidor de réplica se hospeda en una máquina virtual de Azure, establezca la opción Permitir el acceso a servicios de Azure en Activado en el origen para permitir que los servidores de origen y de réplica se comuniquen. Esta configuración se puede cambiar desde las opciones de seguridad de la conexión. Para obtener más información, visite Administración de reglas de firewall para Azure Database for MySQL - Servidor flexible mediante Azure Portal.
Si usó mydumper/myloader para realizar un volcado de la base de datos, puede obtener master_log_file y master_log_pos del archivo /backup/metadata.