lunes, 14 de septiembre de 2015

MySQL autoincrement en replicación Master-Master

Un detalle que se nos presenta al momento de la replicación de Master-Master es con respecto a los campos que definimos como auto_increment dentro de la estructura de nuestras tablas.

La solución que se nos ofrece en este tipo de situaciones, sonara como una "Mexicanada".

Tenemos dos parámetros configurables: auto_increment_increment y auto_increment_offset.

Para configurar estas opciones lo podemos realizar al iniciar el servicio MySQL.


--auto_increment_increment= N --auto_increment_offset=#

donde:
N = Número de servidores que trabajaran con esta configuración.
# = Número entre 1 y N, cada servidor usara un diferente offset.


Ó mediante variables:

SET @@auto_increment_increment = N;
SET @@auto_increment_offset = #;


auto_increment_increment; es el numero en que el servidor incrementara cada vez que un valor sea incrementado. El default es 1, es decir que incrementara de 1 en 1, ejemplo 1, 2, 3, 4, 5, etc. Si el valor es un 2, incrementara en 2, ejemplo 1, 3, 5, 7, 9, etc. Si el valor es 3 incrementara, 1, 4, 7, 10, etc.
auto_increment_offset: No puede ser un valor mayor al de auto_increment_increment, este permite decirle cual sera el valor del servidor, si es par o non, si es 1 sera 1, 3, 5 y si es "2" entonces seran los valores 2, 4, 6, 8, No importa cual sea el valor actual del auto_increment, si es 132, continuara con 134, 136, etc.


También podemos declararlos de la siguiente manera:
Al detalle:
Configuraciones:
En servidor 1:
auto_increment_increment = 2    # Cantidad de servidors
auto_increment_offset = 1  # El número a incrementar (es non)
En servidor 2:
auto_increment_increment = 2   # Cantidad de servidores.
auto_increment_offset = 2  # El número a incrementar (es inpar)
De un inicio en cuanto activamos una replicación las tablas contaran con la misma información. Una vez que se configura como anteriormente se menciono, y se realizan insert sobre dichas tablas (con auto_increment) se insertaran algunos registros en servidor 1, y otros se insertaran en el servidor 2, todo con respecto a la configuración anterior. En un momento dado tendrán información diferente, pero al ejecutarse la replicación, ambos servidores contaran con la misma información.







No hay comentarios.:

Publicar un comentario