Buy Percona ServicesBuy Now!

Design question -- which DB solution is best

  • Filter
  • Time
  • Show
Clear All
new posts

  • Design question -- which DB solution is best


    I currently have a 3-node MariaDB Galera cluster, servicing an application. We are looking to have this application active in four DCs. The following are the requirements of the new setup
    • each site may be independently active
    • all DB data is to be available on every cluster at each DC
    • if replication (or sync) fails between one DC and another, both DCs shall continue to operate independently until replication is able to start up again (ie no split brain)
    • self sustained (no manual intervention required at any time)
    • ideally would like to have automatic collision handling
    • ideally would like an RDBMS solution (as we're using jOOQ for Java)
    Things we can tolerate
    • slave lag is acceptable
    • ACID not required
    • as long as the data "syncs at some point", it's good enough
    3NC = 3 node cluster
    DC = data center

    Research done so far:
    • MYSQL group replication
      • closest thing to what I need, however, it's not recommended for WAN
      • only supports 9 nodes
    • MariaDB Galera (3NC at each DC, part of one global cluster)
      • synchronous replication between 4 DCs is out of the question
      • if a DC drops out, it's unusable
    • MariaDB Galera (independent 3NC at each DC, using bidirectional MYSQL replication between each DC)
      • difficult to deal with auto increments and offsets, especially when adding new DCs or nodes
      • if there is any problem (like collision), replication fails and becomes a pain to start again
    • MYSQL NDB Cluster
      • engine change from InnoDB, would rather not do that
      • downed data nodes may have to be brought up manually, the backup mechanism seems like a pain
      • on paper, geographical replication would work best for my requirements
    • Percona XtraDB Cluster
      • from what I can tell, it doesn't support what I'm trying to do
    Do other SQL setups have a solution, maybe PostgreSQL?