diff --git a/docs/feature_spec/replication.md b/docs/feature_spec/replication.md index fe0cbed73..218897f03 100644 --- a/docs/feature_spec/replication.md +++ b/docs/feature_spec/replication.md @@ -122,21 +122,6 @@ assumed to be the default one (we specify it to be 10000). Each Memgraph instance will remember what the configuration was set to and will automatically resume with its role when restarted. -### How to Setup an Advanced Replication Scenario? - -The configuration allows for a more advanced scenario like this: -```plaintext -main -[asynchronous]-> replica 1 -[semi-synchronous]-> replica 2 -``` - -To configure the above scenario, issue the following commands: -```plaintext -SET REPLICATION ROLE TO REPLICA; # on replica 1 -SET REPLICATION ROLE TO REPLICA; # on replica 2 - -REGISTER REPLICA replica1 ASYNC TO ; # on main -REGISTER REPLICA replica2 SYNC WITH TIMEOUT 0.5 TO ; # on replica 1 -``` ### How to See the Current Replication Status? @@ -157,7 +142,7 @@ SHOW REPLICAS; To delete a replica, issue the following query: ```plaintext -DELETE REPLICA 'name'; +DROP REPLICA 'name'; ``` ### How to Promote a New Main? @@ -174,6 +159,41 @@ able to replicate its data to the replica (the new main) anymore and will enter an error state. You must ensure that at any given point in time there aren't two mains in the cluster. +## Limitations and Potential Features + +Currently, we do not support chained replicas, i.e. a replica can't have its +own replica. When this feature becomes available, the user will be able to +configure scenarios such as the following one: + +```plaintext +main -[asynchronous]-> replica 1 -[semi-synchronous]-> replica 2 +``` + +To configure the above scenario, the user will be able to issue the following +commands: +```plaintext +SET REPLICATION ROLE TO REPLICA WITH PORT ; # on replica 1 +SET REPLICATION ROLE TO REPLICA WITH PORT ; # on replica 2 + +REGISTER REPLICA replica1 ASYNC TO "replica1_ip_address:port1"; # on main +REGISTER REPLICA replica2 SYNC WITH TIMEOUT 0.5 + TO "replica2_ip_address:port2"; # on replica 1 +``` + +In addition, we do not yet support advanced recovery mechanisms. For example, +if a main crashes, a suitable replica will take its place as the new main. If +the crashed main goes back online, it will not be able to reclaim its previous +role, but will be forced to be a replica of the new main. +In the upcoming releases, we might be adding more advanced recovery mechanisms. +However, users are able to setup their own recovery policies using the basic +recovery mechanisms we currently provide, that can cover a wide range of +real-life scenarios. + +Also, we do not yet support the replication of authentication configurations, +rendering access control replication unavailable. + +The query and authentication modules, as well as audit logs are not replicated. + ## Integration with Memgraph WAL `Delta`s are replicated between the replication main and replica. With