金蝶云星空 查询库配置指南
目录
前言
为了提高金蝶云星空产品并发能力和性能,解决大并发和大数据量的环境下单台SQL Server能力可能存在瓶颈的问题。金蝶云星空产品通过内部架构技术,将事务操作和报表/序时薄操作部署在不同的服务器上,从而实现服务器能力横向扩展的能力。
为了实现这一个功能,需要依赖SQL Server的复制功能来完成,本文档对如何部署SQL server的事务复制环境,实现金蝶云星空的事务操作和报表/序时薄操作进行说明。
本文档以SQL Server 2008 R2产品进行说明。
部署
SQL Server事务部署的架构一般如下图
发布服务器为金蝶云星空中的事务操作服务器;
订阅服务器为金蝶云星空中的报表/序时薄服务器;
前提
SQL Server的事务复制过程中需要访问共享目录,使用SQL Server Agent一起来协助完成,涉及到了用户权限的问题。由于windows权限体系较为复杂,并且数据库服务器一般不会暴露在外网,建议使用简单的权限体系。
- 启动SQL Server服务和SQL Server Agent服务建议采用本地系统身份启动,不要使用Network Services,因为后者是受限用户。并保证已经启动;
- 如果是非域环境,发布/订阅/分发服务器增加相同的管理员用户;
- 如果是域环境,可以考虑采用同一域用户,域用户最好可以加到本地的管理员组中;
- 操作系统和数据库版本最好一直;
配置
本文档一分发服务器和发布服务器部署在同一台机器,订阅服务器部署在一台机器上进行说明。
配置分发服务器
SQL Server的复制,分发服务器与订阅和发布服务器可以在一台机器,但在实际生产环境中,为了确保系统的性能和可用性。建议将分发服务器单独部署在一台机器上。
配置步骤如下;
- 设置共享目录,如果数据库的实体比较大,那些需要保证有足够的可用磁盘空间;
并且赋予Every One可以读取的权限
- 选择复制/配置分发
- 选择分发服务器,这里选择本机,如果需要选择其它机器作为分发服务器,选择第二个单选框,然后添加;
- 设置共享路径
- 设置分发数据库名称和数据库文件存储路径
- 设置发布数据库的属性,代理的连接模式,这里采用SQL Server身份验证
- 完成配置分发,如果需要脚本,可以选择【生成包含…】
配置成功后,可以查看分发服务器的属性
属性包括事务保持的时间以及历史记录保持期间,同时可以修改【默认配置文件】来配置每次同步的一些参数选项。
配置发布服务器
配置那个数据库将通过分发服务器进行数据发布,发布的对象可以数据库中的全部或者部分表,视图,存储过程,用户自定义函数等等。
配置步骤如下:
- 选择新建发布
- 选择需要发布的数据库
- 选择发布方式,选择事务发布方式
- 选择需要发布的对象,选择所有对象,忽略视图脚本以及不过滤数据
- 暂不创建快照,待配置完成后
- 设置代理安全性
注:如果网络环境为非域模式,选择SQL Server代理账户运行。
- 创建发布
- 命名创建的发布
- 成功后,可以本地发布下增加了publisher的发布
- 设置发布数据库以同步方式进行备份,如果发布其它数据数据,修改@dbname的值即可
declare @dbname sysname
set @dbname='AIS20130221093654'
if not exists(select * from sys.databases where is_sync_with_backup=1 and name=@dbname)
exec('sp_replicationdboption '''+@dbname+''',''sync with backup'',''true''')
备份发布数据库
在建立发布后,就可以对发布的数据库进行备份,然后在订阅服务器上进行还原来完成事务复制的部署。
配置订阅服务器
在完成分发和发布服务器的配置后,接下来就可以进行订阅服务器的配置。对于一个发布服务,可以建立多个分发服务器,但对象金蝶云星空产品,目前支持一个分发服务器,所以只需要配置一个即可。
配置步骤如下:
- 将备份的分发数据库,在订阅服务器上还原
- 选择新建订阅
- 选择发布服务器
- 选择订阅的方式,为了减轻发布服务器的压力,在订阅服务器上运行代理来进行数据同步
- 选择步骤一中还原的数据库作为订阅数据库
- 设置分发代理的安全性
- 设置数据同步数据的频度为连续运行
- 由于发布服务器未产生快照,暂不初始化订阅服务器
- 创建订阅,如果需要生成脚本,如果需要脚本,可以选择【生成包含…】
- 成功后,在订阅服务器上可以看到新增的订阅
在发布服务器上,可以看到,订阅已经增加到发布节点下
生成快照
在完成上述的配置后,事务复制的体系就已经建立完成。接下需要对复制数据做准备,首先我们必须根据发布服务器的发布的对象生成快照。
生成快照可以通过选择查看快照代理状态,在快照代理界面选择启动来完成快照生成
下图是启动后,完成快照的情况,可以看到快照生成花费了6分47秒,公有2296个项目生成了快照。
生成快照后,我们就可以在分发服务器的共享目录下,看到快照文件信息
上面的操作,也可以通过复制管理器来完成
在代理页签,可以看到下面信息
初始化订阅
在生成快照后,需要对订阅进行初始化。在发布服务器上通过重新初始化来完成
选择使用当前的快照,然后标记为要重新初始化,即可完成初始化操作。
同样上面的操作,也可以通过复制管理器来完成
从上面可以看到订阅的日志情况
监控复制管理器
对复制的监控,可以通过复制管理器来完成,复制管理将监控发布服务器,订阅服务器以及代理的运行情况,并且对其进行管理。
发布数据库架构更新
在事务复制体系中,发布数据库可能出现下面一些情况:
- 增加/删除字段;
- 新建表;
- 删除已经发布的表;
下面就针对出现这些情况下,如何保证订阅库跟发布库的一致性,进行说明。
增加/删除字段
对于表字段的新增/删除,在发布数据库中修改后,事务复制将自动同步,并且基本上是立即完成。
新建表
配置步骤如下(以test表为例):
- 打开发布数据库的属性
- 选择发布属性中的项目页签,选中test表,然后点确定按钮
注:
如果原来已经选择,默认是勾选状态;
可以看到T_WF_TESTCASE有个禁用的图标,说明其没有主键,不能作为发布的对象
- 启动快照代理,此时会根据发布属性中选择的项目,重新生成快照
- 点击监视按钮,查看分发服务器到订阅服务器的历史记录,可以看到复制test表的日志;
- 在订阅库上执行select * from test,可以看到可以正确执行,说明新建的表已经成功同步到订阅库;
删除表
从目前的数据规范来看,脚本中是不允许出现Drop语句的。如果的确出现了在复制体系中,由于该表参与了复制,会提示由于参与复制,不能被删除的,此时需要从复制体系的发布项目中将该对象取消。
删除方式如下:
- 打开发布数据库的属性,参见新建表步骤1
- 不勾选test表,此时提示快照会失效,但不影响订阅,选择【是】,然后在发布属性界面点击【确定】
- 然后在发布库和订阅库上上执行删除test表的命令即可。
附注
服务器都需要使用机器名,而非IP地址
金蝶云星空查询库使用说明
在数据库配置查询库妥当后,直接登录管理中心,选择查询库所对应的标准业务库,进行查询库的注册即可。