La replicación de MariaDB se puede utilizar para la replicación entre MariaDB Galera Cluster y MariaDB Server. Este artículo discutirá cómo hacer eso.

Configurar el clúster

Antes de configurar la replicación, debemos asegurarnos de que el clúster esté configurado correctamente. Esto implica los siguientes pasos:

  • Colocar log_slave_updates=ON en todos los nodos del clúster. Consulte Configuración de clúster de MariaDB Galera: escritura de conjuntos de escritura replicados en el registro binario y uso de la replicación de MariaDB con el clúster de MariaDB Galera: configuración de un nodo de clúster como maestro de replicación para obtener más información sobre por qué esto es importante. Esto también es necesario para habilitar el modo wsrep GTID.
  • Colocar server_id al mismo valor en todos los nodos del clúster. Consulte Uso de la replicación de MariaDB con MariaDB Galera Cluster: Configuración de server_id en los nodos de clúster para obtener más información sobre lo que esto significa.

Configuración del modo Wsrep GTID

Si desea utilizar la replicación GTID, también debe configurar algunas cosas para habilitar el modo wsrep GTID. Por ejemplo:

  • wsrep_gtid_domain_id debe configurarse con el mismo valor en todos los nodos del clúster, de modo que cada nodo del clúster utilice el mismo dominio al asignar GTID para los conjuntos de escritura de Galera Cluster.
  • log_bin debe establecerse en la misma ruta en todos los nodos del clúster. Ver MDEV-9856 sobre eso.

Y como medida de seguridad extra:

  • gtid_domain_id debe establecerse en un valor diferente en todos los nodos de un clúster determinado, y cada uno de estos valores debe ser diferente al configurado wsrep_gtid_domain_id valor. Esto es para evitar que un nodo utilice el mismo dominio utilizado para los conjuntos de escritura de Galera Cluster al asignar GTID para transacciones que no son de Galera, como DDL ejecutado con wsrep_sst_method=RSU set o DML ejecutado con wsrep_on=OFF colocar.

Configuración del esclavo

Antes de configurar la replicación, también debemos asegurarnos de que el esclavo del servidor MariaDB esté configurado correctamente. Esto implica los siguientes pasos:

  • Colocar server_id a un valor diferente al que están usando los nodos del clúster.

Configurar la replicación

Nuestro proceso para configurar la replicación será similar al proceso descrito en Configuración de un esclavo de replicación con Mariabackup, pero se modificará un poco para que funcione en este contexto.

Iniciar el clúster

El primer paso es iniciar los nodos en el primer clúster. El primer nodo deberá iniciarse. Los otros nodos se pueden iniciar normalmente.

Una vez que se inician los nodos, debe elegir un nodo específico que actuará como maestro de replicación para el servidor MariaDB.

Haga una copia de seguridad de la base de datos en el nodo maestro del clúster y prepárelo

El primer paso es simplemente realizar y preparar una nueva copia de seguridad completa del nodo que ha elegido como maestro de replicación. Por ejemplo:

$ mariabackup --backup --target-dir=/var/mariadb/backup/ --user=mariabackup --password=mypassword

Y luego prepararía la copia de seguridad como lo haría normalmente. Por ejemplo:

$ mariabackup --prepare --target-dir=/var/mariadb/backup/ 

Copiar la copia de seguridad al esclavo

Una vez realizada y preparada la copia de seguridad, puede copiarla al servidor MariaDB que actuará como esclavo. Por ejemplo:

$ rsync -avrP /var/mariadb/backup dc2-dbserver1:/var/mariadb/backup

Restaurar la copia de seguridad en el esclavo del segundo clúster

En este punto, puede restaurar la copia de seguridad a la datadir, como lo haría normalmente. Por ejemplo:

$ mariabackup --copy-back --target-dir=/var/mariadb/backup/ 

Y ajustando los permisos de archivo, si es necesario:

$ chown -R mysql:mysql /var/lib/mysql/

Iniciar el nuevo esclavo

Ahora que se ha restaurado la copia de seguridad en el servidor MariaDB esclavo, puede iniciar el proceso del servidor MariaDB.

Crear un usuario de replicación en el maestro del clúster

Antes de que el esclavo del servidor MariaDB pueda comenzar a replicar desde el maestro del clúster, debe crear una cuenta de usuario en el maestro que el esclavo pueda usar para conectarse, y debe otorgarle a la cuenta de usuario el REPLICATION SLAVE privilegio. Por ejemplo:

CREATEUSER'repl'@'dc2-dbserver1' IDENTIFIED BY'password';GRANTREPLICATION SLAVE ON*.*TO'repl'@'dc2-dbserver1';

Iniciar la replicación en el nuevo esclavo

En este punto, debe obtener las coordenadas de replicación del maestro de la copia de seguridad original.

Las coordenadas estarán en el xtrabackup_binlog_info expediente.

Mariabackup vuelca las coordenadas de replicación en dos formas: cadenas GTID y archivo de registro binario y coordenadas de posición, como las que normalmente vería en SHOW MASTER STATUS producción. En este caso, probablemente sea mejor utilizar las coordenadas GTID.

Por ejemplo:

mariadb-bin.0000965680-1-2

Independientemente de las coordenadas que utilice, deberá configurar la conexión maestra utilizando CHANGE MASTER TO y luego inicie los subprocesos de replicación con START SLAVE.

GTID

Si desea utilizar GTID, primero deberá configurar gtid_slave_pos a las coordenadas GTID que extrajimos del xtrabackup_binlog_info archivo, y estableceríamos MASTER_USE_GTID=slave_pos en el CHANGE MASTER TO mando. Por ejemplo:

SETGLOBAL gtid_slave_pos ="0-1-2";
CHANGE MASTER TO 
   MASTER_HOST="c1dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_USE_GTID=slave_pos;START SLAVE;

Archivo y cargo

Si desea utilizar el archivo de registro binario y las coordenadas de posición, debe establecer MASTER_LOG_FILE y MASTER_LOG_POS en el CHANGE MASTER TO comando al archivo y las coordenadas de posición que sacamos del xtrabackup_binlog_info expediente. Por ejemplo:

CHANGE MASTER TO 
   MASTER_HOST="c1dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_LOG_FILE='mariadb-bin.000096',
   MASTER_LOG_POS=568,START SLAVE;

Verifique el estado del nuevo esclavo

Debería haber terminado de configurar el esclavo ahora, por lo que debería comprobar su estado con SHOW SLAVE STATUS. Por ejemplo:

SHOW SLAVE STATUSG

Ahora que el servidor MariaDB está activo, asegúrese de que no comience a aceptar escrituras todavía si desea configurar la replicación circular entre el clúster y el servidor MariaDB.

Configurar la replicación circular

También puede configurar la replicación circular entre el clúster y el servidor MariaDB, lo que significa que el servidor MariaDB se replica desde el clúster y el clúster también se replica desde el servidor MariaDB.

Cree un usuario de replicación en el servidor maestro MariaDB

Antes de que pueda comenzar la replicación circular, también debe crear una cuenta de usuario en el servidor MariaDB, ya que actuará como maestro de replicación para el esclavo del clúster, y debe otorgarle a la cuenta de usuario la REPLICATION SLAVE privilegio. Por ejemplo:

CREATE USER 'repl'@'c1dbserver1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'c1dbserver1';

Iniciar la replicación circular en el clúster

La forma de hacerlo dependerá de si desea utilizar las coordenadas GTID o el archivo de registro binario y las coordenadas de posición.

Independientemente, debe asegurarse de que el segundo clúster no acepte escrituras distintas de las que replica desde el clúster en esta etapa.

GTID

Para obtener las coordenadas GTID en el servidor MariaDB, puede verificar gtid_current_pos ejecutando:

SHOW GLOBAL VARIABLES LIKE 'gtid_current_pos';

Luego, en el nodo que actúa como esclavo en el clúster, puede configurar la replicación configurando gtid_slave_pos al GTID que fue devuelto y luego ejecutando CHANGE MASTER TO:

SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO 
   MASTER_HOST="c2dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Archivo y cargo

Para obtener el archivo de registro binario y las coordenadas de posición en el servidor MariaDB, puede ejecutar SHOW MASTER STATUS:

SHOW MASTER STATUS

Luego, en el nodo que actúa como esclavo en el clúster, establecería master_log_file y master_log_pos en el CHANGE MASTER TO mando. Por ejemplo:

CHANGE MASTER TO 
   MASTER_HOST="c2dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_LOG_FILE='mariadb-bin.000096',
   MASTER_LOG_POS=568;
START SLAVE;

Verifique el estado de la replicación circular

Debería haber terminado de configurar la replicación circular en el nodo del primer clúster ahora, por lo que debería comprobar su estado con SHOW SLAVE STATUS. Por ejemplo:

SHOW SLAVE STATUSG

El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.