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

 

2 UNIX平台上的安装

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

 

3 NT平台上的安装

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

2.         重启机器

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

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

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

 

4 RS客户端的安装

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值