关键字:
KingbaseFlySync、KFS、replicator、同步程序、flysync.ini、安装部署、中电科金仓、Kingbase、SQL Server
一、概述
中电科金仓Kingbase FlySync 支持基于SQL Server 作为源端、KES作为目标端的数据同步。本文以下部分对基于 SQL Server 作为源端、KES作为目标端时的KFS部署过程进行阐述。
二、拓扑结构
如图1所示,本文演示从源端SQL Server数据库到目标端KES数据库的同步链路建立。其中,源端SQL Server数据库与KFS集中部署在一台机器上,目标端KES数据库与KFS集中部署在另一台机器上。

三、环境准备
如第一节拓扑结构所示,本示例需要提前准备好两台虚拟机环境,一台为源端SQL Server数据库环境,一台为目标端KES数据库环境。
3.1 源端SQL Server数据库环境准备
3.1.1 启动SQL Server数据库
systemctl start mssql-server.service
systemctl stop mssql-server.service
systemctl status mssql-server.service

3.1.2 SQL Server数据库配置
3.1.2.1连接到SQL Server数据库
sqlcmd -S localhost -U sa -P Kingbase2017
3.1.2.2准备源端同步的表
create database sourcedb //创建同步的数据库
use sourcedb //连接到同步的数据库
create schema test //创建同步的模式
create table test.t1(id int primary key,a int) //创建同步的表

3.1.2.3修改conf文件
数据库工作准备完毕后,还需配置setupCDC.conf文件,使其符合我们当前的环境。该文件在KFS的安装包里,具体路径为flysync-replicator/extractors/mssql-cdc,cd到该路径下,编辑该文件。
vi setupCDC.conf


3.1.2.4 修改table文件

例如,这里在table文件最后一行添加:test t1 (配置table文件就是指定我们需要同步的模式和表,例如在这里就是指定我们需要同步test模式下的t1这张表)
3.1.2.5 执行setupCDC.sh文件
上面的conf文件和table文件修改完毕以后,就执行配置脚本,从而使我们以上所做的配置生效。
./setupCDC.sh setupCDC.conf
到这里就完成了KFS安装前需要对源端SQL Server数据库进行的准备工作。
3.2 目标端KES数据库环境准备
3.2.1 KES数据库安装与启动(若已安装好则跳过本节)
1)获取KES的压缩包KingbaseES_V008R006XXXXXXX_Lin64_install.iso,然后挂载到tmp文件,注意要在root用户下执行
su mount KingbaseES_V008R006XXXXX_Lin64_install.iso tmp/
2)挂载过去以后cd到tmp下,执行setup.sh脚本
sh setup.sh

- 此时会弹出KES的图形化安装界面,随着引导安装好以后就可以到安装目录下启动KES数据库
./sys_ctl –D XXX start

4)从bin目录下进入数据库
./ksql –Usystem –dtest –p54321 (注:这里-U是指定用户,-d是指定数据库,-p是指定端口号)

到这里我们就已经功进入到了KES数据库了。
3.2.2 KES数据库配置
1)创建数据库并创建用户
./ksql -Usystem –dtest
CREATE USER FLYSYNC SUPERUSER PASSWORD '123456';
(这里的用户和密码是KFS的同步服务所需的用户和密码)
2)准备目标端同步所需的数据库、模式、表。
create database targetdb_sql //创建同步的数据库
use targetdb_sql //连接到同步的数据库
create schema test //创建同步的模式(与源端保持一致)
set search_path=test //切换到同步的模式下
create table test.t1(id int primary key,a int) //创建同步的表 (一样和源端保持一致)
到这里就完成了KFS安装前需要对目标端KES数据库进行的准备工作。
四、KFS同步服务安装与配置
4.1源端KFS-replicator安装与配置
4.1.1 获取KFS-replicator安装包并解压
wget 【路径XXX】
tar xvf KingbaseFlySync-V002R002B20240722-replicator.tar.gz
4.1.2 拷贝extetion下的jdbc下的kingbase8-8.6.0.jar到flysync-replicator下的lib目录(当数据源是V8R6时需要我们手动拷贝jar包)
cp extensions/jdbc/kingbase8-8.6.0.jar flysync-replicator/lib
4.1.3 ruby配置
下载ruby压缩包,随后解压,然后在环境变量中添加如下内容:
vi ~/.bash_proflie
# Begin Kingbase FLysync Ruby Environment
export RUBY_HOME=/home/hes/rbenv/ruby #ruby解压后的目录
PATH=$RUBY_HOME/bin:$PATH
export PATH
# End Kingbase FLysync Ruby Environment
添加完毕后再source环境变量
source ~/.bash_profile
可以用ruby –v命令检查是否安装成功

4.1.4 flysync.ini文件配置
vi ~/flysync.ini
配置实例如下:
[defaults]
install-directory=/home/hes/SQL Server_flysync_test //同步服务安装路径
profile-script=~/.bash_profile //环境变量文件
rmi-port=11000 //同步程序replicator使用的端口
[SQL Server] //当前同步服务的名称
role=master //同步服务角色(源端/目标端)
master=10.10.5.242 //源端同步服务节点所在的IP地址
members=10.10.5.242 //当前机器节点的IP地址
kufl-port=3112 //当前同步服务的kufl端口
replication-host=10.10.5.242 //源端数据库所在节点的IP地址
replication-port=1433 //源端数据库的端口
replication-user=flysync_SQL Server //源端数据库用户名
replication-password=Kingbase2017 //源端数据库用户对应的密码
datasource-type=mssql
mssql-extractor-method=cdc
mssql-dbname=sourecedb
property=replicator.extractor.dbms.minSleepTime=5
property=replicator.extractor.dbms.sleepAddition=1
property=replicator.extractor.dbms.maxSleepTime=15
property= replicator.global.buffer.size=1
repl_auto_recovery_max_attempts = 0
4.1.5 执行tools目录下的fspm
./fspm install
4.1.6 将许可文件放置到KFS的安装目录下
cp license.dat /home/hes/ SQL Server_flysync_test
4.1.7 source环境变量
source ~/.bash_profile
4.1.8源端KFS-replicator启动
replicator start
成功启动replicator服务后,可以查看同步状态
fsrepctl status
如果状态为online,那么到这里便完成了源端KFS同步服务的部署工作。

4.2目标端KFS-replicator安装与配置
这里目标端KFS同步服务的安装步骤参考3.1节,只是flysync.ini文件配置有所不同,下面给出了目标端为KES的ini文件示例:
vi ~/flysync.ini
写入如下内容:
[defaults]
install-directory=/home/hes/flysync_KES_test //同步服务安装路径
profile-script=~/.bash_profile //环境变量文件
rmi-port=11000 //同步程序replicator使用的端口
[sql_slave] //当前该同步服务的名称
role=slave //同步服务角色(源端/目标端)
master=10.10.5.242 //源端同步服务所在节点的IP地址
master-kufl-port=3112 //源端同步服务所在节点的kufl端口号
members=10.10.5.204 //当前机器节点的IP地址
kufl-port=3120 //当前同步服务的kufl端口
replication-host=10.10.5.204 //目标端数据库所在节点的IP地址
replication-port=54321 //目标端数据库端口号
replication-password=123456 //目标端数据库用户密码
replication-user=FLYSYNC //目标端数据库用户名
datasource-type=kingbase
datasource-version=8
kingbase-dbname=targetdb_sql
svc-parallelization-type=none
svc-remote-filters=casetransform
property=replicator.filter.casetransform.to_upper_case=true
property=replicator.applier.dbms.optimizeRowEvents=true
property=replicator.applier.dbms.maxRowBatchSize=5000
property= replicator.global.buffer.size=1
repl_auto_recovery_max_attempts = 0
完成上述操作后安装fspm,再启动replicator,随即可以查看同步服务状态
./fspm install
replicator start
fsrepctl status

可以看到这里状态为online,那么到这里便完成了目标端同步服务的安装部署,接下来就可以进行同步测试。
五、同步测试
5.1源端数据入库操作
首先在源端SQL Server数据库中插入一条数据(11,11)
insert into test.t1 values(11,11)

再查看一下表的数据,发现数据(11,11)已经入库

此时可以查看一下源端kufl服务有没有解析到这条插入语句
kufl list

可以看到源端kufl成功解析到了这条数据,这说明我们源端的同步服务是在正常运行的,此时再去查看目标端。
5.2检查数据在目标端是否入库
1)同理先看目标端的kufl服务有没有捕捉到这条插入语句
kufl list

可以看到目标端同样解析出了这条数据,并且看到顺序是一样的,都是seq5(之前执行过4次插入语句)。
2)进入KES数据库进行验证
为验证可靠性,可到KES数据库中进一步验证
select * from t1

可以看到(11,11)这条数据已经同步至KES数据库,这说明了我们已经成功建立了从SQL Server到kes的同步链路!




