We're in the process of implementing a point of sale (POS) solution where we have heavily modified an existing open source POS. The original POS was never created with replication/synchronization between terminals and we want to add this.
We are using MySQL 5.7 and require a solution to do the following:
each POS terminal needs to operate independently of other terminals or back office server - i.e. have it's own local database and still function, even if the network goes down
multi-master synchronization - all POS terminals should reflect the current state of the system
Example 1: you should be able to start an order on one POS terminal, and finish/modify it on another terminal.
Example 2: If you start an order for a restaurant table on one terminal, another waiter will see that that table is occupied, from another POS terminal.
- scalable to n terminals - some customers will have 1 POS terminal, some 3 and some 100. The solution needs to scale to any number of POS terminals
I've looked at the following solutions:
- MySQL Cluster
- MySQL Replication
- Maria DB Replication
- Maria DB Gallera Cluster
It seems that MySQL semi synchronous replication could work, but I'm not sure this is the best setup.
I'd like some direction in terms of:
- what technology to use
- how best to set this up