Replication Limitations
- there is no feedback from the slaves to the master. If a slave cannot apply an eventit got from the master, the master will have a different state of data. In this case, the replication applier on the slave will stop and report an error. Administratorscan then either “fix” the problem or re-sync the data from the master to the slaveand start the applier again.
- at the moment it is assumed that only the replication applier executes write operations on a slave. ArangoDB currently does not prevent users from carrying outtheir own write operations on slaves, though this might lead to undefined behaviorand the replication applier stopping.
- when a replication slave asks a master for log events, the replication master will return all write operations for user-defined collections, but it will exclude writeoperations for certain system collections. The following collections are excludedintentionally from replication: apps_, trx, __replication, configuration_,jobs, __queues, sessions_, foxxlog and all statistics collections.Write operations for the following system collections can be queried from a master: __aqlfunctions, graphs_, users_.
- master servers do not know which slaves are or will be connected to them. All serversin a replication setup are currently only loosely coupled. There currently is no way for a client to query which servers are present in a replication.
- when not using our mesos integration failover must be handled by clients or client APIs.
- there currently is one replication applier per ArangoDB database. It is thus not possible to have a slave apply operations from multiple masters into the same targetdatabase.
- the replication applier is single-threaded, but write operations on the master maybe executed in parallel if they affect different collections. Thus the replicationapplier might not be able to catch up with a very powerful and loaded master.
- replication is only supported between the two ArangoDB servers running the sameArangoDB version. It is currently not possible to replicate between different ArangoDB versions.
- a replication applier cannot apply data from itself.