From 8c309f2b3a95ae0c1ac6b453af4026be2c92bb11 Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 13:15:34 +0530 Subject: [PATCH 01/15] content/eprs/6.2/fix_url_and_image Former-commit-id: 9ef553190914e2e1189084af267d3a60bb78ebea --- .../06_verifying_host_accessibility.mdx | 2 ++ ...schema_objects_created_for_publication.mdx | 2 +- .../06_performing_switchover.mdx | 10 ++++---- .../01_using_sql_statements.mdx | 6 ++--- .../03_other_sync_configuration.mdx | 2 +- .../6.2/06_mmr_operation/01_pre_steps.mdx | 8 +++--- .../03_creating_primary_nodes.mdx | 25 ++++++++++++++++--- .../05_on_demand_replication_mmr.mdx | 19 ++++++++++++++ .../11_using_ssl_connections.mdx | 2 ++ 9 files changed, 59 insertions(+), 17 deletions(-) diff --git a/product_docs/docs/eprs/6.2/05_smr_operation/01_prerequisites/06_verifying_host_accessibility.mdx b/product_docs/docs/eprs/6.2/05_smr_operation/01_prerequisites/06_verifying_host_accessibility.mdx index 299d16ec2ba..495c4132fb0 100644 --- a/product_docs/docs/eprs/6.2/05_smr_operation/01_prerequisites/06_verifying_host_accessibility.mdx +++ b/product_docs/docs/eprs/6.2/05_smr_operation/01_prerequisites/06_verifying_host_accessibility.mdx @@ -122,6 +122,8 @@ $ hostname -i ## Postgres Server Authentication +#postgres-server-authentication + A Postgres database server uses the host-based authentication file, `pg_hba.conf`, to control access to the databases in the database server. You need to modify the `pg_hba.conf` file in the following locations: - On each Postgres database server that contains a Postgres publication database diff --git a/product_docs/docs/eprs/6.2/05_smr_operation/02_creating_publication/04_control_schema_objects_created_for_publication.mdx b/product_docs/docs/eprs/6.2/05_smr_operation/02_creating_publication/04_control_schema_objects_created_for_publication.mdx index 08a7afe100d..9253259df9b 100644 --- a/product_docs/docs/eprs/6.2/05_smr_operation/02_creating_publication/04_control_schema_objects_created_for_publication.mdx +++ b/product_docs/docs/eprs/6.2/05_smr_operation/02_creating_publication/04_control_schema_objects_created_for_publication.mdx @@ -292,7 +292,7 @@ RREP_SYNCID_ARRAY COLLECTION ``` !!! Note - The RREP_SYNCID_ARRAY collection type is found only in an Oracle publication database. + The `RREP_SYNCID_ARRAY` collection type is found only in an Oracle publication database. diff --git a/product_docs/docs/eprs/6.2/05_smr_operation/06_performing_switchover.mdx b/product_docs/docs/eprs/6.2/05_smr_operation/06_performing_switchover.mdx index a341ba54bec..d831d43cacc 100644 --- a/product_docs/docs/eprs/6.2/05_smr_operation/06_performing_switchover.mdx +++ b/product_docs/docs/eprs/6.2/05_smr_operation/06_performing_switchover.mdx @@ -63,9 +63,9 @@ Delete or disable these triggers on node 1. Delete this schema from the subscription database on node 2 after the backup has been made. -**Step 8:** Restore the backups of `schemas _edb_replicator_pub`, \_edb_replicator_sub`, and`\_edb_scheduler`created in Step 5 to the subscription database on node 2. Also restore the backup of the replication triggers and trigger functions created in Step 6 to the subscription database on node 2. +**Step 8:** Restore the backups of `schemas _edb_replicator_pub`, _edb_replicator_sub`, and `_edb_scheduler` created in Step 5 to the subscription database on node 2. Also restore the backup of the replication triggers and trigger functions created in Step 6 to the subscription database on node 2. -**Step 9:** Restore the backup of schema`\_edb_replicator_sub`created in Step 7 to the publication database on node 1. +**Step 9:** Restore the backup of schema `_edb_replicator_sub` created in Step 7 to the publication database on node 1. **Step 10:** Update the control schema objects so that the publication database definition references the new publication database (that is, the former subscription database) on node 2 and the subscription database definition references the new subscription database (that is, the former publication database) on node 1. @@ -131,13 +131,13 @@ host=192.168.2.20 ``` -**Step 13:** Update the`pg_hba.conf` files of the database servers to allow access to the subscription database now on node 1 and the publication database now on node 2 in accordance with Section [Postgres Server Authentication](../06_verifying_host_accessibility/03_postgres_server_auth/#postgres_server_auth). +**Step 13:** Update the`pg_hba.conf` files of the database servers to allow access to the subscription database now on node 1 and the publication database now on node 2 in accordance with Section [Postgres Server Authentication](01_prerequisites/06_verifying_host_accessibility/#postgres-server-authentication). **Step 14:** When using the log-based method, create a replication slot on the database server that now contains the publication database. Use the following query to obtain the slot name from the database server that was previously running the publication database, but is now the subscription database server: -```text +``` SELECT slot_name FROM pg_replication_slots WHERE plugin = 'test_decoding'; slot_name ------------- @@ -159,7 +159,7 @@ You may choose to keep the replication slot on the database server that now cont Alternatively, you can delete the replication slot from the database server that now contains the subscription database. The replication slot is deleted with the following command: -```text +``` SELECT pg_drop_replication_slot('xdb_47919_5'); ``` diff --git a/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/01_using_sql_statements.mdx b/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/01_using_sql_statements.mdx index 57acbffdeba..3a98863f507 100644 --- a/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/01_using_sql_statements.mdx +++ b/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/01_using_sql_statements.mdx @@ -102,7 +102,7 @@ The `bupBatchThresholdCount` option is used in combination with the `bupBatchThr > The default value for n is 10. -Each time the same prepared SQL statement is consecutively executed, an internal “batch” counter is incremented. If this batch count falls below bupBatchThresholdCount for the number of executions of a given prepared statement, then a second internal “repeat” counter is incremented by one. If the repeat counter eventually reaches bupBatchThresholdRepeatLimit, the update mode is switched from BUP to BUS. +Each time the same prepared SQL statement is consecutively executed, an internal `batch` counter is incremented. If this batch count falls below bupBatchThresholdCount for the number of executions of a given prepared statement, then a second internal `repeat` counter is incremented by one. If the repeat counter eventually reaches bupBatchThresholdRepeatLimit, the update mode is switched from `BUP` to `BUS`. Thus, if there are frequent, consecutive changes of prepared SQL statements (as measured against `bupBatchThresholdRepeatLimit`), each of which is executed a small number of times (as measured against `bupBatchThresholdCount`), then the mode of execution changes back to individual SQL statements instead of prepared statements. @@ -111,7 +111,7 @@ Thus, if there are frequent, consecutive changes of prepared SQL statements (as The following example illustrates the processing of up dates when bupBatchThresholdCount is set to 3 and bupBatchThresholdRepeatLimit is set to 4. A change to the “query domain” referred to in this example means a different statement type (INSERT, UPDATE, or DELETE) or a different target table are encountered in the next update, thus requiring the use of a different prepared SQL statement. -```text +``` 1. INSERT INTO emp 2. INSERT INTO emp 3. INSERT INTO dept @@ -119,7 +119,7 @@ The following example illustrates the processing of up dates when bupBatchThresh At this point the query domain is changed after the first two updates (change from table `emp` to `dept`) and the number of executions of the prior prepared statement (2) is less than `bupBatchThresholdCount`, so the repeat counter is set to 1. -```text +``` 4. INSERT INTO dept 5. INSERT INTO dept 6. INSERT INTO dept diff --git a/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/03_other_sync_configuration.mdx b/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/03_other_sync_configuration.mdx index 3e3a77aa184..87e0f5df6e4 100644 --- a/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/03_other_sync_configuration.mdx +++ b/product_docs/docs/eprs/6.2/05_smr_operation/08_optimizing_performance/02_optimize_sync_replication/03_other_sync_configuration.mdx @@ -4,7 +4,7 @@ title: "Other Synchronization Configuration Options" The following are other configuration options affecting synchronization replication. -**syncBatchSize** +`syncBatchSize` > The `syncBatchSize` option controls the number of statements in a synchronization replication JDBC batch. diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/01_pre_steps.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/01_pre_steps.mdx index a531bf755d6..ed9add3331b 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/01_pre_steps.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/01_pre_steps.mdx @@ -82,7 +82,7 @@ There are also two possible options available with respect to how the publicatio - Allow the publication server to create the publication table definitions in the primary node by copying the definitions from the primary definition node at the time you add the publication database definition for the primary node. - Define the publication tables in the primary node beforehand by running SQL `DDL` statements in the `PSQL` command line utility program or by using Postgres Enterprise Manager Client to create the tables. -If you create the table definitions “manually” as described in the second bullet point, be sure the publication tables are defined identically to the tables in the primary definition node including schema names, table names, number of columns, column names, column data types, column lengths, primary key definitions, unique constraints, foreign key constraints, etc. +If you create the table definitions `manually` as described in the second bullet point, be sure the publication tables are defined identically to the tables in the primary definition node including schema names, table names, number of columns, column names, column data types, column lengths, primary key definitions, unique constraints, foreign key constraints, etc. The examples used throughout the rest of this user’s guide are based on the following: @@ -112,7 +112,9 @@ If more than one computer is used to host the components of the replication syst - For a discussion of firewalls and access to ports see [Firewalls and Access to Ports](../05_smr_operation/01_prerequisites/06_verifying_host_accessibility/#firewalls_and_access_to_ports). - For a discussion of network IP addresses see [Network IP Addresses](../05_smr_operation/01_prerequisites/06_verifying_host_accessibility/#network_ip). -A Postgres database server uses the host-based authentication file, `pg_hba.conf`, to control access to the databases in the database server. You need to modify the `pg_hba.conf` file on each Postgres database server that contains a primary node. +A Postgres database server uses the host-based authentication file, `pg_hba.conf`, to control access to the databases in the database server. + +You need to modify the `pg_hba.conf` file on each Postgres database server that contains a primary node. In a default Postgres installation, this file is located in the directory `POSTGRES_INSTALL_HOME/data`. @@ -193,4 +195,4 @@ See sections [Synchronization Replication with the Log-Based Method](../02_overv Reload the configuration file after making the modifications. -Choose Reload Configuration (Expert Configuration, then Reload Configuration on Advanced Server) from the Postgres application menu. This will put the modified `pg_hba.conf` file into effect. +Choose `Reload Configuration` (Expert Configuration, then Reload Configuration on Advanced Server) from the Postgres application menu. This will put the modified `pg_hba.conf` file into effect. diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/03_creating_primary_nodes.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/03_creating_primary_nodes.mdx index 3c1ea69a5ae..baf713c2b97 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/03_creating_primary_nodes.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/03_creating_primary_nodes.mdx @@ -24,21 +24,27 @@ You must enter database connection information such as the database server netwo - `User.` The database user name for the primary node created in Step 1 of [Preparing Additional Primary nodes](01_pre_steps/#prepare_add_pdn). - `Password.` Password of the database user. - `Database.` Enter the database name of the primary node. -- `URL Options (For SSL connectivity).` Enter the URL options to establish SSL connectivity to the primary node. See Preparing Using Secure Sockets Layer (SSL) Connections <using_ssl_connections> for information on using SSL connections. +- `URL Options (For SSL connectivity).` Enter the URL options to establish SSL connectivity to the primary node. See [Using Secure Sockets Layer (SSL) Connections](../07_common_operations/11_using_ssl_connections/#using_ssl_connections) for information on using SSL connections. - `Changeset Logging (For Postgres).` This setting is predetermined by the selection on the primary definition node (see [Adding the Primary definition node](02_creating_publication_mmr/#adding_pdn)). Table Triggers is for the trigger-based method of synchronization replication. WAL Stream is for the log-based method of synchronization replication. See [Synchronization Replication with the Trigger-Based Method](../02_overview/02_replication_concepts_and_definitions/09_sync_replication_trigger_based/#sync_replication_trigger_based) for information on the trigger-based method. See [Synchronization Replication with the Log-Based Method](../02_overview/02_replication_concepts_and_definitions/10_sync_replication_log_based/#sync_replication_log_based) for information on the log-based method. - `Node Priority Level.` An integer from 1 to 10, which is the priority level assigned to this primary node for conflict resolution based on node priority. The highest priority is 1 while the lowest is 10. See [Conflict Resolution Strategies](06_conflict_resolution/04_conflict_resolution_strategies/#conflict_resolution_strategies) for information on conflict resolution strategies. As each additional primary node is added, the default priority level number increases assigning a lower priority level to each additional node. -- `Replicate Publication Schema.` Check this box if you want the publication server to create the publication table definitions in the new primary node by copying the definitions from the primary definition node. If you do not check this box, it is assumed that you have already created the table definitions in the primary node. If you are using the offline snapshot technique to create this primary node, do not check this box. See Loading Tables From an External Data Source (Offline Snapshot) <offline_snapshot>) for information on using an offline snapshot. -- `Perform Initial Snapshot.` Check this box if you want the publication server to perform a snapshot from the primary definition node to this primary node when you click the Save button. If you do not check this box, the tables on the primary node will not be loaded until you perform a replication at some later time. If you are using the offline snapshot technique to create this primary node, you should have already loaded the table rows. Therefore do not check this box unless you want to reload the data. See Loading Tables From an External Data Source (Offline Snapshot) <offline_snapshot> for information on using an offline snapshot. +- `Replicate Publication Schema.` Check this box if you want the publication server to create the publication table definitions in the new primary node by copying the definitions from the primary definition node. If you do not check this box, it is assumed that you have already created the table definitions in the primary node. If you are using the offline snapshot technique to create this primary node, do not check this box. See [Loading Tables From an External +Data Source (Offline Snapshot)](../07_common_operations/09_offline_snapshot/#offline_snapshot) for information on using an offline snapshot. +- `Perform Initial Snapshot.` Check this box if you want the publication server to perform a snapshot from the primary definition node to this primary node when you click the Save button. If you do not check this box, the tables on the primary node will not be loaded until you perform a replication at some later time. If you are using the offline snapshot technique to create this primary node, you should have already loaded the table rows. Therefore do not check this box unless you want to reload the data. See [Loading Tables From an External Data Source (Offline Snapshot)](../07_common_operations/09_offline_snapshot/#offline_snapshot) for information on using an offline snapshot. ![Publication Service - Add Database dialog box for an additional primary node](../images/image124.png) +**Figure 6-12: Publication Service - Add Database dialog box for an additional primary node** + + !!! Note - Unless you intend to use the offline snapshot technique (see Loading Tables From an External Data Source (Offline Snapshot) <offline_snapshot>), it is suggested that you check the Perform Initial Snapshot box. An initial snapshot replication must be performed from the primary definition node to every other primary node before performing synchronization replications on demand (see [Performing Synchronization Replication](05_on_demand_replication_mmr/#perform_synchronization_replication_mmr)) or by a schedule (see [Creating a Schedule](../07_common_operations/02_creating_schedule/#creating_schedule)). If a newly added primary node did not undergo an initial snapshot, any subsequent synchronization replication may fail to apply the transactions to that primary node. The initial snapshot can also be taken by performing an on demand snapshot (see [Performing Snapshot Replication](05_on_demand_replication_mmr/#perform_snapshot_replication_mmr)). + Unless you intend to use the offline snapshot technique (see [Loading Tables From an External Data Source (Offline Snapshot)](../07_common_operations/09_offline_snapshot/#offline_snapshot), it is suggested that you check the Perform Initial Snapshot box. An initial snapshot replication must be performed from the primary definition node to every other primary node before performing synchronization replications on demand (see [Performing Synchronization Replication](05_on_demand_replication_mmr/#perform_synchronization_replication_mmr)) or by a schedule (see [Creating a Schedule](../07_common_operations/02_creating_schedule/#creating_schedule)). If a newly added primary node did not undergo an initial snapshot, any subsequent synchronization replication may fail to apply the transactions to that primary node. The initial snapshot can also be taken by performing an on demand snapshot (see [Performing Snapshot Replication](05_on_demand_replication_mmr/#perform_snapshot_replication_mmr)). **Step 4:** Click the `Test` button. If `Test Result: Success` appears, click the `OK` button. ![Successful primary node test](../images/image125.png) +**Figure 6-13: Successful primary node test** + If an error message appears investigate the cause of the error, correct the problem, and repeat steps 1 through 4. **Step 5 (Optional):** If you defined a set of available table filters for the publication, you have the option of enabling these filters on this primary node. See [Adding a Publication](02_creating_publication_mmr/#add_pub_mmr) for instructions on defining table filters. If you do not wish to filter the rows that are replicated to this primary node, go to Step 6. @@ -52,6 +58,8 @@ In the following example the filter named `dept_10_20_30` is enabled on the dept ![Enabling filter rules on a primary node](../images/image126.png) +**Figure 6-14: Enabling filter rules on a primary node** + **Step 6:** Check the Perform Initial Snapshot box if you want the publication server to perform a snapshot from the primary definition node to this primary node when you click the Save button. If you do not check this box, the tables on the primary node will not be loaded until you perform a replication at some later time. If you are using the offline snapshot technique to create this primary node, you should have already loaded the table rows. Therefore do not check this box unless you want to reload the data. See Loading Tables From an External Data Source (Offline Snapshot) <offline_snapshot> for information on using an offline snapshot. @@ -60,10 +68,15 @@ If you do check the Perform Initial Snapshot check box, the Verbose Output check ![Initial snapshot with verbose output option](../images/image127.png) +**Figure 6-15: Initial snapshot with verbose output option** + If you skipped the enabling of table filters as described in Step 5, and you checked the `Perform Initial Snapshot` check box after Step 4, the `Verbose Output` check box is displayed as well: ![Initial snapshot with verbose output option](../images/image128.png) +**Figure 6-16: Initial snapshot with verbose output option** + + Select the `Verbose Output` check box only if you want to display the output from the snapshot in the dialog box. This option should be left unchecked in a network address translation (NAT) environment as a large amount of output from the snapshot may delay the response from the Snapshot dialog box. Click the `Save` button. @@ -72,6 +85,8 @@ When the publication database definition is successfully saved, a Publication Da ![Replication tree after adding an additional primary node](../images/image129.png) +**Figure 6-17: Replication tree after adding an additional primary node** + Unlike the primary definition node, the label PDN does not appear at the end of the node in the replication tree. The PDN field is set to No in the Property window to indicate this is not the primary definition node. In addition, a Publication node appears under the newly added primary node. This Publication node represents the publication in the primary definition node, which is replicated to the primary node. @@ -80,6 +95,8 @@ If in Step 6, you checked the `Perform Initial Snapshot` check box, an initial s ![- Adding a primary node with an initial snapshot](../images/image130.png) +**Figure 6-18: Adding a primary node with an initial snapshot** + If the snapshot is successful, the replicated tables in the primary node are loaded with the rows from the publication tables of the primary definition node. Step 7: If you expect update/update conflicts, then set the `REPLICA IDENTITY` option to `FULL` on those tables where the conflicts are expected to occur. See [Configuration Parameter and Table Setting Requirements](06_conflict_resolution/01_configuration_para_andtable_setting/#configuration_para_and_table_setting) for additional information. diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/05_on_demand_replication_mmr.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/05_on_demand_replication_mmr.mdx index 0ba501b5afe..b5e8fc4d46d 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/05_on_demand_replication_mmr.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/05_on_demand_replication_mmr.mdx @@ -23,6 +23,8 @@ When you create a primary node for the first time, you have the option of perfor ![Selecting a primary node publication for an on demand snapshot](../images/image131.png) +**Figure 6-19: Selecting a primary node publication for an on demand snapshot** + **Step 2:** Open the `Snapshot` dialog box in any of the following ways: - Click the secondary mouse button on the Publication node and choose Snapshot. @@ -30,10 +32,17 @@ When you create a primary node for the first time, you have the option of perfor ![Opening the Snapshot dialog box](../images/image132.png) +****Figure 6-20: Opening the Snapshot dialog box** + + **Step 3:** Select the `Verbose Output` check box only if you want to display the output from the snapshot in the dialog box. This option should be left unchecked in a network address translation (NAT) environment as a large amount of output from the snapshot may delay the response from the Snapshot dialog box. Click the `Snapshot` button to start snapshot replication. ![Snapshot dialog box](../images/image133.png) + +**Figure 6-21: Snapshot dialog box** + + **Step 4:** `Snapshot Taken` Successfully appears if the snapshot was successful. Click the `OK` button. If the snapshot was not successful, scroll through the messages in the Snapshot dialog box window if Verbose Output was selected or check the log files. The status messages of each snapshot are saved in the Migration Toolkit log files named `mtk.log[.n]` (where `[.n]` is an optional history file count if log file rotation is enabled) in the following directories: @@ -50,6 +59,8 @@ The status messages of each snapshot are saved in the Migration Toolkit log file ![Successful on demand snapshot](../images/image134.png) +**Figure 6-22: Successful on demand snapshot** + The publication has now been replicated from the primary definition node to the selected primary node. A record of the snapshot is maintained in the replication history. See [Viewing Replication History](../07_common_operations/04_view_replication_history/#view_replication_history) for information on how to view replication history. @@ -78,6 +89,8 @@ The following steps describe how to initiate on demand synchronization replicati ![Selecting a primary node publication for an on demand synchronization](../images/image131.png) +**Figure 6-23: Selecting a primary node publication for an on demand synchronization** + **Step 2:** Open the `Synchronize` dialog box in any of the following ways: - Click the secondary mouse button on the Publication node and choose `Synchronize`. @@ -85,14 +98,20 @@ The following steps describe how to initiate on demand synchronization replicati ![Opening the Synchronize dialog box](../images/image135.png) +**Figure 6-24: Opening the Synchronize dialog box** + **Step 3:** Click the `Synchronize` button to start synchronization replication. ![Synchronize dialog box](../images/image136.png) +**Figure 6-25: Synchronize dialog box** + **Step 4:** `Publication Synchronized Successfully(())` appears if the synchronization was successful. Click the `OK` button. If the synchronization was not successful, an error message is displayed. ![Successful on demand synchronization](../images/image137.png) +**Figure 6-26: Successful on demand synchronization** + The operations that were applied to the publication tables can be seen in the replication history. See [Viewing Replication History](../07_common_operations/04_view_replication_history/#view_replication_history) for information on how to view replication history. Conflicting changes that were encountered can be seen in the conflict history. See [Viewing Conflict History](07_view_conflict_history/#view_conflict_history) for information on how to view conflict history. diff --git a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx index 402b2c72253..54de1091e9f 100644 --- a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx +++ b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx @@ -2,6 +2,8 @@ title: "Using Secure Sockets Layer (SSL) Connections" --- +#using_ssl_connections + Publication server and subscription server connections to Postgres publication databases, Postgres subscription databases, and Postgres primary nodes can be accomplished using secure sockets layer (SSL) connectivity. From 850f3876cd43d2c2d3eb6fdf15261bc5d8d2fd7c Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 13:27:58 +0530 Subject: [PATCH 02/15] content/eprs/6.2/add_captions_and_fix_url Former-commit-id: b625734904c2b2732659cdeef9896ee23126f6f7 --- .../02_creating_publication_mmr.mdx | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/02_creating_publication_mmr.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/02_creating_publication_mmr.mdx index 764d6ebdc44..b384b706e85 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/02_creating_publication_mmr.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/02_creating_publication_mmr.mdx @@ -19,6 +19,8 @@ Registering a publication server is done in a manner identical to single-master ![Replication tree after registering a publication server](../images/image68.png) +**Figure 6-1: Replication tree after registering a publication server** + After you have successfully registered a publication server, the replication tree of the xDB Replication Console displays a Publication Server node under which are the SMR and MMR type nodes. Continue to build the multi-master replication system under the MMR type node. @@ -45,22 +47,28 @@ You must enter database connection information such as the database server netwo - `User`. The database user name for the primary definition node created in Step 1 of [Preparing the Primary definition node](01_pre_steps/#prepare_pdn). - `Password`. Password of the database user. - `Database`. Enter the database name of the primary definition node. -- `URL Options (For SSL connectivity)`. Enter the URL options to establish SSL connectivity to the primary definition node. See Using Secure Sockets Layer (SSL) Connections <using_ssl_connections> for information on using SSL connections. +- `URL Options (For SSL connectivity)`. Enter the URL options to establish SSL connectivity to the primary definition node. See [Using Secure Sockets Layer (SSL) Connections](../07_common_operations/11_using_ssl_connections/#using_ssl_connections) for information on using SSL connections. - `Changeset Logging (For Postgres)`. Select Table Triggers to use the trigger-based method of synchronization replication. Select WAL Stream to use the log-based method of synchronization replication. See [Synchronization Replication with the Trigger-Based Method](../02_overview/02_replication_concepts_and_definitions/09_sync_replication_trigger_based/#sync_replication_trigger_based) for information on the trigger-based method. See [Synchronization Replication with the Log-Based Method](../02_overview/02_replication_concepts_and_definitions/10_sync_replication_log_based/#sync_replication_log_based) for information on the log-based method. - `Node Priority Level`. An integer from 1 to 10, which is the priority level assigned to this primary node for conflict resolution based on node priority. The highest priority is 1 while the lowest is 10. See [Conflict Resolution Strategies](06_conflict_resolution/04_conflict_resolution_strategies/#conflict_resolution_strategies) for information on conflict resolution strategies. The default is 1 for the primary definition node. ![Publication Service - Add Database dialog box for the primary definition node](../images/image114.png) +**Figure 6-2: Publication Service - Add Database dialog box for the primary definition node** + **Step 4:** Click the `Test` button. If `Test Result: Success` appears, click the `OK` button, then click the `Save` button. ![Successful primary definition node test](../images/image115.png) +**Figure 6-3: Successful primary definition node test** + If an error message appears investigate the cause of the error, correct the problem, and repeat steps 1 through 4. When the publication database definition is successfully saved, a Publication Database node is added to the replication tree under the MMR type node of the Publication Server node. ![Replication tree after adding the primary definition node](../images/image116.png) +**Figure 6-4: Replication tree after adding the primary definition node** + The label `PDN` appears at the end of the node in the replication tree and in addition, the `PDN` field is set to Yes in the Property window to indicate this is the primary definition node. @@ -80,6 +88,8 @@ Subordinate to the primary definition node, you create a publication that contai ![Create Publication dialog box](../images/image117.png) +**Figure 6-5: Create Publication dialog box** + If you wish to use table filters during replications between primary nodes in this multi-master replication system, follow the directions in the next step to define the initial set of available table filters, otherwise go on to Step 4. **Step 3 (Optional):** Table filters consist of a set of filter rules that control the selection criteria for rows replicated between primary nodes during a snapshot or a synchronization replication. @@ -108,14 +118,20 @@ In the following example a filter rule is defined on the dept table so only rows ![Adding a filter rule for the dept table](../images/image118.png) +**Figure 6-6: Adding a filter rule for the dept table** + The following shows a rule added to the `emp` table by choosing `edb.emp` from the Table/View drop-down list and then entering the selection criteria for only rows with `deptno` containing 10 in the Filter dialog box. ![Adding a filter rule for the emp table](../images/image119.png) +**Figure 6-7: Adding a filter rule for the emp table** + Repeating this process, additional filter rules can be added for the `emp` table. The following shows the complete set of available filter rules defined for the `dept` and `emp` tables. ![Set of all available filter rules](../images/image120.png) +**Figure 6-8: Set of all available filter rules** + To remove a filter rule, click the primary mouse button on the filter rule you wish to remove so the entry is highlighted and then click the `Remove Filter` button. You may also modify the filter name or filter clause of a filter rule listed in the Table Filters tab by double-clicking on the cell of the filter name or filter clause you wish to change. When the cursor appears in the cell, enter the text for the desired change. @@ -133,6 +149,8 @@ If you wish to change the conflict resolution options from their default setting ![Conflict Resolution Options tab](../images/image121.png) +**Figure 6-9: Conflict Resolution Options tab** + If during synchronization replication, conflicting changes are pending against the same row from different primary nodes, the conflict resolution strategy determines which of the conflicting changes is accepted and replicated to all primary nodes. The conflicting changes that are not accepted are discarded. If the selection from the Conflict Resolution Strategy column does not resolve the conflict, the selection from the Standby Conflict Resolution Strategy column is applied. If neither strategy resolves the conflict, the event is marked as Pending in the Conflict History tab. See [Viewing Conflict History](07_view_conflict_history/#view_conflict_history) for information on viewing conflict history. @@ -155,6 +173,10 @@ See [Conflict Resolution Strategies](06_conflict_resolution/04_conflict_resoluti ![Publication created successfully](../images/image122.png) +**Figure 6-10: Publication created successfully** + Upon successful publication creation, a Publication node is added to the replication tree. ![Replication tree after adding a publication](../images/image123.png) + +**Figure 6-11: Replication tree after adding a publication** From 2b6364ea7669706ae6f5c9272e8a0120c7fb61fd Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 13:33:42 +0530 Subject: [PATCH 03/15] content/eprs/6.2/add_table_title Former-commit-id: 39de12bb4708a2b69aea9f6ef2729afcb1a25571 --- .../06_conflict_resolution/02_conflict_types.mdx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/02_conflict_types.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/02_conflict_types.mdx index e5c6640b6eb..018ff72e27c 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/02_conflict_types.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/02_conflict_types.mdx @@ -22,29 +22,32 @@ CREATE TABLE addrbook ( The following table illustrates an example of a uniqueness conflict. +**Table 6-1: Uniqueness Conflict** + | | | | | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Timestamp `t1`
| Action **Node A:** INSERT INTO addrbook (name, address) VALUES ('A', 'ADDR A');

**Node A:** INSERT INTO addrbook (name, address) VALUES ('B', 'ADDR B');
| Primary node A id = 1, name = 'A', address = 'ADDR A'

id = 2, name = 'B', address = 'ADDR B'
| Primary node B
| | `t2`

`t3`
| **Node B:** INSERT INTO addrbook (name, address) VALUES ('C', 'ADDR C');

Synchronization pushes Node A changes to Node B
| id = 1, name = 'A', address = 'ADDR A'

id = 2, name = 'B', address = 'ADDR B'
| id = 1, name = 'C', address = 'ADDR C'

**Row change for INSERT tx id = 1 on Node A results in unique key conflict on Node B**

id = 1, name = 'C', address = 'ADDR C'

**id = 1, name = 'A', address = 'ADDR A'**
| -**Uniqueness Conflict** The following table illustrates an example of an update conflict. +**Table 6-2: Update Conflict** + | | | | | | -------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | Timestamp `t0` | Action | Primary node A id = 2, address = 'ADDR B' | Primary node B id = 2, address = 'ADDR B' | | `t1` | **Node A:** UPDATE addrbook SET address = 'ADDR B1' WHERE id = 2; | id = 2, address = **'ADDR B1'** | id = 2, address = 'ADDR B' | | `t2` `t3` | **Node B:** UPDATE addrbook SET address = 'ADDR B2' WHERE id = 2; Synchronization pushes Node A changes to Node B | id = 2, address = 'ADDR B1' | id = 2, address = **'ADDR B2'** **Current value of address on Node B not equal old value on Node A ('ADDR B2' <> 'ADDR B')** | -**Update Conflict** The following table illustrates an example of a delete conflict. +**Table 6-3: Delete Conflict** + | | | | | | -------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | Timestamp `t0` | Action | Primary node A id = 2, address = 'ADDR B' | Primary node B id = 2, address = 'ADDR B' | | `t1` | **Node A:** UPDATE addrbook SET address = 'ADDR B1' WHERE id = 2; | id = 2, address = **'ADDR B1'** | id = 2, address = 'ADDR B' | | `t2` `t3` | **Node B:** DELETE FROM addrbook WHERE id = 2; Synchronization pushes Node A changes to Node B | id = 2, address = 'ADDR B1' | **Row with id = 2 deleted** **The row with id = 2 is already deleted on target Node B, hence update from Node A fails.** | -**Delete Conflict** From 7d7265efaac755adf7806bef6a9e4d9c43b82086 Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 13:47:01 +0530 Subject: [PATCH 04/15] content/eprs/6.2/fix_table Former-commit-id: 9a8fdfcb4896104bd1fac1c71cfa29135284b7e5 --- .../05_conflict_prevention_uniquness.mdx | 11 ++++++----- .../07_common_operations/11_using_ssl_connections.mdx | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/05_conflict_prevention_uniquness.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/05_conflict_prevention_uniquness.mdx index 094f4df293b..3e5ff08801f 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/05_conflict_prevention_uniquness.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/05_conflict_prevention_uniquness.mdx @@ -13,9 +13,10 @@ The following are possible strategies: - **Common sequence**. All nodes share a common sequence object, however this has the major disadvantage of slowing down transaction processing due to network round-trips associated with each ID generation. - **MMR-ready sequence**. This is a technique that enhances the use of sequences and provides a more flexible, reliable approach for a distributed, multiple database architecture as is inherent in a multi-master replication system. This approach is recommended over the previously listed sequence techniques. See [Conflict Prevention with an MMR-Ready Sequence](06_conflict_prevention_mmr_ready/#conflict_prevention_mmr_ready) for information on an MMR-ready sequence. -| | | | | -| ----------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------- | --------------------------------------------- | -| **Sequence Clause** `START WITH` `INCREMENT BY`
| **Primary node A** 1 2 5 5
| - **Primary node B**

3 5
| **Primary node C**
| -| `Generated IDs` | 1, 6, 11, 16, … |


2, 7, 12, 17, …

|


3, 8, 13, 18, …

| +**Table 6-4: Sequence With Start Value Variation** -**Uniqueness Conflict** +| Sequence Clause | Primary node A | Primary node B | Primary node C | | +|--------------------|--------------------|--------------------|--------------------|---| +| START WITH | 1 | 2 | 3 | | +| INCREMENT BY | 5 | 5 | 5 | | +| Generated IDs | 1, 6, 11, 16, … | 2, 7, 12, 17, … | 3, 8, 13, 18, … | | diff --git a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx index 402b2c72253..6d9a7836475 100644 --- a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx +++ b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx @@ -2,6 +2,7 @@ title: "Using Secure Sockets Layer (SSL) Connections" --- + Publication server and subscription server connections to Postgres publication databases, Postgres subscription databases, and Postgres primary nodes can be accomplished using secure sockets layer (SSL) connectivity. @@ -348,7 +349,7 @@ For publication, subscription, and primary node databases, in the URL Options fi The following is an example of the Add Database dialog box with the `ssl=true` URL option. -![Add Database with SSL URL option](../images/image290.png) +![Add Database with SSL URL option](/../images/image290.png) !!! Note If you no longer wish to use an SSL connection to an xDB Replication Server database, you must completely delete the `ssl=true` text from the URL Options field of the Add Database or Update Database dialog box. Simply changing true to false does not have the effect of disabling the SSL option. From 8465a2f84cba6e54620d1f69f360aa68feef5afa Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 14:10:59 +0530 Subject: [PATCH 05/15] content/eprs/6.2/fix_table_and_heading Former-commit-id: d894ef0124da0e4fd970870d2288cd3922a934e4 --- .../02_mmr_ready_example.mdx | 2 ++ .../07_auto_conflict_resolution_eg.mdx | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/06_conflict_prevention_mmr_ready/02_mmr_ready_example.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/06_conflict_prevention_mmr_ready/02_mmr_ready_example.mdx index 0f4d639e2d3..97e4693a9a1 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/06_conflict_prevention_mmr_ready/02_mmr_ready_example.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/06_conflict_prevention_mmr_ready/02_mmr_ready_example.mdx @@ -131,6 +131,8 @@ The resulting primary nodes are shown in the xDB Replication Console. ![Publication table with MMR-ready sequence](../../../images/image138.png) +**Figure 6-27: Publication table with MMR-ready sequence** + !!! Note The Default Value property of the id column uses the `MMR_sequence_nextval` function. diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/07_auto_conflict_resolution_eg.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/07_auto_conflict_resolution_eg.mdx index c30b3c0de7a..66d26936e09 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/07_auto_conflict_resolution_eg.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/07_auto_conflict_resolution_eg.mdx @@ -8,9 +8,13 @@ This example illustrates a scenario where a transaction change originating from The conflict resolution option is set to latest timestamp. + +**Table 6-5: Automatic Conflict Resolution Example** + > | | | | | | > | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -> | **Timestamp** `t0` | **Action** | **Primary node A** id = 2, address = 'ADDR' | **Primary node B** id = 2, address = 'ADDR' | **Primary node C** id = 2, address = 'ADDR' | +> | **Timestamp** | **Action** | **Primary node A** | **Primary node B** | **Primary node C** | +> | `t0` | | id = 2, address = 'ADDR' | id = 2, address = 'ADDR' | id = 2, address = 'ADDR' > | `t1` | **Node A:** UPDATE addrbook SET address = 'ADDR A' WHERE id = 2; | id = 2, address = **'ADDR A'** | id = 2, address = 'ADDR' | id = 2, address = 'ADDR' | > | `t2` | **Node C:** UPDATE addrbook SET address = 'ADDR C' WHERE id = 2; | id = 2, address = 'ADDR A' | id = 2, address = 'ADDR' | id = 2, address = **'ADDR C'** | > | `t3` | Synchronization pushes Node A changes to Node B. Changes successfully applied. | id = 2, address = 'ADDR A' | id = 2, address = **'ADDR A'** | id = 2, address = 'ADDR C' | From 995fa46a527ea7519741c68c5bc686b25dfeea12 Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 14:21:06 +0530 Subject: [PATCH 06/15] content/eprs/6.2/add_image_title Former-commit-id: 989f3fe2bf393f2dfa0bbd409f3da2ae42c65751 --- .../02_adding_custom_conflict_handling_function.mdx | 6 ++++++ .../03_custom_conflict_handling_examples.mdx | 2 ++ 2 files changed, 8 insertions(+) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/02_adding_custom_conflict_handling_function.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/02_adding_custom_conflict_handling_function.mdx index ed75adb772a..88abb0804d7 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/02_adding_custom_conflict_handling_function.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/02_adding_custom_conflict_handling_function.mdx @@ -19,6 +19,8 @@ CREATE FUNCTION ![Opening the Conflict Resolution Options tab](../../../images/image139.png) +**Figure 6-28: Opening the Conflict Resolution Options tab** + - From the `Publication` menu, choose `Update Publication`, then `Conflict Resolution Options`. - Click the secondary mouse button on the Publication node, choose `Update Publication`, and then choose `Conflict Resolution Options`. @@ -26,10 +28,14 @@ CREATE FUNCTION ![Setting conflict resolution to custom conflict handling](../../../images/image140.png) +**Figure 6-29: Setting conflict resolution to custom conflict handling** + **Step 5:** Click the `Update` button, and then click `OK` in response to the `Conflict Resolution Options Updated Successfully` confirmation message. ![Successfully updated conflict resolution options](../../../images/image141.png) +**Figure 6-30: Successfully updated conflict resolution options** + !!! Note If the multi-master replication system uses custom conflict handling, and you subsequently switch the role of the primary definition node to another primary node, you must re-add the functions to the new primary definition node. That is, you must repeat Step 2 on the new primary definition node. diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/03_custom_conflict_handling_examples.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/03_custom_conflict_handling_examples.mdx index cdc586c514e..111fbaeeaea 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/03_custom_conflict_handling_examples.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/08_custom_conflict_handling/03_custom_conflict_handling_examples.mdx @@ -46,6 +46,8 @@ After a synchronization replication, the update/update conflict is detected and ![Conflict resolved by custom conflict handling](../../../images/image142.png) +**Figure 6-31: Conflict resolved by custom conflict handling** + In the source primary node the `loc` column of department 50 loses the value set in its UPDATE statement. The column is reset to the value from the target primary node. ```text From cd2adb9d7815538dda6674b8026e4e8c38952fdc Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 14:50:11 +0530 Subject: [PATCH 07/15] content/eprs/6.2/add_title Former-commit-id: e1f844a4ac15023df12da8e5387e7dfe098c48d4 --- .../01_find_conflict.mdx | 4 ++++ .../03_overview_correction_strategies.mdx | 2 ++ .../index.mdx | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/01_find_conflict.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/01_find_conflict.mdx index f0133b1864e..b275105ea7e 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/01_find_conflict.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/01_find_conflict.mdx @@ -8,12 +8,16 @@ Conflicts can be found using the `Conflict History` tab as described in Section ![Conflict History tab for trigger-based method](../../../images/image143.png) +**Figure 6-32: Conflict History tab for trigger-based method** + The `Source DB` and `Target DB` columns provide the IP address and database names of the source and target primary nodes involved in the conflict. Click the `View Data link` to show the details of the transactions involved in a particular conflict as shown by the following: ![Conflict Details window](../../../images/image144.png) +**Figure 6-33: Conflict Details window** + You can also obtain this information from a SQL query rather than from the xDB Replication Console graphical user interface. The following query can be run from a primary node to display information regarding pending (unresolved) conflicts: ```text diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/03_overview_correction_strategies.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/03_overview_correction_strategies.mdx index df39c4b2e3f..0705eab4c03 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/03_overview_correction_strategies.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/03_overview_correction_strategies.mdx @@ -109,6 +109,8 @@ The Conflict History tab shows the following entry: ![Conflict History tab with a uniqueness conflict](../../../images/image145.png) +**Figure 6-34: Conflict History tab with a uniqueness conflict** + The following is the output from the SQL query described in Section [Finding Conflicts](01_find_conflict/#find_conflict). ```text diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/index.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/index.mdx index 60d7a7df94f..84e6d62f150 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/index.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/index.mdx @@ -7,7 +7,7 @@ title: "Manual Conflict Resolution for the Trigger-Based Method" !!! Note The manual conflict resolution discussion in this section applies only to multi-master replication systems configured with the trigger-based method of synchronization replication. See [Manual Conflict Resolution for the Log-Based Method](../10_manual_conflict_resolution_log_based_method/#manual_conflict_resolution_log_based_method) for information on manual conflict resolution for multi-master replication systems configured with the log-based method of synchronization replication. -As discussed in Section Conflict Prevention – Uniqueness Case <conflict_prevention_uniquness> there is no built-in, automatic conflict resolution strategy for the uniqueness (`insert/insert`) conflict. If a uniqueness conflict occurs, then you must modify rows in the publication tables containing the conflict as well as modify rows in the control schema tables in the primary nodes to resolve the conflict. +As discussed in Section [Conflict Prevention – Uniqueness Case](../05_conflict_prevention_uniquness/#conflict_prevention_uniquness) there is no built-in, automatic conflict resolution strategy for the uniqueness (`insert/insert`) conflict. If a uniqueness conflict occurs, then you must modify rows in the publication tables containing the conflict as well as modify rows in the control schema tables in the primary nodes to resolve the conflict. Similarly, manual correction must be used for `update/delete` and `delete/update` conflicts. In addition, if the conflict resolution option is set to Manual (see Section [Updating the Conflict Resolution Options](../../08_update_conflict_resolution_options/#update_conflict_resolution_options)) and a conflict occurs, this conflict must also be resolved in a manual fashion. From ba92395e38e7fffc822481c405bbc12dee4e96fa Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 15:22:48 +0530 Subject: [PATCH 08/15] content/eprs/6.2/add_image_titles Former-commit-id: a6534234d7d054bcaa7fbb6ead5a6857857499a1 --- .../04_manual_publication_table_correction.mdx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/04_manual_publication_table_correction.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/04_manual_publication_table_correction.mdx index 4b79a8fd464..19f6a2bd0ed 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/04_manual_publication_table_correction.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/04_manual_publication_table_correction.mdx @@ -184,12 +184,16 @@ The following shows the `rrep_tx_conflict_status` column marked `P` (pending) in ![Shadow table entry with pending conflict](../../../images/image146.png) +**Figure 6-35: Shadow table entry with pending conflict** + Modify column `rrep_tx_conflict_status` by changing the value to `D` (discarded) to show that the pending conflict has been resolved. A value of D also ensures that the shadow table entry will not be replicated during any future synchronization replications. Make this change to the shadow tables in both `MMRnode_a` and `MMRnode_b`. ![Discarded shadow table entry](../../../images/image147.png) +**Figure 6-36: Discarded shadow table entry** + Be sure to qualify the row with the correct `rrep_sync_id` value if you perform the update using a SQL statement such as in the following: ```text @@ -218,6 +222,8 @@ The following shows the Conflict History tab prior to updating the `xdb_conflict ![Pending uniqueness conflict](../../../images/image145.png) +**Figure 6-37: Pending uniqueness conflict** + The conflict entry for synchronization from `MMRnode_a` to `MMRnode_b` can be located in xdb_conflicts with the following query for this example: ```text @@ -319,6 +325,8 @@ These entries appear in the Postgres Enterprise Manager Client as shown by the f ![Pending conflict in xdb_conflicts](../../../images/image147.png) +**Figure 6-38: Pending conflict in xdb_conflicts** + Change the value in column resolution_status from P (pending) to C (completed) to indicate this conflict has been resolved. The value in winning_db_id is changed to 4 to indicate primary node `MMRnode_b` contains the winning transaction. The value in `winning_rrep_sync_id` is changed to the value of rrep_sync_id for the shadow table entry of the transaction in `MMRnode_b` since this is the one deemed to be correct. The SQL statement to perform this update for the `MMRnode_a` to the `MMRnode_b` synchronization conflict is the following: @@ -363,6 +371,10 @@ The following are the updated xdb_conflicts entries: ![Resolved conflict in xdb_conflicts](../../../images/image149.png) +**Figure 6-39: Resolved conflict in xdb_conflicts** + When viewed in the Conflict History tab, the entries now show Resolved instead of Pending in the Resolution Status column, and the Winning DB column shows the address of primary node `MMRnode_b`. ![Resolved uniqueness conflict](../../../images/image150.png) + +**Figure 6-40: Resolved uniqueness conflict** From 9594cfd82cc575b9d11f5bd7aaca4b8bdf1d6a82 Mon Sep 17 00:00:00 2001 From: Rasika03 Date: Thu, 25 Mar 2021 15:36:03 +0530 Subject: [PATCH 09/15] content/eprs/6.2/add_img Former-commit-id: 907cabc9b254d9bdf9dd38184431a53163eee9a8 --- .../05_correction_using_new_txn.mdx | 6 ++++++ .../04_manual_publication_table_correction_log_based.mdx | 2 ++ .../05_correction_using_new_txn_log_based.mdx | 2 ++ 3 files changed, 10 insertions(+) diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/05_correction_using_new_txn.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/05_correction_using_new_txn.mdx index 587ce7ed0ee..96c76b1130e 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/05_correction_using_new_txn.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/09_manual_conflict_resolution_trigger_based_method/05_correction_using_new_txn.mdx @@ -168,6 +168,8 @@ The resulting change for the shadow table on `MMRnode_a` is as follows. ![Discarded shadow table entry](../../../images/image151.png) +**Figure 6-41: Discarded shadow table entry** + !!! Note The second entry for the accepted transaction you ran in Step 2 where `rrep_tx_conflict_status` is set to null indicating there was no conflict. @@ -175,8 +177,12 @@ The resulting change for the shadow table on `MMRnode_b` is as follows. ![Discarded shadow table entry](../../../images/image152.png) +**Figure 6-42: Discarded shadow table entry** + There is no shadow table entry in `MMRnode_c`, since an insert transaction was not performed in that primary node by the application. **Step 5:** In the control schema of the publication database currently designated as the controller database, modify the entries in the `xdb_conflicts` table to indicate the conflict has been resolved as in Step 3 of Section [Manual Publication Table Correction](04_manual_publication_table_correction/#manual_publication_table_correction). ![Resolved conflict in xdb_conflicts](../../../images/image153.png) + +**Figure 6-43 - Resolved conflict in xdb_conflicts** diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/04_manual_publication_table_correction_log_based.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/04_manual_publication_table_correction_log_based.mdx index 638c0e062d1..fa9732bba03 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/04_manual_publication_table_correction_log_based.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/04_manual_publication_table_correction_log_based.mdx @@ -115,6 +115,8 @@ The following shows the **Conflict History** tab prior to updating the `xdb_conf ![Pending uniqueness conflict](../../../images/image160.png) +**Figure 6-35: Shadow table entry with pending conflict** + The entry for the pending insert/insert conflict on the deptno primary key value of 50 can be located in xdb_conflicts with the following query for this example: ```text diff --git a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/05_correction_using_new_txn_log_based.mdx b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/05_correction_using_new_txn_log_based.mdx index 7e0cad3b2cb..3d729874cfa 100644 --- a/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/05_correction_using_new_txn_log_based.mdx +++ b/product_docs/docs/eprs/6.2/06_mmr_operation/06_conflict_resolution/10_manual_conflict_resolution_log_based_method/05_correction_using_new_txn_log_based.mdx @@ -144,3 +144,5 @@ MMRnode_c=# SELECT * FROM dept; **Step 4:** In the control schema of the publication database currently designated as the controller database, modify the entry in the `xdb_conflicts` table to indicate the conflict has been resolved as in Step 2 of Section [Conflict Resolution Concept for the Log-Based Method](02_conflict_resolution_for_log_based/#conflict_resolution_for_log_based). ![Resolved conflict in xdb_conflicts](../../../images/image164.png) + +**Figure 6 -41 - Discarded shadow table entry** From 8ad86aede382ecdae5148f18bcac99b95b60cb49 Mon Sep 17 00:00:00 2001 From: Robert Stringer Date: Thu, 25 Mar 2021 11:09:00 +0000 Subject: [PATCH 10/15] hotfix: search dark mode dropdown active state fixed Former-commit-id: 12ef932d50b5967b15ee0bd7486c201647922b3c --- src/styles/_dark.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/styles/_dark.scss b/src/styles/_dark.scss index 9ea595481cd..4a23bcb598c 100644 --- a/src/styles/_dark.scss +++ b/src/styles/_dark.scss @@ -196,7 +196,8 @@ html.dark { color: $light; } .dropdown-item:hover, - .dropdown-item:active { + .dropdown-item:active, + .dropdown-item:focus { background-color: $gray-800; color: $light !important; } From 7608251dc4b7e2c2d03706c198c57d884433ebf3 Mon Sep 17 00:00:00 2001 From: Robert Stringer Date: Thu, 25 Mar 2021 13:16:22 +0000 Subject: [PATCH 11/15] fixing #1109 Former-commit-id: 637bde343598519e8778c97dea31114484aae529 --- src/pages/index.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/pages/index.js b/src/pages/index.js index acf20246463..8f3aaaaa352 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -130,8 +130,10 @@ const Page = () => ( iconName={iconNames.HIGH_AVAILABILITY} headingText="High Availability Tools" > + Failover Manager + pgBouncer + pgPool-II Replication Server - Failover Manager Slony @@ -186,19 +188,20 @@ const Page = () => ( iconName={iconNames.CODE_WRITING} headingText="Integration" > - {/* Foreign Data Wrappers */} + Foreign Data Wrappers - Hadoop Data Adapter + Hadoop Foreign Data Wrapper - Mongo Data Adapter - - - JDBC Connector + Mongo Foreign Data Wrapper MySQL Foreign Data Wrapper + Connectors + + JDBC Connector + .NET Connector @@ -208,8 +211,6 @@ const Page = () => ( ODBC Connector - pgBouncer - pgPool-II From 62dff4d7af199cf9f0de7d7243eb260f9815bd75 Mon Sep 17 00:00:00 2001 From: Evan Barger Date: Thu, 25 Mar 2021 11:19:09 -0400 Subject: [PATCH 12/15] Add slack webhook for pdf workflow failure Former-commit-id: 5719d5bf4d4280b12025dd24e3433191fbbc7f95 --- .github/workflows/update-pdfs-on-develop.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/update-pdfs-on-develop.yml b/.github/workflows/update-pdfs-on-develop.yml index b6ea601dd9e..3b08019b7ee 100644 --- a/.github/workflows/update-pdfs-on-develop.yml +++ b/.github/workflows/update-pdfs-on-develop.yml @@ -6,6 +6,7 @@ on: paths: - product_docs/docs/**.mdx - scripts/pdf/generate_pdf.py + - .github/workflows/update-pdfs-on-develop.yml jobs: build-deploy: runs-on: ubuntu-20.04 @@ -43,3 +44,10 @@ jobs: git add *.pdf git commit -m "New PDFs generated by Github Actions" git push + + - uses: act10ns/slack@v1 + with: + status: ${{ job.status }} + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} From 154d6e843cb784c9923d183a2b2381ab71a47bcf Mon Sep 17 00:00:00 2001 From: Evan Barger Date: Thu, 25 Mar 2021 11:30:10 -0400 Subject: [PATCH 13/15] Update workflows with slack alerts Former-commit-id: 7343250287f60bd53fdcf76a469d518531fe39f5 --- .github/workflows/deploy-develop.yml | 7 +++++++ .github/workflows/deploy-main.yml | 7 +++++++ .github/workflows/update-pdfs-on-develop.yml | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml index 08139803103..23dfe120095 100644 --- a/.github/workflows/deploy-develop.yml +++ b/.github/workflows/deploy-develop.yml @@ -57,3 +57,10 @@ jobs: env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_DEVELOP_SITE_ID }} + + - uses: act10ns/slack@v1 + with: + status: ${{ job.status }} + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} diff --git a/.github/workflows/deploy-main.yml b/.github/workflows/deploy-main.yml index 59b7cf8b129..a71d90cd432 100644 --- a/.github/workflows/deploy-main.yml +++ b/.github/workflows/deploy-main.yml @@ -58,3 +58,10 @@ jobs: env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_MAIN_SITE_ID }} + + - uses: act10ns/slack@v1 + with: + status: ${{ job.status }} + if: always() + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} diff --git a/.github/workflows/update-pdfs-on-develop.yml b/.github/workflows/update-pdfs-on-develop.yml index 3b08019b7ee..aa50ae4db49 100644 --- a/.github/workflows/update-pdfs-on-develop.yml +++ b/.github/workflows/update-pdfs-on-develop.yml @@ -8,7 +8,7 @@ on: - scripts/pdf/generate_pdf.py - .github/workflows/update-pdfs-on-develop.yml jobs: - build-deploy: + build-pdfs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 From 30f6a24aad43e0488650c32f4cf5251f38463e42 Mon Sep 17 00:00:00 2001 From: Evan Barger Date: Thu, 25 Mar 2021 11:30:41 -0400 Subject: [PATCH 14/15] Fix EPRS 6.2 image path Former-commit-id: 41dfa52e7ec36842b40c1e74d16c73564c0a9922 --- .../eprs/6.2/07_common_operations/11_using_ssl_connections.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx index 50fbfaa5209..54de1091e9f 100644 --- a/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx +++ b/product_docs/docs/eprs/6.2/07_common_operations/11_using_ssl_connections.mdx @@ -350,7 +350,7 @@ For publication, subscription, and primary node databases, in the URL Options fi The following is an example of the Add Database dialog box with the `ssl=true` URL option. -![Add Database with SSL URL option](/../images/image290.png) +![Add Database with SSL URL option](../images/image290.png) !!! Note If you no longer wish to use an SSL connection to an xDB Replication Server database, you must completely delete the `ssl=true` text from the URL Options field of the Add Database or Update Database dialog box. Simply changing true to false does not have the effect of disabling the SSL option. From 1bea5d916bf2b90fddee0556f788f083a59278bf Mon Sep 17 00:00:00 2001 From: josh-heyer Date: Thu, 25 Mar 2021 15:41:27 +0000 Subject: [PATCH 15/15] New PDFs generated by Github Actions Former-commit-id: 0fbb7646e90a1f967e05dd79730ea6e5896b326d