Writing a Failure Recovery Script
Upon detecting a failure, the cluster manager should invoke a script that effectively runs the procedure shown by the failure recovery pseudocode.
Detect problem {
if (Master == unavailable) {
FailedDataDatabase = Master
FailedDSN = Master_DSN
SurvivorDatabase = Subscriber
switch users to SurvivorDatabase
}
else {
FailedDatabase = Subscriber
FailedDSN = Subscriber_DSN
SurvivorDatabase = Master
}
}
Fix problem....
If (Problem resolved) {
Get state for FailedDatabase
if (state == "failed") {
ttDestroy FailedDatabase
ttRepAdmin -dsn FailedDSN -duplicate
-from SurvivorDatabase -host SurvivorHost
-uid ttuser
-pwd ttuser
}
else {
ttAdmin -repStart FailedDSN
}
while (backlog != 0) {
wait
}
}
Switch users back to Master.This applies to either the master or subscriber databases. If the master fails, you may lose some transactions.