TimesTen的碎片整理

针对双向复制的tt数据进行碎片整理,有两个方式:

ttmigrate和ttrepadmin -duplicate

本文主要讲第二种使用克隆的方式进行碎片整理,前提是源库已经做过碎片整理了。

环境说明:

两台本地虚机,系统centos7.6,tt版本11.2.2.8.0:

复制器:

tt两个库都已经创建好用户ocs,密码ocs。

tt状态:

步骤:

tt备机碎片整理步骤

 

1、业务切换到主机(通过集群操作) root(如果本来就在主机则跳过此步)

          Switch business to standby (through cluster operation)

确保切换成功

cli

service-migrate

 

check list :

检查清单

 

a、备机(rootttocs用户下的crontab都检查下)

检查tt相关crontab,如果有停止掉,主要是避免连接。

业务确认。

 

b、备机

检查tt删除数据脚本,不能在备机运行。有可能是zmc清理,也有可能是crontab清理,需要确认如果是zmc清理,那么确认zmc是否是连的tt的浮动ip,如果是可以无需处理,否则需要停掉;如果是crontab清理,确保备机的定时任务不会运行。

业务确认。

 

c、备机

停备机的ocs进程,因为ocs进程会有连接连到tt,导致无法卸载tt内存。

业务确认。

 

d、备机

停备机的网管,确保网管不会连接备机的tt

业务确认。

 

e、主机

停掉备机的复制器后,tt同步日志会在主节点积压,需要观察文件系统使用增长率,估算是否满足操作时间;

get_ttlogfile_increase.sh”可以获取最近一个小时内的TT事务日志文件增长大小。

#!/usr/bin/bash

cd /gfs01/tt/tmp/

echo "
set serveroutput on
spool awk_ttckpthistory.log
call ttckpthistory;
spool off
"|ttisql ocs;

ckptbytes=`awk -F"," '{a+=$16}END{print a}' awk_ttckpthistory.log`

maxtime=`awk -F"," '{ gsub(/<|>|-|:| |Command/,""); print $0 }' awk_ttckpthistory.log | awk -F"," '{if($4 != null ) print $0}' | awk -F"," '{y1= substr($1,1,4); m1=substr($1,5,2); d1=substr($1,7,2);h1=substr($1,9,2);M1=substr($1,11,2);s1=substr($1,13,2); time1 = strftime("%s",mktime(y1" "m1" "d1" "h1" "M1" "s1));{print time1}}'|head -n 1`
mintime=`awk -F"," '{ gsub(/<|>|-|:| |Command/,""); print $0 }' awk_ttckpthistory.log | awk -F"," '{if($4 != null ) print $0}' | awk -F"," '{y1= substr($1,1,4); m1=substr($1,5,2); d1=substr($1,7,2);h1=substr($1,9,2);M1=substr($1,11,2);s1=substr($1,13,2); time1 = strftime("%s",mktime(y1" "m1" "d1" "h1" "M1" "s1));{print time1}}'|tail -n 1`

difresult=$(($maxtime-$mintime))

sumbytes=$(($ckptbytes/$difresult*3600/1024/1024))
echo "Transaction logfile increase is:"$sumbytes" MB"

 

2、查看状态 主备机 tt

          Check the main ocs server TT database status

$ ttstatus

 

3、停tt服务,主要是为了确保tt当前的连接都被断开。

$ttdaemonadmin -stopserver

 

4、调用过程确保更改都被写入两个数据库,在备机上操作。tt用户(哪个库需要被碎片整理就在哪个库上执行)

此处是gfs02主机上的tt需要被碎片整理,所以就在gfs02上执行。

>call ttRepSubscriberWait(NULL,NULL,'ocs','gfs01', 100);

参数1:需要操作的复制器的名称,为空表示所有的复制器。

参数2:需要操作的复制器的所有者,为空表示所有复制器的所有者。

参数3:订阅数据库的DS名称,为空表示订阅主机的所有DS

参数4:订阅数据库的主机名,为空表示所有的订阅数据库的主机。

参数5:等待时间,单位秒。-1表示永久等待。就是等待订阅数据库同步完成的时间。

 

5、停复制器,只能停备机的复制器,主机的复制器必须要保证是起着的,这样后面的duplicate操作才能进行。(tt用户)

          stop the main ocs server replicator .

$ttadmin -reppolicy manual ocs

$ttadmin -repstop ocs

 

6、卸载内存(备机tt

          unload the tt database memory

$ttadmin -ramPolicy manual ocs

$ttadmin -ramUnload ocs

 

7、备机上destroy数据库

$ttdestroy ocs

 

8、通过主机上的ocs克隆到备机(备机上执行)

ttRepAdmin -duplicate -from ocs -host gfs01 -UID ocs -PWD ocs -setMasterRepStart ocs

-setMasterRepStart 在数据从源端到目标端传送的时候,保证不会丢失更新。

 

9、启动复制器(备机 tt

           start replicator and modify the replication policy

$ttadmin -repstart ocs

$ttadmin -reppolicy always ocs

 

10、内存加载策略(备机 tt

           Modify memory loading policy

$ttadmin -ramPolicy always ocs

 

11、起tt服务

ttdaemonadmin -startserver

 

12、检查表数据一致性,验证用户、权限、数据一致性

                   Check for table data consistency

 

13、验证tt同步情况

启动复制器后,需要验证tt的同步情况,必须数据同步后才能切机;

Command> call ttlogholds;

ttstatus;

 

14、手工checkpoint

操作完成后需要手工调整checkpoint,错开checkpoint时间点,错开IO,避免IO争用,如果是本地SSD,可以不用做这个操作;

                  

15、操作完成后恢复crontab,考虑job是否补跑,启动网管等;

业务确认。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值