cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

DBREMOTE (3 Stage Process) Execution Order, Data Consistency and Efficiency

3,332

We currently have a consolidated database with a number of remotes and are using dbremote.exe in batch mode using the FILE method of replication. It is controlled with a custom synchronisation tool, which is simply an executable that automates running a three stage synchronisation process to replicate changes between them.

[Original Process]

Stage 1: Remote database send and receive

Stage 2: Consolidated database send and receive

Stage 3: Remote database send and receive

Stage 1: dbremote.exe -b -s -r -c "uid=dba;pwd=***;dbkey=***;dbn=RemoteDatabaseName;eng=RemoteEngineName;commlinks=sharedmemory"
Stage 2: dbremote.exe -b -s -r -c "uid=dba;pwd=***;dbkey=***;dbn=ConsolidatedDatabaseName;eng=ConsolidatedEngineName;commlinks=tcp(serverport=2638;host=ServerIPAddress)"
Stage 3: dbremote.exe -b -s -r -c "uid=dba;pwd=***;dbkey=***;dbn=RemoteDatabaseName;eng=RemoteEngineName;commlinks=sharedmemory"

This three stage process was put in place many years ago, when we were still using SQLA7 and it has not since been re-evaluated as to whether it's original design was optimal. We are now using SQLA17 and as part of the update to the synchronisation tool, we are questioning whether this is actually the most effective way to ensure all changes are passed between consolidated and all remotes. In particular, we have observed that the current process often leaves an unprocessed message from the remote waiting to be applied to the consolidated database on the next synchronisation run.

Therefore, I am proposing changing the 3 stage process to the following:

[Proposed Process Change A]

Stage 1: Consolidated database send only

Stage 2: Remote database send and receive

Stage 3: Consolidated database receive only

Stage 1: dbremote.exe -b -s -c "uid=dba;pwd=***;dbkey=***;dbn=ConsolidatedDatabaseName;eng=ConsolidatedEngineName;commlinks=tcp(serverport=2638;host=ServerIPAddress)"
Stage 2: dbremote.exe -b -s -r -c "uid=dba;pwd=***;dbkey=***;dbn=RemoteDatabaseName;eng=RemoteEngineName;commlinks=sharedmemory"
Stage 3: dbremote.exe -b -r -c "uid=dba;pwd=***;dbkey=***;dbn=ConsolidatedDatabaseName;eng=ConsolidatedEngineName;commlinks=tcp(serverport=2638;host=ServerIPAddress)"

In theory, this should be more efficient and never leave any unapplied messages waiting for the next synchronisation run. However, it then occurred to me that neither would the following 3 stage process, which is more similar to the original:

[Proposed Process Change B]

Stage 1: Remote database send only

Stage 2: Consolidated database send and receive

Stage 3: Remote database receive only

Stage 1: dbremote.exe -b -s -c "uid=dba;pwd=***;dbkey=***;dbn=RemoteDatabaseName;eng=RemoteEngineName;commlinks=sharedmemory"
Stage 2: dbremote.exe -b -s -r -c "uid=dba;pwd=***;dbkey=***;dbn=ConsolidatedDatabaseName;eng=ConsolidatedEngineName;commlinks=tcp(serverport=2638;host=ServerIPAddress)"
Stage 3: dbremote.exe -b -r -c "uid=dba;pwd=***;dbkey=***;dbn=RemoteDatabaseName;eng=RemoteEngineName;commlinks=sharedmemory"

Are there any advantages/disadvantages, in data consistency and efficiency, between the original process, or between either of the new proposed processes that I have failed to consider?

The goal is to maximise data consistency between databases and make the process as efficient as possible, prioritising data consistency over efficiency while ideally staying within a three stage process and leaving no unapplied messages in the consolidated and remote replication folders.

Accepted Solutions (1)

Accepted Solutions (1)

0 Likes

Thinking about this some more, based on what you have said, it actually sounds like the following would be the optimal process to make sure that both ends are fully updated and aware of any conflict resolution bounce back and ping messages, leaving no unprocessed messages in the replication folders:

Stage 1: Remote database send only

Stage 2: Consolidated database send and receive

Stage 3: Remote database send and receive

Stage 4: Consolidated database receive only

Answers (0)