Setting Up Multi-Master Replication Manually

You can run maprcli commands to set up multi-master replication, first establishing replication in one direction, and then establishing it in the other direction.

Prerequisites

  • Verify that you have complete the steps to configure the clusters for table replication. For more information, see Preparing Clusters for Table Replication.
  • Run the maprcli table info command on the source table to verify that you have the following permissions:
    • readperm, which is required for reading from the table.
    • replperm, which is required for replicating from the table.
  • Run the maprcli table info command on the destination table (if it already exists) to verify that you have the following permissions:
    • bulkload, which is required for the initial copy of source data into the destination table.
    • replperm, which is required for receiving replicated updates from the source table.

Procedure

  1. For manual setup in one direction, follow these steps:
    1. Create the replica manually with the maprcli table create command. Use the -copymetafrom option to ensure that the metadata for the replica is identical to the metadata for the source table. Metadata includes column families, access control expressions (ACEs), and other attributes.
      maprcli table create -path <path to the replica> -copymetafrom <path to the source table>
      For example, to create the replica customers in the newyork cluster and use the metadata from the source table in the sanfrancisco cluster, you could use this command:
      maprcli table create -path /mapr/newyork/customers -copymetafrom /mapr/sanfrancisco/customers
    2. Register the replica as a replica of the source table by running the maprcli table replica add command.
      maprcli table replica add -path <path to the source table> -replica <path to the replica> -paused true
      For example, to register the customers table in the newyork cluster as a replica of the customers table in the sanfrancisco cluster, you could use this command:
      maprcli table replica add -path /mapr/sanfrancisco/customers -replica /mapr/newyork/customers -paused true

      The -paused parameter ensures that replication does not start immediately after you register the source table as a source for this replica. You do this registration in step d.

    3. Verify that you specified the correct replica by running the maprcli table replica list command.
      maprcli table replica list -path <path to the source table> 
      To verify that the customers table in the newyork cluster is a replica of the customers table in the sanfrancisco cluster, you could look at the output of this command:
      maprcli table replica list -path /mapr/sanfrancisco/customers
    4. Authorize replication between the tables by registering the source table as the upstream table for the replica by running the maprcli table upstream add command. Definition of the upstream table ensures that a table cannot replicate updates to any replica. Replication depends on a two-way agreement between the owners of the two tables.
      maprcli table upstream add -path <path to the replica> -upstream <path to the source table> 
      To add the customers table in the sanfrancisco cluster as an upstream source for the customers table in the newyork cluster:
      maprcli table upstream add -path /mapr/newyork/customers -upstream /mapr/sanfrancisco/customers
    5. Verify that you specified the correct source table by running the maprcli table upstream list command.
      maprcli table upstream list -path <path to the replica> 
      To verify this in our example scenario, you could use this command:
      maprcli table upstream list -path /mapr/newyork/customers
    6. If you set -paused to true when adding the replica, follow these steps:
      1. Load the replica with data from the source table by using the HPE Ezmeral Data Fabric Database CopyTable utility for binary tables or the HPE Ezmeral Data Fabric Database JSON CopyTable utility for JSON tables.
      2. Start replication with the command maprcli table replica resume. Here is the maprcli command:
        maprcli table replica resume -path <path to the source table> -replica <path to the replica>
        For our example scenario, you could use this command:
        maprcli table replica resume -path mapr/sanfrancisco/customers -replica /mapr/newyork/customers 
  2. For manual setup in the other direction, follow these steps:
    1. Log into both the source and destination clusters.
    2. Register the replica as a replica of the source table by running the maprcli table replica add command.
      maprcli table replica add -path <path to the source table> -replica <path to the replica> 
    3. Verify that you specified the correct replica by running the maprcli table replica list command.
      maprcli table replica list -path <path to the source table> 
    4. Authorize replication between the tables by defining the source table as the upstream table for the replica by running the maprcli table upstream add command. Definition of the upstream table ensures that a table cannot replicate updates to any replica. Replication depends on a two-way agreement between the owners of the two tables.
      maprcli table upstream add -path <path to the replica> -upstream <path to the source table>

What to do next

  • With multi-master replication, if one of the tables goes offline, direct client applications to the other table. For more information, see Multi-Master Replication.
  • Be aware that changes to the structure of a source table are not replicated automatically to replicas. For more information, see Adding a Column Family to a Replica
  • You can check for alarms related to replication and whether synchronous replication is switched temporarily to asynchronous replication by looking in the Control System. See Table-Replication Alarms.