在TimesTen运维过程中,重建备机是日常运维中最经常实施的操作,这里记录一下重建备机操作步骤,便于初入门的兄弟参考。
1、注释定时任务脚本
$ crontab -e
:%s/^/#/g
2、检查主备同步情况
ttisql -connstr
Command> call ttbookmark;
Command> call ttbookmark;
3、停止主节点的复制进程
ttisql -connstr -v 1 -e "call ttrepstop;bye;"
4、检查TT的状态、检查操作节点角色
ttstatus
ttisql -connstr -v 1 -e "call ttrepstateget;bye;" --确认备机角色 standby
5、停止并删除备机
$ttadmin -cachestop
$ ps -fu timesten ---查询所有应用进程及监控进程并kill掉
Command> call ttckpt; ---做两次CheckPoint
Command> call ttckpt;
$ttadmin -ramunload ---unload DSN
$ttstatus
$ttdestroy ---删除DSN
$ttdestroy -force ---删除DSN,含有Cache Group的Data Store需要加force参数。或者按照正常操作先将所有Cache Group删除。
6、检查共享内存端
$ttdaemonadmin -stop --若该备机上仅单DSN,则停止Daemon进程,一个instance有多个DataStore则不操作此步骤
$ps -fu timesten
$ipcs -a |grep timesten
7、重建备机
在主节点启动复制进程
ttisql -connstr -v 1 -e "call ttrepstart;bye;"
$ttdaemonadmin -start
nohup ${TT_HOME}/bin/ttRepAdmin \
-duplicate -from ${STORENAME} -host ${ACTIVEHOST} \
-setMasterRepStart -ramLoad -delXla \
-UID ${UID} -PWD ${PWD} \
-compression 0 -verbosity 2 \
-keepCG -cacheUid ${CACHEUID} -cachePwd ${CACHEPWD} \
-localhost ${STANDBYHOST} \
-connStr "dsn=$DSN;uid=$UID;pwd=$PWD" \
> nohup.log
#ACTIVEHOST=主节点主机名
#STANDBYHOST=备节点主机名
#STORENAME=DS文件的前缀
#UID=数据库用户名,这里一般使用timesten,tt7.x.x则使用数据库管理用户,需要有admin权限
#PWD=密码
#CACHEUID=Cache Group的管理用户,tt7.x.x一般与上面用户相同
#CACHEPWD=Cache Group的管理用户密码。
8、检查内存加载策略
Command>host ttadmin -query ##一般设置为manual,ttadmin -rampolicy manual $DSN;
9、启动复制进程、CacheAgent进程
$ttadmin -cachestop
$ttadmin -repstop ---主备节点都要启动
10、检查运行状态和节点角色
$ttstatus
Command>call ttrepstateget;
10、设置内存不自动装载,TT如果自动装载容易引起内存耗尽故障。
$ttadmin -noautoreload
$ ttstatus -debug|grep -i auto --检查设置是否成功
11、检查TT内存库运行是否正常,启动监控,通知开发商起应用并检查应用。
重建备机注意事项
a、注意是否有一个Daemon运行多个DSN。
b、一定要检查共享内存段是否正常释放,避免加载两份内存
c、操作过程中可以多运行ttstatus,有助于时间的确定和确保操作的机器正确。