RS维护手册

复制服务器维护手册

一.安装指导

1概述 RS安装的步骤

1. 准备:RS12.5及以前版本需要一个ASE数据库服务器来存放RSSD数据库,可以用已存在的ASE或新建一个ASE作为RSSD的数据库服务器;RS12.6及以后版本可以使用ASA或者ASE作为RSSD的数据库服务器,若使用ASA则无需准备,安装RS时会自动创建。

2. 安装部分:使用setup install应用程序从安装介质卸载RS产品到机器上

3. 配置部分:使用rs_init 应用程序来安装配置RS

2UNIX平台上的安装

1. 创建sybase用户

2. 创建sybase安装目录

3. 执行install (图形界面)或者 install –c (文本界面) 安装RS服务器产品

4. 设置SYBASE环境变量

sh or ksh使用 cat $SYBASE/ SYBASE.sh >> $SYBASE/.profile

csh 使用 cp $SYBASE/SYBASE.csh $SYBASE/.cshrc

5. 执行dscp增加一个复制服务器和一个复制服务管理器的interface信息

6. 执行rs_init 配置一个新的复制服务器(RS

7. 执行rsmgen 配置一个新的复制服务管理器(RSM

3NT平台上的安装

1. 执行setup 安装RS服务器产品

2. 重启机器

3. 执行dsedit增加一个复制服务器和一个复制服务管理器的interface信息

4. 执行rs_init 配置一个新的复制服务器

5. 执行开始菜单中的“RSM Server设置” 配置一个新的复制服务管理器 (注意RSM Server Char Set一项最好选择iso_1

4RS客户端的安装

1. 安装RS_pcclient客户端产品

2. 如果RSM服务不在本机,用dsedit增加一个RSM服务

3. sybase central菜单中选择“工具”->“连接”->Sybase Replication Server”, 然后在弹出的界面中选择RSM服务器,第一次用sa登录

4. 在登录进去的RSM server中使用“add server”将相关ASERS增加进来,增加RS之前需先将其RSSD所在的ASE加进来。

二.基本概念

1. PDS

包含主数据的数据服务器

2. PDB

包含主数据的数据库

3. PRS

Primary RS - 主复制服务器,它负责:

-从RepAgent接受事务

-把事务转发给其它RS或直接修改RDB

-把有关复制定义等的信息转发给已建立路由的其它RS

每个RSS至少有一个PRS,它负责汇集要出版发行的数据

4. RSSD

RS System Database

每个RS都有其自己的RSSD( including all system tables),内容主要为:

-有关SD的信息

-有关Replietion definition,subscriptions,publications的信息

-有关Routes的信息

-拒收的事务

5. Stable DeviceSD):

中转设备

每个RS都有自己的SD,用来保存它要处理的信息。它包含三类中转队列(Stable queues

IBQInbound queues)进站队列:PDB中已开始但未commit的事务中的数据

OBQOutboud queues)出站队列:已commit且正在写入RSSD中的事务中的数据

MatQMatarialization queues)初始化队列:自动初始化时用到的数据和命令

6. RepAgent thread

复制代理线程,是ASE的内部线程

-读取PDB的事务日志,找出作用于带有复制标记的表上的事务

-利用LTL语言把这些事务转发给RS

-维护事务日志中的第2截断点,从而保证在该事务未被贮存 到RSSD中之前,不会被截断

7. second trancate point

第二截断点

在数据库LOG中维护一个基本(primary)截断点,利用它标明事务活动边界-实现LOG

空间的回收。在复制系统中,由RepAgent维护第二(second)截断点,利用它标明事务已被转发给复制服务器-在事务未转发给复制服务器之前,相应的LOG空间不可被回收

8. SQT

Stable Queue Transaction interface:

该线索由SD队列读出信息流并按其提交次序进行装配

9. DSI EXEC

该线索对RDB执行事务

10. DSI

Data Server Interface scheduler thread:

它通过SQT 读出SD队列然后通过DSI EXEC线索对RDB执行事务

11. Replication definition

复制定义Repdef),指明可复制的主表数据,其中包含:

PDB的地点

-主表名称

-列或参数及其数据类型

-主表的PK

-搜索列(可在where子句中使用的列)

针对一个主表可建立多个复制定义

12. Article

文章

是指已利用create article命令被加入到一个publication-出版物中的Repdef(复制定义)

13. publication

出版物,可以简化系统管理

可把一个复制点要订阅的所有Article都组装成一个出版物单元(publication

14. subcription

订阅物

Repdef的作用只是使得相应主数据可供其它点请求复制,但在真正要求把数据复制到一个复制点时,还必须使用subscription

15. Replicated procedure

可复制的存储过程

所谓可复制的存储过程是指当该存储过程在一个数据库(主点或复制点)执行后,

可连同参数一起被复制它另一个数据库去执行它

16. Projections

投影

针对一张表的不同垂直片(投影)建立多个供出版的Repdef

其作用是使各复制点只获得主数据的不同的视图

17. Connection

连接

RS对受其管理的每个DB使用一个connection.

RS中的maintenance user 利用DSIData Server Interface)线 索

通过一个connectionPDB的更新传送给RDB

18. IBQ

进站队列

PDB中已开始但未commit的事务中的数据

对应每个PDB都有一个IBQ

如果事务被rollbackRS则废弃IBQ中已收到但还未送入OBQ(RDB)的数据行

19. OBQ

出站队列

PDB中已commit且正在被写入RSSD或直接写入RDB中的事务中的数据

对每个与该RS连接的RDB以及每个与该RS建立路由的RS都有一个OBQ

20. MatQ

初始化队列

保存自动初始化时用到的数据和命令

其空间大小必须足以保存RS在进行初始化时涉及的全部信息:

-PDB取出的全体订阅物

-在一个大事务中插入的全体数据

21. exceptions log

例外日志

用到RSSD中的三张系统表

rs_exceptchdr,rs_exceptcmd,rs_systext

如果定义了错误处理动作:则失败的事务能自动记入其中

由管理员定期地监视和解决这些失败的事务

必须定期地清理它,否则会填满RSSD可用空间

22. Function

函数

它是个RS对象,它代表数据服务器的一个操作,比如insert, delete, selectbegin tranRS把这些操作当作函数发送给其它RS,每个函数是一个名字及一组数据参数组成。为了能在一个目标数据库中执行这个函数,RS利用函数串(function string)把它转换为一个或一组数据库命令

23. Replicate RS

RRS复制点RS

-其功能是由PRS接收事务然后把它作用於一个RDB

-对与PDB地理距离非常远的RDS设置一个RRS可改善性能

24. Intermediate RS

IRS中间RS

-其功能仅仅是由一个RS接收事务然后再把它转发另一个RS

-为距PDB较远而彼此邻近的一组RS再设置一个IRS

则可改善性能及网络利用率

25. Route

路由

在两个RS间建立连接

一个RS利用route向另一RS发送数据和信息。

RSI(Replication Server Interface)线索利用Router把数据和消息发送给其他RS

设置一个route则针对源RSRSSD中的各表在目的RSRSSD中自动建立相应订阅者(subscriptions

三.日常维护

1. 如何启动、停止复制服务器

启动RS:如果RSSD serverASE,必须先启动该ASE

NT平台上在控制面板的服务中或者在sybase central中启动服务

UNIX平台上执行安装目录下install里的RUN_xxx启动复制服务器

停止RS:如果RSSD serverASE,必须先停止RS再停止该ASE

可在服务中停止RS服务;

也可isql登录到RS执行shutdown 停止RS服务

2. 如何启动、停止复制代理

启动agentisql登录到主点数据库中,执行sp_start_rep_agent PDB

停止agentisql登录到主点数据库中,执行sp_stop_rep_agent PDB

3. 如何检查线程状态

isql登录到RS中,执行admin who 检查所有线程

admin who_is_down 检查RSdown掉的线程

admin who_is_up 检查RSup的线程

4. 如何启动DSI

isql登录到RS中,执行 resume connection to RDS.RDB

如果要跳过使DSI down的第一个事务:resume connection to RDS.RDB skip transaction

5. 如何修改复制服务器字符集

修改复制服务器的cfg文件中RS_charset=xxxx

6. 如何修改复制服务器参数

两种方法:

1. Isql登录到RS中,执行如: configure replication server set memory_limit to "256"

2. Isql登录到RSSD中,执行rs_configure 检查所有参数值

rs_configure memory_limit, 256 修改参数

通常修改的参数有memory_limitsqt_max_cache_sizests_cache_size 等;如果配置的connection 较多,可修改相关线程参数。

参数修改后需重新启动RS使之生效。

7. 如何增加partition

isql登录到RS,执行admin disk_space 检查稳定队列空间使用情况

增加partitionadd partition logical_name on ‘physical_name’ with size xxxx

删除partitiondrop partition logical_name

(partion文件必须先存在,unix下可以先touch该文件,windows下也同样)5

8. 如何创建错误类

1)登录RS: create error class test_error_class

2)登录RSSD: rs_init_erroractions test_error_class,rs_sqlserver_error_class

3)登录RS: (以忽略重复键值为例)

assign action log for test_error_class to 2601

assign action ignore for test_error_class to 3621

4)登录RS:

suspend connection to RDS.testb

alter connection to RDS.testb set error class test_error_class

resume connection to RDS.testb

9. 复制的表中有大字段时应注意的问题

表中有大字段时,该字段在复制定义里的状态需与其在主点数据库里的复制状态一致

create replication definition REP_TABLE

with primary at PDS.PDB

with all tables named TABLE1

(A int, B text null)

primary key (A)

replicate minimal columns

relicate_if_changed (B)

PDBsp_setrepcol TABLE1,B,replicate_if_changed

或者两边都为 always_replicate do_not_replicate状态

10. 复制的表中有identity字段时应注意的问题

RDB(复制点数据库)中maint用户需有数据库的dbo权限

在生成复制定义时注意主键的完整

在图形界面中生成复制定义时,如果一个表的主键定义为identity字段再加别的字段

,图像界面生成的复制定义只有identity字段定义为主键,需要手工去修改与原来的主键一致.

11. 如何查看exception

登录到RSSD,执行rs_helpexception 列出所有exception

执行 rs_helpexception transaction_id, v 查看某一事务的详细信息

使用 rs_delexception transaction_id 可删除该事务信息

12. 如何查看outbound里第一个事务的信息

登录到RS,执行sysadmin log_first_tran, RDS, rdb

然后在RSSD里通过rs_helpexception查看其信息

13. 如何删除connection

drop connection to DS.DB

如果连接的是主点数据库,在DB里执行sp_config_rep_agent DB,disable

在数据库DB里删除rs_开头的表及存储过程,删除maint用户

14. 如何去掉第二截断点

登录到主点数据库PDB,先停止agentsp_stop_rep_agent PDB

use PDB ,去掉第二截断点:dbcc settrunc( ltm, ignore)

注意:该命令会导致主点数据库丢掉未复制出去的事务,造成数据不一致,只是在万不得以时才执行。

15. 如何手工创建rep agent

1) PDSsp_addserver PDS, local

2) RScreate user PRS_ra set password PRS_ra_ps

3) RSgrant connect source to PRS_ra

4) RSalter connection to PDS.PDB set log transfer to ON

5) PDBsp_config_rep_agent PDB,enable,PRS,PRS_ra,PRS_ra_ps

6) PDSsp_start_rep_agent PDB

16. 如何配置warm standby

1)创建逻辑连接:create logical connection to ds.db

2)增加active 数据库: 使用 rs_init

(选择active库会备复制,is this a Physical Connection 选择 yes)

3)设置active数据库的复制状态:sp_reptostandby activedb,'all'

4)增加standby数据库: 使用 rs_init

(rs_init, 选择standby库会备复制,is this a Physical Connection 选择 yes

设置为standby,填入已建立好的逻辑连接dsdb,备份库也要选择被复制状态)

5)如果standby数据库中suid sysloginssysusers不一致,则修改它们:

update <standbydb>..sysusers set users.suid = logins.suid

from <standbydb>..sysusers users, master..syslogins logins

where users.name = logins.name and users.suid <> logins.suid

6)给standby数据库中maint用户增加dbo权限:sp_addalias rdb_maint,dbo

7) 启动active standby 数据库的连接

(rep中用admin who_is_down 查看后,resume connection to)

(不记录日志的事务1 select into 2 快速bcp 3 truncate

table,前两个不会复制到备点,truncate table 可复制到备点)

17. 如何不激活数据库中的触发器

登录到RS,执行

alter connection to RDS.RDB set dsi_keep_triggers to ‘off’

go

18. 如何查找未知错误

1)检查RS日志文件

2)检查RSSD server日志文件

3)检查PDSRDS日志文件

4)根据Sybooks Troubleshooting Guide提示采取措施

(通常有空间、权限、重复键值、数据类型匹配、规则、约束等原因)/

5)错误信息记录在rs_systext表里,可以在安装后立刻做表备份,以后可以truncate

rs_systext,再导入原来备份信息

19. 为何Inbound一直增加但不复制数据

通常可能的情况是,主点数据库中存在早期的未提交事务,时间越长,inbound会越大;而因为事务未提交,其数据是不会复制到复制点数据库的。这种情况要尽快处理,否则会影响到partition空间以及主点数据库的空间。方法是查询主点数据库服务器的master..syslogshold,找到dbid为主点数据库的用户事务进程(而不是replication_truncation_point)的spid,并killspid

20. 尽量不要在主点数据库执行大事务

执行大事务(如一次性insert,update,delete数百万行记录)会产生大量日志,而复制服务器是根据日志进行复制的,这样可能会造成:

1) 主点数据库日志空间被大量占用

2) 复制服务器的partition空间被大量占用

3) 复制点的locks数目被耗尽

4) 等待这个事务复制完成需要很长时间

21. 同步的问题

方式

l dump load方式,应该先把主点数据库中登录名也在备点建立

时机:

l 可以先在配置复制前同步数据

l 也可以先配置好复制系统,建立好连接,出版,订阅,然后停止主点业务系统备份数据,

停掉复制到备点的连接,备点做数据同步,完成后,恢复备点到复制的连接.

22. 出版

l 通过图形界面出版的时候要求表要有主键或唯一索引,但是可以生成脚本,然后修改脚本,选定某个列做主键或唯一索引.

l 如果用脚本执行,要注意复制状态(要自己去处理设置主点的表,存储过程等允许被复制,)

23. 存储过程复制

限制

l 不能嵌套存储过程

l 不能内嵌事务

l 不能有slect into语句

24. 性能

l 备份点最好要求表有唯一索引(或复制定义时生成脚本,编辑指定某一索引,然后在命令行执行)

l 复制是事务的还原

25. 修改RS用户密码

l 1>alter user sa set password password

l 2>go

你可能感兴趣的:(r)