
Las organizaciones confían en las bases de datos para almacenar datos y permitir que se recuperen de manera eficiente. La replicación robusta ayuda a las organizaciones a cumplir con los objetivos de disponibilidad y garantizar que los datos estén donde los usuarios los necesitan, cuando los necesitan. Hay muchas opciones de bases de datos, pero este artículo se centra en MySQL. Específicamente, explica el uso de identificadores de transacciones globales (GTID) en la replicación de MySQL. También proporciona instrucciones para configurar servidores de origen y réplica habilitados para GTID.
¿Qué es la replicación?
dupdo Es el proceso por el cual múltiples bases de datos mantienen copias de los mismos datos. Cuando una instancia de base de datos actualiza sus datos, envía esos cambios a todas las demás bases de datos lo antes posible.
MySQL utiliza una arquitectura de replicación fuente-copia.Una de las bases de datos fue seleccionada como fuente (proporciona replicación), los otros son réplica (base de datos de solo lectura que recibe réplicas).
¿Qué es un identificador de transacción global?
GTID trae la replicación basada en transacciones a las bases de datos MySQL. Con la replicación de GTID, cada transacción se puede identificar y rastrear cuando se comprometió en el servidor de origen original y la réplica la aplicó. No es necesario consultar ningún archivo de registro al iniciar la réplica. La replicación de GTID utiliza la replicación de ubicación automática, lo que reduce el esfuerzo de configuración.
Es fácil determinar si la fuente y la réplica son consistentes. La coherencia está garantizada si todas las transformaciones confirmadas en el origen también se confirman en la réplica. Los GTID usan identificadores únicos que se pueden ver al verificar el registro binario y se usan con fines de depuración. La siguiente figura muestra el estado de un servidor MySQL de origen habilitado para GTID.
Para leer más sobre la creación y administración de GTID, visite la documentación oficial de MySQL. Para aprender a usar MySQL con Red Hat Enterprise Linux (RHEL), consulte la documentación de RHEL sobre el uso de MySQL.
Implementar la replicación de GTID en el servidor MySQL
Los siguientes pasos cubren la configuración y la conectividad para la replicación entre dos servidores MySQL. Uno es la fuente especificada y el otro es la copia.
[ Learn Linux basics in 30 days with Red Hat Enterprise Linux Technical Overview course. ]
Asegúrese de que ambas máquinas tengan instalado el servidor MySQL y el cliente, luego siga los pasos a continuación.
1. Configurar el servidor de origen MySQL
Primero, configure el servidor de origen editando el archivo de configuración de MySQL.prestar mucha atención para asegurarse server-id
El valor es único.
existir /etc/my.cnf.d/mysql-server.cnf
debajo del archivo [mysqld]
parte:
bind-address=
log_bin=
Por ejemplo, especificando los archivos de registro encontrados a lo largo de esta ruta: log_bin=/var/log/mysql/mysql-bin.log
.
server-id=
este server-id
Debe ser único; de lo contrario, la replicación no funcionará.
gtid_mode=ON
enforce-gtid-consistency=ON
Tienes que reiniciar porque hiciste cambios en el archivo de configuración mysqld
Servir:
$ sudo systemctl restart mysqld.service
2. Configurar el servidor de réplica de MySQL
Ahora muévase a la réplica y edite su archivo de configuración, nuevamente asegúrese server-id
es único.
existir /etc/my.cnf.d/mysql-server.cnf
debajo del archivo [mysqld]
(consulte la documentación de MySQL si desea obtener más información sobre las opciones).
log_bin=
Por ejemplo, el archivo de registro del servidor de origen podría estar aquí: log_bin=/var/log/mysql/mysql-bin.log
.
relay-log=path_to_replica_server_log
Los registros de un servidor de replicación pueden seguir esta ruta: relay-log=/var/log/mysql/mysql-relay-bin.log
.
server-id=
este server-id
Debe ser único; de lo contrario, la replicación no funcionará.
gtid_mode=ON
enforce-gtid-consistency=ON
log-replica-updates=ON
skip-replica-start=ON
Cambió el archivo de configuración en la réplica, así que no olvide reiniciar mysqld
Servir:
$ sudo systemctl restart mysqld.service
3. Cree un usuario de replicación en el servidor de origen MySQL
Ahora que la configuración de replicación está en su lugar en ambos servidores, el siguiente paso es configurar las cuentas de usuario necesarias en el servidor de origen. Ejecute los siguientes comandos desde el símbolo del sistema de MySQL.
Cree un usuario de replicación:
mysql> CREATE USER 'replication_user'@'replica_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
Otorgar permisos de copia de usuario:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'replica_server_ip';
Vuelva a cargar las tablas de concesión en la base de datos MySQL:
mysql> FLUSH PRIVILEGES;
Establezca el servidor de origen en read_only
Expresar:
mysql> SET @@GLOBAL.read_only = ON;
4. Conecte el servidor de réplica al servidor de origen
El paso final es conectar el servidor de réplica con el servidor de origen. Estos pasos también se realizan en el indicador de MySQL en la réplica.
Establezca el servidor de réplica en read_only
Expresar:
mysql> SET @@GLOBAL.read_only = ON;
Configure la fuente de replicación:
mysql> CHANGE REPLICATION SOURCE TO
-> SOURCE_HOST='source_ip_address',
-> SOURCE_USER='replication_user',
-> SOURCE_PASSWORD='password',
-> SOURCE_AUTO_POSITION=1;
Inicie el subproceso de réplica en el servidor de réplica de MySQL:
mysql> START REPLICA;
Desarmar ahora read_only
Estado en ambos servidores, puede realizar cambios en el servidor de origen. Estos cambios se enviarán a la réplica:
mysql> SET @@GLOBAL.read_only = OFF;
[ The OpenShift for Developers eBook will get you started with containers quickly. ]
Uso de GTID
No hay motivo para no utilizar la configuración de GTID para la replicación del servidor MySQL. Facilita a los administradores la implementación, la depuración y la configuración. Puede haber algunas limitaciones menores con la replicación basada en GTID, pero los beneficios superan las desventajas. Es más fácil de configurar que configurar la replicación sin GTID, así que hágalo.