Subscription comparison procedure

Follow this RSSD recovery procedure if you have executed some DDL commands since the last transaction dump but you have not created any new subscriptions or routes. DDL commands in RCL include those for creating, altering, or deleting routes, replication definitions, subscriptions, function strings, functions, function-string classes, or error classes.

WARNING! Do not execute any DDL commands until you have completed this recovery procedure.

Following this procedure makes the failed RSSD consistent with upstream RSSDs or consistent with the most recent database and transaction dumps (if there is no upstream Replication Server). It then makes downstream RSSDs consistent with the recovered RSSD.

If DDL commands have been executed at the current Replication Server since the last transaction dump, you may have to re-execute them.

WARNING! This procedure may fail if you are operating in a mixed-version environment; that is, the Replication Servers in your replication system are not all at the same version level.

To restore an RSSD with subscription comparison, follow these steps:

  1. To prepare the failed RSSD for recovery, perform steps 1 through 4 of “Basic RSSD recovery procedure”.

  2. To prepare all upstream RSSDs for recovery, execute the admin quiesce_force_rsi command at each upstream Replication Server.

  3. To prepare all downstream RSSDs for recovery, execute the admin quiesce_force_rsi command at each downstream Replication Server.

  4. Reconcile the failed RSSD with all upstream RSSDs, using the rs_subcmp program.

  5. Reconcile all downstream RSSDs with the RSSD for the current Replication Server, which was recovered in the previous step, using the rs_subcmp program.

  6. If the recovering Replication Server is an ID Server, you must restore the Replication Server and database IDs in its RSSD.

    1. For every Replication Server, check the rs_databases and rs_sites system tables for their IDs.

    2. Insert the appropriate rows in the recovering RSSD’s rs_idnames system table if they are missing.

    3. Delete from the recovering RSSD’s rs_idnames system table any IDs of databases or Replication Servers that are no longer part of the replication system.

    4. To ensure that the rs_ids system table is consistent, execute the following stored procedure in the RSSD of the current Replication Server:

      rs_mk_rsids_consistent
      
  7. If the recovering Replication Server is not an ID Server, and a database connection was created at the recovering Replication Server after the last transaction dump, delete the row corresponding to that database connection from the rs_idnames system table in the ID Server’s RSSD.

  8. Perform steps 5 through 13 of “Basic RSSD recovery procedure”.

  9. To complete RSSD recovery, re-execute any DDL commands executed at the current Replication Server since the last transaction dump.