Best Practices for Node Synchronization
In an ActiveSpaces grid with more than one node per copyset, each node has a full copy of the data for that copyset. When a primary node detects that a secondary node is not running, it updates the copyset information in the state keeper to indicate the secondary node is dead or out of sync and no longer expects to receive responses from that node while replicating write operations for that copyset.
When the secondary node is restarted, it goes through a background synchronization process. After synchronization, the secondary node is updated in the state keeper as an alive secondary, meaning it is eligible to take over if it detects that the primary node in that copyset is no longer running.
To avoid data loss, a secondary node that is not synchronized, never attempts to become the primary node in the copyset, even if the primary node is no longer running.
Based on that expected behavior, best practices when stopping and starting node processes such as during an upgrade or other maintenance are:
| • | After stopping a secondary node and then restarting it, an administrator must wait until the secondary node has completed its background synchronization process before stopping the primary node. In ActiveSpaces 4.6.0 and later, the tibdg status and tibdg node status commands include information to know if a secondary node is synchronized or not. Log files also include this information. |
| • | An administrator must use the tibdg node stop command with the optional -promote argument to stop the existing primary node and promote a secondary node in its place. This option minimizes downtime for the secondary to detect that the primary is gone and performs extra validation to ensure the secondary node being promoted is in the synced state. The tibdg node stop command when used with the optional -promote argument fails when the secondary node to promote is dead or not synchronized. |
For more information about the -promote option, see Selecting a Secondary Node to be Promoted as the Primary Node.