Question

[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

Was it helpful?

Solution

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.

OTHER TIPS

  • you have these various options:

    • A single node without replication:
      • one master who handle the read/writes, if the master goes down you are dead.
    • A single node with one or more replication nodes: Mysql Normal Replication

      • one master who handle the writes.
      • one or more replica that can help in READ operations but can't help in WRITE.
      • if the master goes down, you can pick up one of the replica nodes to become the master.
      • downtime will be the time required to start the replica as master.
    • A multi-master with group replication: MYSQL Group Replication

      • more than one master node that can help with the write operation.
      • all the group nodes help with the READ operation.
      • changes are synced to other nodes and handle conflicts automatically.
      • if one of the masters goes down you still alive.
      • you are dead only if all the masters goes down.
    • A cluster:
      • the best solution ever.
      • you have:
        • data nodes
        • Application nodes/MYSQLD
        • management nodes
      • data are synced in synchronous mode.
      • auto-sharding
      • parallel writes without any conflicts.
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top