MySQL Group Replication vs MySQL Cluster – Comparison

group-replicationMySQLmysql-clustermysql-innodb-clusterreplication

[disclaimer] I'm not new to databases but totally novice about replication and cluster …

As you may know Mysql made available a new functionality : MySql Group Replication.

Is anyone can explain me the fundamental difference between such architecture and a cluster ? any major functionality existing only one of both ? node fault tolerance ? capability to come back to live status ?
Every advise is welcome …

Thanks

Best Answer

Group Replication vs Galera (aka PXC)

Group Replication is only months old; Galera has been around for years. Once GR establishes its worth (which I think it will), the answer may be something like this...

They are very similar. Both do an excellent job of HA -- any single node crashing can be recovered from, usually automatically. Both provide a high degree of read scaling. GR promises to provide more write scaling.

Without knowing your requirements, and your tolerance for various things, I cannot advise on which way to go. Perhaps 90% of MySQL/MariaDB/Percona users on this forum do not use any form of Replication. So, the first question is, do you need any Replication solution?

The architectures are different, but the goals are similar. That is, "there is more than one way to skin a cat".

Fault tolerance, in my opinion, is achievable only if you are willing to put nodes in at least 3 separate geographic locations (think flood/tornado/earthquake/etc). Both allow for that. I use the rule of surviving any single-point-of-failure, and include "datacenter" as a point-of-failure.

GR is a significant improvement over Oracle's previous offering, Fabric.

Since you did not mention Sharding, I did not mention it.

MySQL Cluster

The term "MySQL Cluster" is confusing; technically it refers to "NDB Cluster", which is significantly different than "Group Replication" aka "InnoDB Cluster".

NDB is discussed briefly by Ibrahim, but I would not go so far as to say "best solution ever".

NDB was originally a telco application for very reliable handling of telephone switching. MySQL, Oracle, and SeveralNines have enhanced it _to be somewhat closer to a general RDBMS. It retains its high reliability.

I would limit the use of NDB to applications that need the specific features that it provides.

Advice

For someone starting in the database world with MySQL, I would go with a non-replicated InnoDB-based dataset. When replication / HA / scaling are needed, consider Group Replication or Galera. Move to NDB only if it fits your application better.