sybase replication使用技巧 下载本文

SYBASE Replication Server高级使用指南 复制服务器技巧汇总__常用配置

1. 复制分区partition越大越好,大小应该为数据流量的6倍,一般可以设为2G. 2. 最大线程数应该大于连接数(数据库和复制服务器)乘以2加3。 3. 复制内存内存加大。 注意事项

1. ASE要建立专门用于复制的sa用户,而且账号密码要和复制服务器的一模一样。 2. _RSSD_prim账号缺少sa权限,导致RSM不能访问复制服务器的配置。 3. RSM客户端置需要配置ID_SERVER及它的数据库地址。

SYBASE复制服务器技巧汇总__常用操作 1. 迁移复制服务器

a) 将相关数据库(RSSD数据库及复制数据库)的复制代理断开 sp_stop_rep_agent db_name(ASE) 或是 suspend log transfer from {data_server.database|all} b) quiesce队列 admin quiesce_force_rsi; 使用admin quiesce_check检查 c) 删除正在使用的复制分区 drop partition partition_name;

d) 停掉相关的复制服务器(或是挂起路由) suspend route to replication_server; e) 迁移复制数据库以及RSSD数据库,服务器名称要和以前的一致, 重新建立复制服务器的ASE用户,修改连接配置文件。

f) 对RSSD数据库以及复制数据库的第二截断点归零 use db_name go sp_stop_rep_agent db_name go dbcc settrunc(‘ltm’,’ignore’) go

use RSSD_db_name go rs_zeroltm data_server,database; go use db_name go dbcc settrunc(‘ltm’,’valid’) go

g) 增加复制分区 add partition partition_name on ‘device_name’ with size size;

h) 重建队列 Rebuild queues go Igore loss from data_server.database [to data_server.database|replication_server];

i) 恢复复制代理 sp_start_rep_agent db_name;(ASE) 2. 建立默认错误处理类。

SYBASE复制服务器技巧汇总__故障处理 1. 队列阻塞。

如果DSI线程DOWN掉的话,连续执行resume connection to data_server.database skip transactoin跳过阻塞事务,直至DSI线成能够正常工作。

否则,监测队列是否正常。使用admin who,sqt;察看info 列此数值形如******x:y,******x即为此队列号,如果是负数,则说明此队列事务有问题,

需要破置队列。y=1,代表是处队列,y=2,代表是入队列。(???不确定???) 使用admin who,sqm;察看First Seg.block Last Seg.block 以及Next read, 三个列的数值打效应为fast

SYBASE复制服务器技巧汇总__常用命令

1. 察看运行状态 admin health; admin who; admin who_is_down; admin who_is_up; admin who,sqm; admin who ,sqt;

2. 察看复制服务器配置 rs_config(ASE); rs_helpdb(ASE); rs_helperror(ASE); rs_helpdb(ASE);

rs_helppub(ASE); rs_helppubsub(ASE); rs_helpsub(ASE); rs_helprep(ASE); rs_helprepdb(ASE); re_helpreptable(ASE); rs_helproute(ASE); admin disk_space(ASE);

3. 恢复运行 resume connection to data_server.database [skip transaction|executetransaction] (恢复DSI进程);

sp_configure ‘enable rep agent threads’,1(ASE); sp_config_rep_agent ‘enable’(ASE); sp_start_rep_agent db_name(ASE);

4. 挂起运行 sp_configure ‘enable rep agent threads’,0(ASE); sp_config_rep_agent ‘disable’(ASE); sp_stop_rep_agent db_name(ASE);

5 用户权限 create user user_name set password{ passwd|null}; grant sa to user_name; drop user user_name;

sysadmin sqm_purge_queue, q_number, q_type go

sysadmin sqm_purge_queue q_number,q_type

注:q_number是队列编号,q_type是出、入站的标识(0--出,1--入) 上述两个参数可通过 admin who,sqm 语句查到

如何清除SYBASE RSP中所有的出站或入站队列中的数据?

1、Replication Server以独立模式启动(改批处理加“-M”参数启动); 2、用SQLADV联接RSP Server; 3、执行下面的语句:

sysadmin sqm_purge_queue q_number,q_type

注:q_number是队列编号,q_type是出、入站的标识(0--出,1--入) 上述两个参数可通过 admin who,sqm 语句查到

小心:上面的操作会删除指定队列、类型的所有数据。

SYBASE 复制队列不断增长

复制状态正常,怎么清除队列,取消复制事务:

1、检查你的数据库的第2截断点,复制数据库一定卡在比较长时间前了。做dump tran xxx with truncate_only估计日志截断不了。

2、admin disk_space看你的状态,估计快被占用满了 3、rebuild queues重建队列。 4、停止复制代理

5、在复制数据库上,ignore loss from 远端_RS_RSSD to 中心_RSSD

ignore loss from 中心数据库 to 远端数据库 6、admin disk_space现在看看占用情况,应该空间被释放出来了

7、你所有参与复制系统的表,已经不同步了,因为队列已经被清空了,数据得你想办法另外同步,比方说bcp out再in到中心

8、引起这个情况的原因,可能是表的主键等约束引起的,因为要在中心写的数据,结果发现违反唯一或者其他条件,导致写不了,

结果队列卡在那里了,越积越多最后撑死。检查你的复制表的错误,这个可以在复制数据库的错误日志上看到