增量发布要求

1、检查sqlserver版本,数据库版本要求2005以上,是否是企业版,是否支持开启cdc功能

查看数据库版本:
SELECT @@VERSION

2、检查恢复模式,需要开启完整模式,简单模式会频繁自动清理日志导致数据丢失,修改完整模式后做一次全量备份

查看恢复模式:
SELECT name, recovery_model_desc FROM sys.databases WHERE name = '库名' ;
GO

3、 同步前必须排除业务上对大字段做WRITETEXT和UPDATETEXT的表,因为开启cdc会影响WRITETEXT和UPDATETEXT的使用,导致生产库业务异常

开启cdc,执行WRITETEXT和UPDATETEXT报错:
7138 因为正在用 Data Transformation Services (DTS)复制该列,或变更数据捕获正在跟踪该列,所以不允许使用 WRITETEXT 语句。

WRITETEXT功能说明:
WRITETEXT对现有列类型为text,ntext,image执行最小日志记录的更新操作,将覆盖列数据。
一般医院的EMR库(电子病历库)业务会用到。

注:
(1)在线模式和辅助库模式,writetext和updatetext功能已支持(zcbus-7.6-12-20211223.tar.gz)
(2)辅助库模式,zcbus_extended_logging存储过程已支持非大字段列级开启cdc,不会影响writetext和updatetext功能使用
(3)在线模式程序和zcbus_extended_logging存储过程打开cdc的时候,先检查是否有pk/uk,如果有pk uk的话,@captured_column_list就填pk uk的列,如果没有pk uk的话,@captured_column_list就填表中不是text next image类型的第一个列

关闭cdc参考下面流程:
http://docs.zbomc.com/docs/zcbus/zcbus-1de7c91elt44a

启动SQLSERVER 代理服务

net start SQLSERVERAGENT

选择日志分析模式

在线模式

创建数据库用户

USE [master]
go
CREATE LOGIN [zcbus] WITH PASSWORD=N'zcbus', DEFAULT_DATABASE=[数据库名]
use 数据库名;
go
create user [zcbus] for login [zcbus]
go

数据库用户赋权

use 数据库名;
go
exec master..sp_addsrvrolemember @loginame = N'zcbus', @rolename = N'sysadmin'
go

离线模式

使用zcbus初始工具配置ftp模式或辅助库模式(AUX DB模式),zcbus初始化工具下载:
zcbus初始化工具
注:两种模式按照需要选择其一

ftp模式配置ftp服务(只有ftp模式需要配置)

参考《centos7配置ftp服务.txt》,详见附件。

配置文件修改

ftp模式:
修改sql目录下的《sqlserver_ftp模式.ini》参数文件

[data]
DATA_BASE_LOGIN_USER=zcbus  #登录用户名
DATA_BASE_USER=zcbus        #数据库用户名(和登录用户名相同即可)
DATA_BASE_PWD=zcbus             #数据库用户密码
FTP_TMP_PATH=c:\zcbus              #文件临时目录
ZCBUS_FTP_IP=192.168.1.111         #zcbus配置的ftp服务端IP
ZCBUS_FTP_PORT=21                  #zcbus配置的ftp端口
ZCBUS_USER=zcbus                   #zcbus系统用户名
ZCBUS_PWD=zcbus                    #zcbus系统用户密码
ZCBUS_FTP_CACHE_PATH=/zcbus/2.0.1/cache/node10001 #zcbus缓存目录(每个nodeid一个目录)

辅助库模式:
修改sql目录下的《sqlserver_辅助库模式.ini》参数文件

[data]
DATA_BASE_LOGIN_USER=zcbus  #登录用户名
DATA_BASE_USER=zcbus        #数据库用户名(和登录用户名相同即可)
DATA_BASE_PWD=zcbus             #数据库用户密码
FILE_PATHE_NAME=c:\zcbus           #文件临时目录

zcbus初始化

双击《ZCBUS初始化工具.exe》然后操作以下步骤:

1)输入数据库IP地址—>2)输入用户名(超级用户sa)—>3)输入用户密码—>4)选择模板—>5)点击连接数据库—>6)勾选数据库(可多选)—>7)点击初始化—>8)查看执行结果

权限查询

查询zcbus用户的object权限

exec sp_helprotect NULL, 'zcbus'
go

查询zcbus用户拥有的role

exec sp_helpuser 'zcbus'
go

查询哪些用户拥有指定的系统role

exec sp_helpsrvrolemember 'sysadmin'
go

ZCBUS准备

  1. 添加发布节点
  • 资源管理-发布节点
      添加发布节点,选择运行容器位置
      配置发布数据库配置信息【SQLSERVER】即可
序号 变量名 默认值 是否隐藏函数 描述
1 db_type sqlserver 不隐藏 源数据库类型
2 db_name zcbus 不隐藏 捕获数据库名
3 host 172.17.104.185 不隐藏 数据库IP地址
4 port 1433 不隐藏 数据库端口号
5 user zcbus 不隐藏 捕获数据库用户名
6 password zcbus 不隐藏 捕获数据库密码
7 full_sync_threads 4 隐藏 全量并发线程数
8 proxy_mode 0 隐藏 0 在线分析日志的模式 1 SQLSERVER代理模式2 存储过程分析日志【FTP模式】3 辅助数据库模式【AUX模式】
9 proxy_path 隐藏 proxy_mode=1时,代理数据库读取日志的路径proxy_mode=2时,指定本地文件分析目录
10 proxy_host 隐藏 代理模式时,日志共享机器的ip地址,如果不设置,默认为代理数据库所在机器的ip
11 proxy_file_keep_time 3600 隐藏 proxy_mode=2时,共享存储上分析过的文件的保留时间,单位为秒,默认保存3600秒,0为不保存
12 source_db_type sqlserver 隐藏 源 类型
13 source_db_name ds 隐藏 代理模式时,全量发布库名
14 source_host 172.17.58.145 隐藏 代理模式时,全量发布库ip
15 source_port 1433 隐藏 代理模式时,全量发布库端口
16 source_user zcbus 隐藏 代理模式时,全量发布库密码
17 source_password zcbus 隐藏 代理模式时,全量发布库用户名
30 event_trigger_table zcbus.ddl_event_tbl 隐藏 事件触发器对应的表
33 max_packet_len 5242880 隐藏 发送到kafka的最大包长度(BYTE)
33 full_publish_interval 0 隐藏 全量发送每个包的间隔(毫秒),0为不限制
35 land_to_file 0 隐藏 是否落地缓存,1:是 0:否
36 land_file_reserve_cont 0 隐藏 文件发送到kafka之后,保留暂时不删除的文件个数,默认为0,发送成功之后马上删除文件
38 message_encrypt 0 隐藏 发送到kafka的消息是否加密,默认为0不加密,1为加密
文档更新时间: 2022-02-26 20:19   作者:操李红