备用节点异常后的恢复

  • 通过停止备用主数据存储的复制代理来模拟该数据存储发生故障的情况。

    $ ttAdmin -repStop ttstandby

 
  • 启动一个 ttIsql 会话并连接到活动主数据存储(ttactive)。重新配置活动主数据存储,使更新直接复制到订户数据存储。
    $ ttisql ttmaster
    Command> call ttRepStateSave(’failed’,'ttstandby’, ‘west-mountain’);

     

  • 在活动主数据存储的 ttIsql 会话中,向 student 表插入一行。
ttmaster 会话:
Command> insert into student values (’33333333′,’Hello’,'20-AUG-09′);
Command> commit;
 
  • 启动一个 ttIsql 会话并连接到灾备中心。在灾备中心的 ttIsql 会话中,验证该行是否被复制到了 student 表,以及相关的Oracle数据库中。
ttdisaster 会话:
Command> select * from student;
……
< 33333333, Hello       , 0020-08-09 00:00:00 >
11 rows found.
 
ORCLLIN 以及 ORCLWIN 会话中都有刚才插入的记录:
 
SQL> select * from student;
 
STUDENT_ STUDENT_NAME ENROLL_DA
——– ———— ———
33333333 Hello        09-AUG-20
……
 
  • 重新启动备用主数据存储的复制代理,模拟该存储重新可用。

ttstandby
会话:
$ ttAdmin -repStart ttstandby
 
如果在实际的生产环境中,ttstandby停机的时间很长,可以直接destroy掉ttstandby,然后重新从主节点duplicate数据过来。现在再次检查ttstandby的student表中是否已经从其它节点上同步刚才插入的数据过来。发现数据已经追赶回来,且状态也和原来一样。
 
Command> select * from student;
……
< 33333333, Hello       , 0020-08-09 00:00:00 >
Command> call ttrepstateget;
< STANDBY >
1 row found.

             至此,备用节点的异常得到恢复。

留言