¿Cuáles son los inconvenientes de usar Galera Cluster en lugar de Master / Slave Replication?

13

¿Cuáles son los inconvenientes de usar Galera Cluster en lugar de la replicación maestra / esclava regular? El tiempo de retraso de 0 esclavos de Galera, la replicación sincrónica y ningún punto único de falla parecen muy atractivos, ¿por qué no es tan común el clúster de Galera?

Sam
fuente

Respuestas:

16

Porque como cualquier otra optimización, no se adapta a todas las cargas de trabajo.

Galera puede verse abrumado por una alta tasa de transacciones, o cuando las transacciones actualizan muchas filas. También puede hacer que sus aplicaciones experimenten demoras en COMMIT a medida que el clúster se sincroniza.

Galera tampoco actualiza otros nodos sincrónicamente. Simplemente transmite conjuntos de trabajo sincrónicamente. De esta manera, es un poco como la replicación estándar en modo semisíncrono. Por lo tanto, todavía hay una pequeña posibilidad de leer datos obsoletos de otro nodo del clúster. Hay una opción que puede configurar para forzar a SELECT a esperar hasta que la cola de los conjuntos de trabajo haya actualizado la base de datos, pero esto significa que tiene demoras en SELECT. E incluso la posibilidad de llegar a un punto muerto en SELECT, lo que parece contradictorio.

Galera es brillante, pero no es una tecnología única para todos. Todavía hay buenas razones para usar la replicación asincrónica.

Bill Karwin
fuente
Gracias Bill, por cierto, he estado leyendo tus presentaciones de Percona por un tiempo.
Sam
3
Otro inconveniente es tener un nodo donante fuera de sí mismo y usarse para copiar (a través de xtrabackup, rsync, mysqldump) a cualquier nodo introducido en el clúster, dejando los nodos restantes en el clúster para realizar el trabajo pesado hasta que el nuevo nodo esté sincronizado. No es un inconveniente para bases de datos pequeñas o medianas.
RolandoMySQLDBA
1
Los métodos de @RolandoMySQLDBA SST como xtrabackup evitan precisamente bloquear al donante. Aunque es cierto que, en cualquier caso, el donante habrá degradado el rendimiento si la base de datos es grande.
jynus
3
@jynus, el problema no se está bloqueando en el nodo donante , sino que el nodo receptor está fuera de línea y no está disponible para ninguna consulta mientras el SST está en progreso. Por lo tanto, si está utilizando el clúster para el equilibrio de carga de consultas, las consultas que habrían ido al nodo receptor deben enviarse a otros nodos hasta que finalice la SST.
Bill Karwin
2
En caso de que alguien más esté mirando, la opción a la que Bill se refiere es wsrep_causal_reads... activada SET GLOBAL wsrep_causal_reads = 'ON';para obtener selecciones para esperar hasta que se completen todos los conjuntos de escritura.
Luke Cousins
2

Algunos inconvenientes de Galera incluyen:

  • Soporte de motor de almacenamiento: limitado a InnoDB / XtraDB (más soporte experimental para MyISAM)
  • Soporte de sistema operativo: solo Oses Linux / Unix-like

También hay algunas limitaciones que deben tenerse en cuenta, pero tal vez se puedan solucionar:

  • Por defecto (Aislamiento de orden total), las operaciones DDL bloquean todo el clúster hasta que se completen
  • Cada tabla debe tener una clave primaria explícita, ya sea una o varias columnas
  • Bloqueo: algunos tipos de bloqueo explícito no son compatibles.

Para obtener más información, consulte los detalles en Codership (y aquí sobre el bloqueo de DDL), MariaDB y Percona .

EDITAR: Tenga en cuenta también que algunos argumentan que los clústeres de bases de datos estrechamente acoplados, como Galera, no deberían tener nodos geo-distribuidos debido a los problemas derivados de la falta de fiabilidad inherente de la capa de red. En su lugar, se deben usar soluciones asincrónicas en estos casos. Consulte: Cómo no hacer MySQL Alta disponibilidad: distribución de nodos geográficos con mal uso de replicación basada en Galera . Sin embargo, el blog de Galera afirma que (2015):

El argumento para construir clústeres de bases de datos distribuidos geográficamente es fuerte. El enfoque de Galera para la replicación y las características específicas del producto hacen que sea práctico construir clústeres Galera que abarquen múltiples centros de datos y que varios usuarios ya tengan dichos clústeres en producción.

dbdemon
fuente