Kingbase FlySync 管理手册

Kingbase FlySync 管理手册
Release V1R6
kingbase
Mar 20, 2023

目 录
1 前言 7
1.1 版权声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 免责声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 技术支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 初始数据搬迁 9
2.1 命令行操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 结构搬迁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 数据搬迁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 图形操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 多表图形操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 单表刷新 23
3.1 功能简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 参数说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 同步服务使用 27
4.1 数据同步服务基础操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1 启动和停止 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.2 查看同步状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.3 修改配置文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 数据同步服务的可靠性配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2.1 可靠性应用的场景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2.2 配置服务开机自启 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2.3 配置服务守护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2.4 配置故障自动恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2.5 配置中间网络故障重启后自动恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 多服务的配置和测试建议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
4.4.1 说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.2 ini 相关参数配置说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.3 策略方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.4 模式和表匹配规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.5 错误号说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.6 failure_policy_code.json 配置举例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.7 错误信息日志格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 冲突处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5.1 说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5.2 相关参数配置说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5.3 文件定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5.4 kufl 变化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5.5 冲突处理日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5.6 配置案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.6 DDL 过滤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.6.1 说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.6.2 ini 相关参数配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6.3 相关说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6.4 常见场景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6.5 过滤流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5 服务管理 43
5.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 服务 ONLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 服务 OFFLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 数据校验 47
6.1 校验配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2 任务管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3 调度管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4 查看结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.5 多目标端比对操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7 数据修复 59
7.1 任务管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.2 查看结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8 告警机制 63
8.1 告警配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.2 用户订阅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.3 发送结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
9 关于 License 67
4
Kingbase FlySync 管理手册, Release V1R6
9.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
9.2 License 更换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
9.3 License 查看 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
10 FAQ 71
10.1 关键文件路径及说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.2 常见问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
目 录 5
Kingbase FlySync 管理手册, Release V1R6
6 目 录
第 1 章
前言
1.1 版权声明
人大金仓版权所有,并保留对本手册及本声明的一切权利。未得到人大金仓的书面许可,任何人不得以任何
方式或形式对本手册内的任何部分进行复制、摘录、备份、修改、传播、翻译成其他语言、将其全部或部分
用于商业用途。
1.2 免责声明
本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任
何通知或者提示的情况下对手册内容进行修改的权利。本手册仅作为使用指导,人大金仓在编写本手册时已
尽力保证其内容准确可靠,但并不确保手册内容完全没有错误或遗漏,本手册中的所有信息也不构成任何
明示或暗示的担保。
7
Kingbase FlySync 管理手册, Release V1R6
1.3 技术支持
• 人大金仓官方网站: http://www.kingbase.com.cn/ 您可以在官网中获得人大金仓所有产品的资讯信
息,销售联系方式
• 金仓数据同步工具子网站: http://kfs.kingbase.com.cn/ 您可以在产品子网站中获得最新的产品技术
资料、产品故障原因及问题分析、产品的应用解决方案、软件升级资料等等。
• 全国服务热线: 400-601-1188
• 人大金仓技术支持与反馈信箱: support@kingbase.com.cn
8 第 1 章 前言
第 2 章
初始数据搬迁
2.1 命令行操作
初始搬迁是在刚完成完同步工具配置,尚未开始启动数据实时复制时使用,是为了帮助用户完成原系统中
历史数据的一次性迁移。
初始搬迁的命令行操作分为两个步骤
1. 结构搬迁
2. 数据搬迁
2.1.1 结构搬迁
结构搬迁支持两种模式,源端流水线(特殊模式)和目标端流水线(极速模式、平滑模式)搬迁。
结构搬迁支持的参数为:
[flysync@flysync-3 ~]$ ddlscan -help
DDLScan Utility
Syntax: ddlscan [conf|conn] [scan-spec] -source.db <db> [template-options] [out]
onf options:

-conf path
OR
-target.service name
- Path to a static-<svc>.properties file to read database config
connection address and credentials
- Name of a replication target service instead of path to config

(continues on next page)
9
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
[-service name] - Same parameter `-target.service`
[-source.service name] - Name of a replication source service instead of path to config
Seamless migration must be specified
OR connection options:

-source.host sourceHost
-source.port sourcePort
-source.user sourceUser
-source.pass sourcePass
-source.db sourceDb
- source database host
- source database port
- source database username
- source database password
- source database name
- source Schema name
- source database type.
eg:[kingbase7|kingbase8|mysql|oracle|mssql]
- target database name
-source.schema sourceSchema
-source.dbtype sourceDbType
-target.db targetDb
OR RMI connection options:
[-source.rmiHost sourceRMIHost]- source rmi host. Source seamless pipeline migration
must be specified
- source rmi port. Source seamless pipeline migration
must be specified
[-source.rmiPort sourceRMIPort]
Schema scan specification:
[-source.tables regex]
[-tableFile file]
Global options:
[-mgType]
- Comma-separated list of tables to find. eg:TableA,TableB
- New-line separated definitions file of tables to find
- Migration model type. -mgType parameter value
range 0 to 2. Default is 0.
0/1 : target pipeline migration
2: source pipeline migration

[-targetServiceFile file]- Source pipeline migration can specify parameter.
Target service json file path.
- Default file path `~/service.json` .
- Option(s) to pass to template, eg:-opt dbVersion 7
- Render to file (print to stdout if not specified)
- Continue run when SQL error occur. Use on target pipeline.
- Print this help display
[-opt opt val]
[-out file]
[-skipError]
-help

主要参数说明
10 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6

参数名称参数含义
-target.service将要搬迁的服务名称(目标端本地的服务名称,软件会自动查找对应的
static 配置文件)
-service同 -target.service 参数(兼容低版本 KFS)
-source.host
sourceHost
源端数据库地址
-source.port sour
cePort
源端数据库端口
-source.user
sourceUser
源端数据库账号
-source.pass sour
cePass
源端数据库密码
-source.db
sourceDb
源端数据库数据库名称( oracle 对应服务名称)
-source.schema
sourceSchema
源端数据库数据库表所在的模式名
-source.dbtype
sourceDbType
源端数据库类型,目前支持: oracle、 mysql、 mssql、 kingbase7、 king
base8
-target.db tar
getDb
目标端数据库地址
-source.tables
regex
要搬迁的表列表,逗号分隔(不要加模式名,如果需要搬迁多个模式,
请运行多次)
-source.rmiHost
rmiHost
源端服务主机 ip
-source.rmiPort
rmiPort
源端服务主机 rmi 端口,即 rmi-port
-mgType num搬迁类型, 0 极速模式, 1 平滑模式, 2 特殊模式,默认 0
-targetServiceFile
file
目标端服务收集结果文件绝对目录,默认位置 ~/service.json
-opt opt val特殊参数,目前只在 Oracle 到 Kingbase 搬迁中使用 -opt withoid <true|
false> - 默认 false -opt dbVersion <7|8> - 默认 8.
-skipError出错后继续执行

1. 特殊模式(源端流水线)
源端流水线结构搬迁需要在数据同步环境的源端节点上运行
假设将 KingbaseES V7 中 TEST 数据库 PUBLIC 模式下的 TEST1 和 TEST2 表迁移到目标端
Kingbase V7 的 TEST 库下,源端服务名为 kingabse7
执行命令行参数如下:
2.1. 命令行操作 11
Kingbase FlySync 管理手册, Release V1R6
ddlscan -source.service kingbase7 -source.user SYSTEM -source.pass 123456 \
-source.db TEST -source.dbtype kingbase7 -source.host 192.168.11.44 \
-source.port 65432 -source.schema PUBLIC -source.tables TEST1,TEST2 \
-target.db TEST -source.rmiHost 192.168.11.44 -source.rmiPort 11000 \
-target.service kingbase7 -mgType 2
注意:
• 需要依赖管理控制台收集的目标端服务信息,目前可以通过命令行导出 service.json 文件,将文件放
置默认位置家目录下,或放置其他位置,通过 -targetServiceFile 手动指定文件位置
• 需保证源端服务状态 online
• server.json 文件的导出方式为:
在目标端执行如下命令,生成 service.json 文件后请手动拷贝至源端家目录下
fsrepctl properties > service.json
1. 极速模式/平滑模式(目标端流水线)
目标端流水线结构搬迁需要在数据同步环境的目标端节点上运行
假设将 KingbaseES V7 中 TEST 数据库 PUBLIC 模式下的 TEST1 和 TEST2 表迁移到目标端
Kingbase V7 的 TEST 库下,目标端服务名为 kingabse7
执行命令行参数如下:
ddlscan -target.service kingbase7 -source.user SYSTEM -source.pass 123456 \
-source.db TEST -source.dbtype kingbase7 -source.host 192.168.11.44 \
-source.port 65432 -source.schema PUBLIC -source.tables PUBLIC.TEST1,PUBLIC.
,→TEST2 \
-target.db TEST -mgType 0
2.1.2 数据搬迁
数据搬迁支持的参数为
[flysync@flysync-3 ~]$ loader --help
Loader Control Utility
Syntax: loader -source.dbtype sourceDbType -source.host sourceDbHost
-source.port sourceDbPort -source.user user -source.pass password
-source.db db -source.tables sourceSchema.tableToMigration
Connection options:

-conf path
,→config
OR
- Path to a static-<svc>.properties file to read database␣
connection address and credentials

(continues on next page)
12 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
-target.service name - Name of a replication target service instead of path␣
,→to config
[-service name] - Same parameter `-target.service`
[-source.service name] - Name of a replication source service instead of path␣
,→to config
Must be specified at seamless migration
OR connection options:
-source.host sourceHost - source database host
-source.port sourcePort - source database port
-source.user sourceUser - source database username
-source.pass sourcePass - source database password
-source.db sourceDb - source database name
-source.dbtype sourceDbType - source database type.
eg: [kingbase7|kingbase8|mysql|oracle|mssql]
OR RMI connection options:

[-source.rmiHost sourceRMIHost]
,→be specified
[-source.rmiPort sourceRMIPort]
,→be specified
[-target.rmiHost targetRMIHost]
,→pipeline migration
- source rmi host. Seamless migration must␣
- source rmi port. Seamless migration must␣
- target rmi host. Target seamless␣
must be specified
- target rmi port. Target seamless␣
[-target.rmiPort targetRMIPort]

,→pipeline migration
must be specified
Schema or table scan specification:

[-source.schema schema]
,→tables
- source Schema name. -source.schema and -source.
must and can only specify one parameter.
- Comma-separated list of tables to find.
eg:schemaA.tableA,schemaB.tableB
- New-line seperated definitions file of tables to␣
[-source.tables regex]
[-tableFile file]
,→find
Additional options:
[-clean]
[-mgType]
- Clean table data before data migration
- Migration model type. -mgType parameter␣

,→value
range 0 to 2. Default is 0.
0 : target pipeline migration
1 : target seamless pipeline migration
2 : source seamless pipeline migration

[-usingSplit]
[-maxUsedCPU num]
,→100%.
- Split with large table. Default is false
- Maximum CPU usage percentage. Range 1% to␣

(continues on next page)
2.1. 命令行操作 13
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
Default is 100%. eg:100%
[-readWriteRatio readNum:writeNum] - Read/write threads per pipeline.
Default is 1:3. eg:1:3

[-sizePerBlock num]
,→megabytes(MB).
- Size per block. The value is in␣
Default is 100. eg:100
- Large object type default size. The value␣
[-blobSize num]

,→is in
bytes(B). Range 1 to 2000. Default is 500.
eg:500

[-validateTargetTable]- Verify that the target table exists.
Default is false.
- Set log level. Default is INFO.
eg:[ERROR|WARN|INFO|DEBUG]
[-logLevel]

Global options:
-help - Print this help display
主要参数说明
14 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6

参数名称参数含义
-target.service将要搬迁的服务名称(目标端本地的服务名称,软件会自动查找对
应的 static 配置文件)
-service同 -target.service 参数(兼容低版本 KFS)
-source.service将要搬迁的服务名称(源端端本地的服务名称,软件会自动查找对
应的 static 配置文件)
-source.host source
Host
源端数据库地址
-source.port sourcePort源端数据库端口
-source.user
sourceUser
源端数据库账号
-source.pass sour
cePass
源端数据库密码
-source.db sourceDb源端数据库数据库名称( oracle 对应服务名称)
-source.dbtype
sourceDbType
源端数据库类型,目前支持: oracle、 mysql、 mssql、 kingbase7、
kingbase8
-source.schema
sourceSchema
源端数据库数据库表所在的模式名
-source.tables regex要搬迁的表全名(含模式名),逗号分隔
-source.rmiHost源端服务主机 ip
-source.rmiPort源端服务主机 rmi 端口,即 rmi-port
-target.rmiHost目标端服务主机 ip
-target.rmiPort目标端服务主机 rmi 端口,即 rmi-port
-mgType搬迁类型, 0 极速模式, 1 平滑模式, 2 特殊模式,默认 0
-usingSplit开启大表拆分,默认不开启
-maxUsedCPU numKFS 占用 CPU 最大比例,值为百分比,默认 100%,例: 100%
-readWriteRatio
rNum:wNum
每个流水线读写比例配置,默认 1:3
-sizePerBlock num大表拆分每块大小,默认 100,单位 MB
-blobSize num大对象长度大小,默认 500,单位 B
-validateTargetTable检验目标端表是否存在,默认不校验
-
source.maxRowsByBlock
size
批量提交的数量,默认 1000
-clean指定该参数则搬迁数据前清空表数据
-maxLobSize可搬迁的单个大对象大小,若为 0 则表示不搬迁大对象

1. 极速模式(目标端流水线快速搬迁)
假设将 KingbaseES V7 中 TEST 数据库 PUBLIC 模式下的 TEST1 和 TEST2 表迁移到目标端
Kingbase V7 的 TEST 库下,目标端服务名为 kingabse7
2.1. 命令行操作 15
Kingbase FlySync 管理手册, Release V1R6
执行命令行参数如下:
loader -source.user SYSTEM -source.pass 123456 -source.db TEST \
-source.dbtype kingbase7 -source.host 192.168.11.44 -source.port 65432 \
-source.tables PUBLIC.TEST1,PUBLIC.TEST2 -target.service kingbase7 \
-mgType 0
注意:
• 上述数据搬迁命令不会清空原有数据,需要需要清空数据,需要指定参数 -clean
• 初始搬迁的命令行操作,需要在配置完数据同步,启动后台服务,还没有正式数据同步
时进行
2. 平滑模式(目标端流水线无缝搬迁)
假设将 KingbaseES V7 中 TEST 数据库 PUBLIC 模式下的 TEST1 和 TEST2 表迁移到目标端
Kingbase V7 的 TEST 库下,源端服务名 kingbase7,目标端服务名为 kingabse7
执行命令行参数如下:
loader -source.service kingbase7 -source.user SYSTEM -source.pass 123456 \
-source.db TEST -source.dbtype kingbase7 -source.host 192.168.11.44 \
-source.port 65432 -source.tables PUBLIC.TEST1,PUBLIC.TEST2 \
-source.rmiHost 192.168.11.44 -source.rmiPort 11000 \
-target.rmiHost 192.168.11.45 -target.rmiPort 11000 \
-target.service kingbase7 -mgType 1 -clean
注意:
• 平滑模式搬迁过程中,不可人为修改服务状态。若因外界原因导致服务状态异常,需将
服务修正为 online 后再次执行搬迁
3. 特殊模式(源端流水线无缝搬迁)
假设将 KingbaseES V7 中 TEST 数据库 PUBLIC 模式下的 TEST1 和 TEST2 表迁移到目标端
Kingbase V7 的 TEST 库下,源端服务名 kingbase7,目标端服务名为 kingabse7
执行命令行参数如下:
loader -source.service kingbase7 -source.user SYSTEM -source.pass 123456 \
-source.db TEST -source.dbtype kingbase7 -source.host 192.168.11.44 \
-source.port 65432 -source.tables PUBLIC.TEST1,PUBLIC.TEST2 \
-source.rmiHost 192.168.11.44 -source.rmiPort 11000 \
-target.service kingbase7 -mgType 2 -clean
注意:
• 特殊模式搬迁过程中,不可人为修改服务状态。若因外界原因导致服务状态异常,需将
服务修正为 online 后再次执行搬迁
16 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6
2.2 图形操作
图形操作是对命令行操作的封装,在管控平台上进行。操作步骤为
1. 新建搬迁任务,如图
2. 填写需要的信息
注意:搬迁类型中,结构搬迁和数据搬迁分别表示是否要进行对应的操作,当只选择数据搬迁时,可
选择勾选清除目标端数据(默认勾选),勾选后会在数据搬迁前,将目标端要搬迁的表中数据清除。
搬迁模式支持极速模式、平滑模式、特殊模式。
搬迁类型选择 极速模式或 平滑模式时,可配置数据搬迁高级参数
• 读写比例: KFS 根据 CPU 核心线程数进行分配读写比例( 1:1; 1: 2; 1:3; 1:4),每
条搬迁流水线默认为 1 读 3 写。
2.2. 图形操作 17
Kingbase FlySync 管理手册, Release V1R6
• CPU 资源:提供 CPU 资源占比,设置可使用 CPU 的核心线程数的百分比(默认 1,可
选 30%、 50%、 80%、 100%) , 将多少核数应用于初始搬迁。
• 检验目标端表:检验目标端的表是否存在。
• 大表拆分:将单个表拆分成多个独立的逻辑子表,并行搬迁。
• 每块大小:默认 100MB 一批,可通过块大小参数指定大小,默认单位为 MB。
• 大对象长度:根据不同的数据类型计算长度因子(默认为 500,取值范围 1-2000)。
搬迁类型选择 特殊模式时,需从服务管理中将目标端节点服务信息导出文件 service.
json ,并将节点服务放置源端用户家目录下。导出方式可通过在目标节点执行 fsrepctl
properties > service.json 会将 json 格式服务信息重定向到 service.json 文件中
3. 网络地址转换配置
若源端和目标端处于不同的网络环境中,两者 IP 不能直接访问,需要进行该配置,若不存在该情况则
不用配置。该页面共有 4 个配置项:
• 同步服务节点地址:同步服务所在的节点地址在此处的地址映射。
• 同步服务节点端口:同步服务所监听的端口在此处的端口映射。
• 数据库地址:对端网段的数据库地址在此处的映射。
• 数据库端口:对端网段的数据库地址在此处的映射。
4. 选择要搬迁的对象
18 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6
只需要选择源端表即可,系统会自动匹配需要搬迁到的目标位置(根据配置的同步服务)
5. 点击完成,即可进行初始数据搬迁。搬迁的日志可以到 [数据搬迁] -> [查看结果] 中进行浏览和查看
注意:极速搬迁功能,如果要保证数据一致性,需要在配置完数据同步,启动后台服务,配置完管控
平台,还没有正式数据同步前进行
2.3 多表图形操作
多表图形操作主要针对一对多,同时搬迁多个表。
1. 新建搬迁任务,选择多个目标节点,并填写需要的信息,如图
2.3. 多表图形操作 19
Kingbase FlySync 管理手册, Release V1R6
2. 选择要搬迁的对象
3. 点击完成, [数据搬迁] -> [任务管理] 中查看创建的任务,选择迁移操作, [数据搬迁] -> [查看结果] 中
查看搬迁的结果
20 第 2 章 初始数据搬迁
Kingbase FlySync 管理手册, Release V1R6
2.3. 多表图形操作 21
Kingbase FlySync 管理手册, Release V1R6
22 第 2 章 初始数据搬迁
第 3 章
单表刷新
3.1 功能简介
单表刷新支持在不经过数据校验的情况下,将源端和目标端不一致的数据表,强制刷新为一致的数据。
单表数据刷新,由用户手动触发执行,需在源端执行 reload-table 命令行操作。
单表刷新支持的参数为
kingbase@gxzhang-1 ~]$ reload-table -help
Reload Table Control Utility
Syntax: reload-table -type dbType -d db -u user -p password -h host -P port -t␣
,→tablename
-service service -rmiHost rmiHost -rmiPort rmiPort
Connection options:

-service name
,→config
OR connection options:
-h host
-P port
-u user
-p password
-d db
-type dbType
- Name of a replication source service instead of path to␣
- source database host
- source database port
- source database username
- source database password
- source database name
- source database type.

(continues on next page)
23
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
eg: [kingbase7|kingbase8|mysql|oracle|mssql]
OR RMI connection options:

-rmiHost rmiHost
-rmiPort rmiPort
- source rmi host.
- source rmi port.
Table scan specification:
-t tableName
Global options:
-help
- Comma-separated list of tables to find. eg:schemaA.tableA
- Print this help display

3.2 参数说明

参数名称参数含义
-service
name
将要刷新的服务名称(源端本地的服务名称,软件会自动查找对应的 static 配
置文件)
-h host源端数据库地址
-P port源端数据库端口
-u user源端数据库账号
-p password源端数据库密码
-d db源端数据库数据库名称( oracle 对应服务名称)
-type dbType源端数据库类型,目前支持: oracle、 mysql、 mssql、 kingbase7、 kingbase8
-t tableName要刷新的表全名(含模式名)
-rmiHost源端服务主机 ip
-rmiPort源端服务主机 rmi 端口,即 rmi-port
-help查看命令帮助列表

案例:
假设要对 KingbaseES V7 TEST 数据库中 PUBLIC 模式下的 TEST1 表进行单表刷新,源端服务名
kingbase7
1. 需要在目标端执行“fsrepctl properties > service.json”命令导出 service.json 文件并手动拷贝至
源端家目录下
2. 在源端执行命令行参数如下:
reload-table -type kingbase7 -d TEST -u SYSTEM -p 123456 \
-h 192.168.11.41 -P 65432 -t PUBLIC.TEST1 -service kingbase7 \
–rmiHost 192.168.11.41 –rmiPort 11000
24 第 3 章 单表刷新
Kingbase FlySync 管理手册, Release V1R6
3.3 注意事项
• 不支持同步的大字段类型表数据也不支持单表记录刷新
• 1:N 场景中,会造成所有的 N 表数据刷新(配置了表过滤除外)
• 级联场景中,会造成级联的所有节点表数据刷新(配置了表过滤除外)
• N:1 场景中,如果是汇集到一张表,会冲掉目标表的所有数据(需用户自行斟酌)
• 针对已经存在的过滤规则,默认在 svc-remote-filters 中配置,由于和单表数据刷新无关,故规则依然
有效(单表数据刷新作用在源端数据库,同初始搬迁跨隔离设备一样,依赖数据同步的基础原理)
• 单表数据刷新,不能和数据校验、初始搬迁等功能同步进行,即这三种任务,同一时间只能有一个在
执行。
• 现阶段不支持高可用特性(即刷新中异常,可能导致目标端数据和源端不一致) , 异常后,可通过再次
执行单表刷新保持两端数据一致。
• 命令在源端节点执行,需保证源端服务状态 online
3.3. 注意事项 25
Kingbase FlySync 管理手册, Release V1R6
26 第 3 章 单表刷新
第 4 章
同步服务使用
4.1 数据同步服务基础操作
4.1.1 启动和停止
• 启动同步程序:
replicator start
• 停止同步程序:
replicator stop
• 查看同步程序是否启动:
replicator status
27
Kingbase FlySync 管理手册, Release V1R6
4.1.2 查看同步状态
• 查看解析位置:
kufl list
• 查看同步状态:
fsrepctl status
• 跳过某个事务:
fsrepctl online -skip-seqno xx
一般用户系统报错,处于 ERROR:OFFLINE 状态,并且用户不想要某条数据时
4.1.3 修改配置文件
• 修改配置文件 flysync.ini 或 setupCDC.conf 时,需先停止同步服务, 待修改完成后启动同步服务
replicator stop
...
修改配置文件
...
fspm update
...
replicator start
4.2 数据同步服务的可靠性配置
Kingbase FlySync 从 V1R2 开始,增强了数据同步服务的可靠性,增强的内容包括:
• 服务开机自启
• 服务守护
• 故障自动恢复
28 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
4.2.1 可靠性应用的场景
可靠性增强后的 Kingbase FlySync,可以处理如下单点故障:
• 外部故障
1. 数据库故障重启(自动恢复)
2. 网络故障(自动恢复)
3. 硬件故障(服务开机自启 + 自动恢复)
• 内部故障
1. 内存溢出(服务守护)
2. 运行时异常导致的崩溃(服务守护)
4.2.2 配置服务开机自启
Kingbase FlySync 配置开机自启的方式为,切换到 root 用户执行:
• 注册开机自启服务:
cd 安装目录/flysync/flysync-replicator/bin
./replicator install
• 移除开机自启服务:
cd 安装目录/flysync/flysync-replicator/bin
./replicator remove
4.2.3 配置服务守护
自带功能,无需单独配置( Kingbase FlySync 进程丢失后,守护进行会自动重新启动)
4.2.4 配置故障自动恢复
Kingbase FlySync 针对故障自动恢复,新增了三个参数

名称含义
repl_auto_recovery_max_attempts自动恢复尝试次数,系统 OFFLINE 时,尝试将系统重新置
于 ONLINE 状态的次数
repl_auto_recovery_delay_interval系统 OFFLINE 时,尝试 ONLINE 之前的等待时间, s(秒)、
m(分钟)、 h(小时)
repl_auto_recovery_reset_interval系统自动恢复次数重置时间, s(秒)、 m(分钟)、 h(小时)

4.2. 数据同步服务的可靠性配置 29
Kingbase FlySync 管理手册, Release V1R6
比如,如下配置,表示系统故障时, 30 秒后,尝试重新恢复,尝试次数为 2。并且 300 秒后,
将重试次数重置
repl_auto_recovery_max_attempts=2
repl_auto_recovery_delay_interval=30s
repl_auto_recovery_reset_interval=300s
注意:
repl_auto_recovery_delay_interval 设置时,必须大于错误发生的最大时间。比如数据
库重启的时间 60s,则 repl_auto_recovery_delay_interval 设置时必须大于 60s,否则
可能无法自动恢复
4.2.5 配置中间网络故障重启后自动恢复
自动功能,无需单独配置。即网络中断恢复后, Kingbase FlySync 可自动重连,恢复同步运行
4.3 多服务的配置和测试建议
flysync 使用 kufl 作为数据交换的格式,因此,在测试多种源端和目标端相互搭配时,就不需要每次都重新
搭建源端和目标端,只需要
• 针对每种源端,安装一套数据库(比如 Oracle 11g、 MySQL 5.7、 SQL Server2017)
• 针对每个目标端,安装一套数据库(比如 Oracle 12c、 MySQL 8.0、 Kingbase)
按照以下逻辑逐个增加
• 源端 flysync.ini 文件中,加入 Oracle 11g 信息,执行 fspm install。插入数据,使用 kufl list 确认数据
能够解析后,即标志测试完成
• 源端 flysync.ini 文件中,加入 MySQL 5.7 信息,执行 fspm update。插入数据,使用 kufl list 确认数据
能够解析后,即标志测试完成
• 同样,搭建 SQL Server 2017,只要数据插入后能正常解析,即标志测试完成
• 目标端 flysync.ini 文件中,加入 Oracle 12c 信息,源端写 Oracle 11g 相关的 kufl 端口信息,启动后,
本地 kufl 能够同步,并且 fsrepctl 无报错,即表示测试完成
• 同上,逐渐在 flysync.ini 中丰富其他源端信息,每增加一个源端,都确认 kufl 能够正确同步,并且
fsrepctl 无报错,则表示所有的组合测试完成
30 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
4.4 错误处理
4.4.1 说明
错误处理:在目标端入库阶段,出现主键冲突,非空约束冲突,表不存在等异常时,需要按不同的异常做
不同的错误处理,而之前只能选择跳过或者停止 KFS 来做处理。现阶段增加错误处理的机制,来针对不同
的异常错误,做出不同的处理手段。
4.4.2 ini 相关参数配置说明
1. property=replicator.applier.dbms.enable_handle_error=true
是否开启错误处理, true 代表开启, false 代表关闭,默认开启
1. property=replicator.applier.dbms.failure_policy_file=${replicator.home.dir}/
support/filters-config/failure_policy_code.json
出错策略文件路径,下面会对该 JSON 文件的内容进行介绍
1. property=replicator.applier.dbms.discard_file=${replicator.home.dir}/log/
${service.name}/discard.log
记录错误日志信息所在日志文件位置
1. property=replicator.applier.dbms.discard_ddl=${replicator.home.dir}/log/
${service.name}/discard.log
DDL 语句出错时,可以单独设置错误日志信息输入日志文件位置, 默认与 DML 出错时的错误信
息保留一个文件
4.4.3 策略方式
1. STOP
出错后抛异常,交给以前错误处理策略 replicator.applier.failure_policy 做处理
2. IGNORE_TRANSACTION
忽略出错的整个事务,并将错误信息输出在 fsrepsvc.log 日志里
3. IGNORE_ROW
忽略一个事务中出错的 SQL 语句,其他正确的语句正常入库,并将错误信息输出在
fsrepsvc.log 日志里
4. DISCARD_TRANSACTION
忽略出错的整个事务,并将错误信息输出在 replicator.applier.dbms.discard_file 配置
的 路 径 日 志 里, DDL 可 以 单 独 配 置 文 件 位 置 如 默 认 配 置 为: ${replicator.home.dir}/
4.4. 错误处理 31
Kingbase FlySync 管理手册, Release V1R6
log/${service.name}/discard.log,则在错误日志信息 KFS 安装目录/log/#{service.name}_x/
discard.log_xxxxxxxxxx。 x 代表一个数字
5. DISCARD_ROW
忽略一个事务中出错的 SQL 语句,其他正确的语句正常入库,并将错误信息记录输出在设
置的文件中,如上说明所示。
注意: ORACLE 一个事务中出现出错的 DDL 语句,无法支持忽略此一个事务中出错的 DDL SQL 语句,只能
忽略整个事务
4.4.4 模式和表匹配规则
1. 具体某张表
SCHENA.TABLE
2. 某个模式下以 ABC 开的表
SCHENA.ABC*
3. 某个模式下的所有表
SCHENA.*
4. 所有模式下的所有表
*.*
4.4.5 错误号说明
开启错误处理后,错误号在 KFS 的日志中有记录,如果想跳过某个错误,可以按照日志所记录
的错误号( ErrorCode)进行配置
如 ORACLE 的违反唯一约束条件,为 ORA-00001(则错误号为 1)
4.4.6 failure_policy_code.json 配置举例
1. 默认配置
{
"DEFAULT": "STOP"
}
1. 目标端 ORACLE
32 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
{
"DEFAULT": "STOP",
"FLYSYNC.*":
{
"1": "DISCARD_IGNORE",
"OTHER": "IGNORE_TRANSACTION"
}
}
含义说明: FLYSYNC 模式下的 USER 表,在遇到错误号为 1 时,配置策略为 DISCARD_IGNORE ;FLYSYNC
模式下的其他表,在遇到其他错误时,策略为 IGNORE_TRANSACTION ; 其他表出错的默认策略为 STOP
4.4.7 错误信息日志格式

Seqno:{0}// seqno 号
Timestamp:{1} // 出错时间
Operation:{2} // DDL | DML
Schema:{3}
Table:{4}
SQL:{5}
// 模式名
// 表名
// 出错的 SQL 语句

ErrorCode:{6} // 错误号
ErrorCause:{7} // 错误原因
4.5 冲突处理
4.5.1 说明
冲突处理: KFS 在进行数据同步时,当同步源数据库表数据和目标数据库中的数据不一致时,在数据同步
失败的情况下,根据相应的处理策略对数据同步操作做进一步的处理,以完成本次数据同步的过程,我们
称之为数据冲突处理。
冲突类型: 特指在执行 DML 时出现的异常情况,共分为 5 种,
1. Insert 时的唯一约束冲突 (INSERTROWEXISTS)
2. Update 时因数据不存在导致的冲突 (UPDATEROWMISSING)
3. Update 时,数据存在,但是 before image 的一列或多列和数据库当前值不一致的冲突 (UPDATEROWEXISTS)
4. Delete 时因数据不存在导致的冲突 (DELETEROWMISSING)
5. Delete 时,数据存在,但是 before image 的一列或多列和数据库当前值不一致的冲突 (DELETEROWEXISTS)
4.5. 冲突处理 33
Kingbase FlySync 管理手册, Release V1R6
双写: 在同步软件进行数据同步的同时,有其他业务在向目标端数据库进行写操作。
before image: 也叫做的列的前项,可以理解为记录在中间数据文件 kufl 中, Update 或者 Delete 语句时的
old tuple 的值,即用来作为 WHERE 条件的值。
如下:数据库中存在一条数据( 1,’oldName’) ,update 后,这条数据的 before image 就为’oldName’
insert into test values(1,'oldName');
update test set name = 'newName' where id = 1;
4.5.2 相关参数配置说明
1. property=replicator.extractor.dbms.getBeforeCols=true
源端解析时,是否允许获取表中列的前项, insert 语句获取主键列; true 表示允许获取表中列的
前项, false 相反;配置在源端
2. property=replicator.extractor.dbms.beforeColsFile=${replicator.home.dir}/
support/filters-config/beforeColsRule.json
获取列前项具体的规则配置文件,在 getBeforeCols 为 true 时生效,配置在源端
3. property=replicator.applier.dbms.conflictResolve=true
目标端是否开启冲突处理功能,配置在源端
4. replicator.applier.dbms.beforeColsFile=${replicator.home.dir}/support/
filters-config/conflictResolveRule.json
冲突处理的规则文件路径,在 conflictResolve 为 true 时生效,配置在目标端
注意:
1. 开 启 冲 突 处 理 必 须 开 启 错 误 处 理 功 能, 即 ini 配 置 ( replicator.applier.dbms.
enable_handle_error=true ), 错误处理配置文件内容可以采用默认, 不需要修改
4.5.3 文件定义
beforeColsRule.json 文件定义
{
"SCHEMA.TABLE1": "COL1",
"SCHEMA.TABLE2": "COL1,COL2"
}
SCHEMA: 模式名, TABLE1: 表名, COL1: 要获取前项的列名
注: 模式名和表名必须完整,不支持正则写法
conflictResoveRule.json 文件定义
34 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
{
"DEFAULT": "DISCARD",
"SCHEMA.TABLE1": {
"DETECTACTION": "UPDATE,DELETE",
"COMPARECOLS":"COL1,COL2",
"RESOLVERULE": {
"INSERTROWEXISTS": "USEMAX:COL1",
"UPDATEROWEXISTS": "USEMAXEQ:COL2",
"UPDATEROWMISSING": "IGNORE",
"DELETEROWEXISTS": "OVERWRITE",
"DELETEROWMISSING": "IGNORE"
}
},
"SCHEMA.TABLE2": {
"DETECTACTION": "UPDATE,DELETE",
"COMPARECOLS":"COL1,COL2",
"RESOLVERULE": {
"INSERTROWEXISTS": "USEMIN:COL1",
"UPDATEROWEXISTS": "USEMINEQ:COL2",
"UPDATEROWMISSING": "IGNORE",
"DELETEROWEXISTS": "OVERWRITE",
"DELETEROWMISSING": "IGNORE"
}
}
}
DETECTACTION: 要进行冲突检测的 DML 类型,可填 UPDATE 或 DELELTE,或者 2 者都填。
COMPARECOLS: 要进行比较的列,默认包含主键,不需手动填写主键。
RESOLVERULE: 对冲突的处理规则,冲突分为 5 种(具体含义见上文),为每种冲突执行不同的处理策略。
DISCARD: 跳过该冲突的数据,并将冲突数据记录在日志中
OVERWRITE: 以中间文件中的数据为准进行重写
IGNORE: 忽略,冲突处理不生效
INSERTROWEXISTS 和 UPDATEROWEXISTS 两 种 冲 突 存 在 4 种 特 殊 的 处 理 策 略, 满 足 策 略 后, INSERTROWEXISTS 是以中间文件的值为准,将插入变为更新; UPDATEROWEXISTS 是以中间文件中的值
为准更新
USEMAX:COL: 如果 col 在 kufl 中的值(前列项)大于目标库的值,则执行对应的操作
USEMAXEQ:COL: 大于等于
USEMIN:COL: 小于
USEMINEQ:COL: 小于等于
4.5. 冲突处理 35
Kingbase FlySync 管理手册, Release V1R6
注:
1. 模式名和表名支持正则写法,如果表名带有 * $ 等正则符号,需要用单斜杠转义,如: \* \$,参考
场景问题 33 点
2. USEMAX,USEMIN 等四种特殊处理策略,里面需要比较的 COL 类型只支持:整数类型,浮点数类型,
时间类型
3. 不支持列名带“:”或者“,”
4.5.4 kufl 变化
在源端开启获取列的前项时 (getBeforeCols=true), 三种 DML 的 kufl 变化
1. insert 语句带 KEY 列
2. update 和 delete 带前项列 (BIC)
36 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
4.5.5 冲突处理日志
配置处理策略为 DISCARD 时,会将冲突数据记录在日志中。
目录: 安装目录/log/服务名/discardConflict.log
格式:

Seqno:{0}// seqno 号
Timestamp:{1} // 出错时间
Schema:{3}
Table:{4}
conflictType
SQL:{5}
// 模式名
// 表名
// 冲突类型
// 出错的 SQL 语句

4.5. 冲突处理 37
Kingbase FlySync 管理手册, Release V1R6
4.5.6 配置案例
对 public.test 表做冲突处理, 以列 b 为前列项 (before image)
1. 源端 ini 配置, property=replicator.extractor.dbms.getBeforeCols=true
2. 源端 beforeColsRule.json 文件配置
{
"public.test": "b"
}
1. 目标端 ini 配置, property=replicator.applier.dbms.conflictResolve=true
2. 目标端 conflictResolveRule.json 文件配置
{
"DEFAULT": "IGNORE",
"public.test": {
"DETECTACTION": "UPDATE,DELETE",
"COMPARECOLS":"b",
"RESOLVERULE": {
"INSERTROWEXISTS": "USEMAX:b",
"UPDATEROWEXISTS": "USEMAX:b",
"UPDATEROWMISSING": "IGNORE",
"DELETEROWEXISTS": "OVERWRITE",
"DELETEROWMISSING": "IGNORE"
}
}
}
1. 首先,源端解析开启获取前项列,配置 beforeColsRule.json 文件如上;
2. 目标端开启冲突处理,配置 conflictResolveRule.json 如上,含义为:对 INSERTROWEXISTS 和 UPDATEROWEXISTS 冲突时,比较 b 列, kufl 文件中的前列项( BIC)列更大时,覆盖到目标端;其他配
置含义见上文
4.6 DDL 过滤
4.6.1 说明
DDL 过滤: 用 KFS 过滤某个模式下的 DML 操作,或者只保留某个模式下的 DML 操作,可以 replicate 过滤
器( do=? | ignore=?)。但是此过滤器不过滤 DDL,为了处理此问题,新增 DDL 过滤来达到此目的。 DDL 过
滤通常配置在目标端(如果是异构数据源 DDL 同步必须配置在源端),叫做 ddlSupport 过滤器,下面展开
讲解配置详情。
38 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
4.6.2 ini 相关参数配置
# 目标端增加过滤器
svc-remote-filters=ddlSupport
# 配置 ddlSupport 过滤器所用的 json 文件路径,建议用默认路径下的文件,修改即可
property=replicator.filter.ddlSupport.definitionsFile=/home/kfs/ddl_support.json
4.6.3 相关说明
1. DDL 对象: TABLE, SCHEMA, VIEW, INDEX, FUNCTION, TRIGGER 等
2. 对象操作类型: CREATE, DROP, ALTER, TRUNCATE
3. 设置为”N”, 代表过滤改 DDL; 设置为”Y”, 代表不过滤
4. DDL 所带的表和模式,只有 TABLE, INDEX, TRIGGER 对象才有。例如下面的 DDL, 它们所带表的模式
和表名都为 PUBLIC.TEST。其他 DDL 对象不支持按模式和表名过滤。
CREATE TABLE PUBLIC.TEST(ID INT);
DROP INDEX index_test ON PUBLIC.TEST;
DROP TRIGGER trigger_test ON PUBLIC.TEST;
4.6.4 常见场景
1. 不同步 DDL
{
"DEFAULT": "N"
}
2. 同步所有 DDL
{
"DEFAULT": "Y"
}
3. 仅同步指定模式下的 TABLE, INDEX 和 TRIGGER 操作
{
"DEFAULT": "N",
"TABLE": {
"PUBLIC.*": {
"CREATE": "Y",
"ALTER": "Y",
(continues on next page)
4.6. DDL 过滤 39
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
"DROP": "Y",
"TRUNCATE": "Y"
}
},
"INDEX": {
"PUBLIC.*": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y"
}
},
"TRIGGER": {
"PUBLIC.*": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y"
}
}
}
4. 只同步除指定模式下的 TABLE, INDEX 和 TRIGGER 操作,其他过滤
{
"DEFAULT": "N",
"TABLE": {
"DEFAULT": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y",
"TRUNCATE": "Y"
},
"SCHEMA.*": {
"CREATE": "N",
"ALTER": "N",
"DROP": "N",
"TRUNCATE": "N"
}
},
"INDEX": {
"DEFAULT": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y"
},
(continues on next page)
40 第 4 章 同步服务使用
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
"SCHEMA.*": {
"CREATE": "N",
"ALTER": "N",
"DROP": "N"
}
},
"TRIGGER": {
"DEFAULT": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y"
},
"SCHEMA.*": {
"CREATE": "N",
"ALTER": "N",
"DROP": "N"
}
}
}
5. 只同步 TABLE, INDEX, SEQUENCE, VIEW 操作,其他不同步
{
"DEFAULT": "N",
"TABLE": {
"DEFAULT": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y",
"TRUNCATE": "Y"
}
},
"INDEX": {
"DEFAULT": {
"CREATE": "Y",
"ALTER": "Y",
"DROP": "Y"
}
},
"SEQUENCE": {
"DEFAULT": {
"CREATE": "Y",
"DROP": "Y",
"ALTER": "Y"
(continues on next page)
4.6. DDL 过滤 41
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
}
},
"VIEW": {
"DEFAULT": {
"CREATE": "Y",
"DROP": "Y",
"ALTER": "Y"
}
}
}
4.6.5 过滤流程
42 第 4 章 同步服务使用
第 5 章
服务管理
5.1 概述
概述:服务管理目标是查看服务状态,修改服务状态
5.2 服务 ONLINE
在表格操作中点击【ONLINE】
成功会以弹窗的形式提醒如下图:
43
Kingbase FlySync 管理手册, Release V1R6
结果如下图:
5.3 服务 OFFLINE
在表格操作中点击【ONLINE】
成功会以弹窗的形式提醒如下图:
44 第 5 章 服务管理
Kingbase FlySync 管理手册, Release V1R6
结果如下图:
5.3. 服务 OFFLINE 45
Kingbase FlySync 管理手册, Release V1R6
46 第 5 章 服务管理
第 6 章
数据校验
在完成数据实时同步后,若需要验证同步的正确性,可以使用数据比对功能,即对同步的结果进行校验。
数据校验共包含四个方面:
1. 校验配置
2. 任务管理
3. 调度管理
4. 查看结果
47
Kingbase FlySync 管理手册, Release V1R6
6.1 校验配置
校验配置界面, 如图

标题描述
校验核心线程数校验时的线程池核心线程数,多表多线程同时比
修复批量大小在校验数据结果手动同步或者数据修复过程中,设置批量入库的
大小,默认为: 10000
校验同步记录日志在手动校验同步或者自动修复时,在目标端产生的增量是否记录
在日志中,再次被解析出来
校验结果自动清除校验结果自动清除策略,默认开启此功能,默认清除校验结果的
结束时间 1 天前的清除。在每天凌晨 0 点自动进行该操作
是否校验大对象此开关仅适用于满足以下条件场景:数据类型: BLOB, BYTEA,
CLOB, NCLOB, RAW, LONG 等
大对象校验阈值为防止大对象数据过大,通过数据库 LENGTH() 函数计算长度是
否超过设置的阈值。超过时, 取值的数据为一个特殊字符串;不超
过时为原数据
同步跳过超阈值数
在校验同步或者自动修复时,是否选择跳过同步超过阈值的大对

校验核心线程数配置说明:
校验核心线程数决定了同时有多少张表在比对,为了提升比对性能,可将其设置性能最大为
CPU 核心线程数,同时提高比对程序的内存大小
修改校验线程数大小提供 2 种方式:
48 第 6 章 数据校验
Kingbase FlySync 管理手册, Release V1R6
1. 图形化校验配置中,可修改”校验核心线程数”里的数值
2. compare/ conf/ thread/ threadpool.properties 文 件, 修 改 task.pool.corePoolSize 和
task.pool.maxPoolSize 数值为指定数值
修改比对程序内存大小:
1. compare/conf/wrapper.conf 文件, 修改 wrapper.java.maxmemory 的数值, 默认 4096, 单位 M
CPU 线程数查看:
1. 执行 lscpu 命令, 核心线程数 = CPU(s) 大小 * Thread(s) per core 大小
2. 执行命令 grep ‘processor’/proc/cpuinfo | sort -u | wc -l
6.2 任务管理
任务管理用来维护用户要进行数据验证的任务对象。
新建比对任务,如图
在任务管理界面点击新建任务按钮,弹出任务表单
6.2. 任务管理 49
Kingbase FlySync 管理手册, Release V1R6
在任务管理界面点击网络地址转换设置按钮,弹出设置表单
根据提示填写表单中的必填项,并选择将要进行校验的源和目标表。
•【主节点】,控制台中配置的源端部署节点
•【主服务】,主节点上运行的同步服务
•【目标节点】,控制台中配置的目标端部署节点及节点上运行的同步服务,可勾选多个,创建一对多
的任务
•【网络地址转换设置】,若源端和目标端处于不同的网络环境中,两者 IP 不能直接访问,需要进行该配
置,若不存在该情况则不用配置:
– 数据库地址,填写其他网段的数据库地址在本地网段的映射
– 数据库端口,填写其他网段的数据库端口在本地网段的映射
50 第 6 章 数据校验
Kingbase FlySync 管理手册, Release V1R6
•【校验类型】,进行数据比对的方式:
– 精简模式,只比对源和目标端的数据量的差异
– 详细模式,支持两个高级属性:差异校验和无缝校验
* 差异校验:选择是否开启比对一致数据,开启后,会显示一致的数据,未开启时,
只会显示存在差异的数据
开启前
开启后
* 无缝校验:主要针对源端数据库有业务进行时,其他比对方式可能出现比对差异,
开启后会解决因为这些原因造成的数据不一致
•【对象类型】,要进行比对的对象的类型,目前只支持数据库中的表对象。
下图为选择比对对象后的展现:
6.2. 任务管理 51
Kingbase FlySync 管理手册, Release V1R6
下图为表字段的映射设置:
通过该界面可以根据需求匹配将要进行数据比对的字段。
•【设置】,设置源端表和目标端的表在进行比对时的规则
•【目标对象】,设置目标端对比时和源端匹配的列(若不设置,则不进行对比)
•【主键】,设置比对时所参照的列,若不设置则默认以所有列作为主键
若不进行设置,则列名按照名称进行匹配,主键使用在数据库中的主键列。
52 第 6 章 数据校验
Kingbase FlySync 管理手册, Release V1R6
6.3 调度管理
调度任务是设置一个定时执行的触发器,在指定的时间执行设置的比对任务。
上图为新建调度的任务表单,其中:
•【执行任务】,调度任务定期执行的比对任务,一个调度可选多个任务并生成多个任务结果
•【调度策略】,选择任务执行的周期
•【选择日期】,【选择时间】选择任务定期执行的时间
上图为调度的任务的管理界面,主要功能有:
•【状态】,改变调度的状态,使其失效或者生效,失效状态下将永远不会执行,直到使其生效
6.3. 调度管理 53
Kingbase FlySync 管理手册, Release V1R6
•【立即执行】,立刻开始一次任务的执行
6.4 查看结果
查看数据比对的结果,包括详细模式和精简模式的结果,下面以详细模式为例进行说明:
查看结果的初始页面,显示的是历史的比对结果。
•【查看结果】,查看该任务比对后的结果,如下图:
每一行数据代表一个表对象,【向目标端同步】一列若出现红色箭头,则表示该表源和目标存在数据差异,
可以点击【查看数据】查看具体的数据,也可直接点击红色箭头,再点击【开始同步】,直接同步所有差异。
点击【查看数据】 , 如下图:
54 第 6 章 数据校验
Kingbase FlySync 管理手册, Release V1R6
展现单表的所有详细数据:
•【红色箭头】,预选择将要同步的数据
•【撤销】,撤销该条数据的选择
•【开始同步】,将预选择数据同步到目标数据库
6.5 多目标端比对操作
1. 在 [数据比对] -> [任务管理] 中新建比对任务,目标节点可以选择多个,如图
6.5. 多目标端比对操作 55
Kingbase FlySync 管理手册, Release V1R6
2. 选择需要比对的表和列
56 第 6 章 数据校验
Kingbase FlySync 管理手册, Release V1R6
3. 创建调度管理中新建任务,选择执行时间
4. 在 [数据比对] -> [查看结果] 中查看结果
• 注意:多目标端比对时,在选择比对对象时,目标只能选择第一个目标节点中的表,其他目标端
需要比对的表会根据第一个目标节点的表名和表所在的模式名查找。所以在多表比对中,必须保
证其他比对的表名和模式名和第一个目标节点一致,否则需要单独创建。
6.5. 多目标端比对操作 57
Kingbase FlySync 管理手册, Release V1R6
58 第 6 章 数据校验
第 7 章
数据修复
数据修复也称作:差异数据自动修复。此功能与数据比对相联系,在数据比对存在差异的结果,数据修复功
能能够将差异的数据自动修复置一致数据。
数据修复共包含二个方面:
1. 任务管理
2. 查看结果
7.1 任务管理
新建修复任务,如图:
在任务管理界面点击新建任务按钮,弹出新建修复任务表单
59
Kingbase FlySync 管理手册, Release V1R6
•【匹配比对任务】,匹配需要修复的比对任务(只能选择仅一个的详细比对任务)
•【修复等待时间】,比对任务完成后,等待多少延时时间进行修复(单位秒,默认立即执行,
范围 0~3600s)
•【修复启动阈值】,满足条件比对结果差异条数 >= 修复启动阈值,进行修复(范围 1~100)
•【网络地址转换设置】,若源端和目标端处于不同的网络环境中,两者 IP 不能直接访问,需

针对不同的表可以填写不同的修复阈值
60 第 7 章 数据修复
Kingbase FlySync 管理手册, Release V1R6
7.2 查看结果
查看结果界面,如图:
查看整个修复任务结果
查看某个表的修复结果
7.2. 查看结果 61
Kingbase FlySync 管理手册, Release V1R6
62 第 7 章 数据修复
第 8 章
告警机制
用户可以通过配置告警机制,在比对完成和节点报错时接收到邮件告警。
告警机制共包含三个方面:
1. 告警配置
2. 用户订阅
3. 发送结果
8.1 告警配置
告警配置用于配置接收邮件的相关信息。
告警邮件配置,如图
63
Kingbase FlySync 管理手册, Release V1R6
告警阈值配置,如图
其中告警阈值配置中值得讲解。
•【告警条件】,系统出错时如果大于设定时间没有处理则发送告警。
•【告警有效期】,超出有效期的问题不在发送告警
•【告警次数】,总共会发送邮件的次数
•【告警间隔】,两次发送告警的间隔时间
64 第 8 章 告警机制
Kingbase FlySync 管理手册, Release V1R6
8.2 用户订阅
用户订阅功能,订阅指定用户想要接收到的告警类型。
上图为用户订阅告警类型时的展现:
•【系统故障信息】,当连接到当前控制台的同步服务出错时进行告警
•【比对结果存在差异】,当比对任务执行完并且存在差异时进行告警
8.3 发送结果
发送的告警邮件如下图所示:
8.2. 用户订阅 65
Kingbase FlySync 管理手册, Release V1R6
66 第 8 章 告警机制
第 9 章
关于 License
9.1 概述
1. 在授权文件损坏,授权文件过期的情况下,需要更换物理节点上 Kingbase Flysync 同步程序的授权文
件下使用。
2. 查看某物理节点上 Kingbase Flysync 同步程序的授权文件。
9.2 License 更换
操作步骤
1. 数据表格中选择要更换 License 的节点
2. 点击【上传 license】
3. 选择正确的 License.dat 文件
4. 点击【打开】
如下图所示:
67
Kingbase FlySync 管理手册, Release V1R6
5. 上传结果如下:
9.3 License 查看
操作步骤
1. 数据表格中选择要查看 License 的节点
2. 点击【查看 license】
3. 查看结果
68 第 9 章 关于 License
Kingbase FlySync 管理手册, Release V1R6
9.3. License 查看 69
Kingbase FlySync 管理手册, Release V1R6
70 第 9 章 关于 License
第 10 章
FAQ
10.1 关键文件路径及说明
• 日志文件
安装路径/flysync/flysync-replicator/log
• 配置文件
安装路径/flysync/flysync-replicator/conf
• 授权文件
安装路径/flysync/flysync-replicator/conf
10.2 常见问题
1. 如何修改管控平台的连接信息
图形方式部署时,会自动配置连接信息;命令行方式配置管控平台时,需要手动修改数据
库连接信息。管控平台本身是以整个 jar 包的形式发布,连接信息在 BOOT-INF/classes/
application-pro.properties 文件中,目前有两种修改方式:
71
Kingbase FlySync 管理手册, Release V1R6
• Windows 下,使用解压软件打开 flysync-console.jar 包。找到 application-pro.properties
解压,修改后,再替换回 jar 包
• Linux 下,使用 vim 打开 flysync-console.jar 包,定位到 application-pro.properties,回
车,打开后编辑,保存
2. 元信息库配置参数的含义
元信息库使用 mysql,需要开启几个特殊的参数
lower_case_table_names=1 表名默认小写保存,但是比较的时候不区分大小写
init-connect='SET NAMES utf8' 默认连接编码采用 utf-8
character-set-server = utf8
show_compatibility_56=on MySQL 5.7 及以后的版本,获取启动时间
3. Oracle DBA 账号无法连接的问题
有时使用 DBA 账号在不加 AS DBA 的情况下可以连接 Oracle 数据库,加了 AS DBA 后无法连接数据库
可以尝试修改 DBA 用户密码
ALTER USRE SYS IDENTIFIED BY password
4. 几个 host 参数的含义
管控平台无法收集服务信息,查看日志,报错
此问题一般是由于没有完整或者忘记配置 hosts 文件所致,需要检查 hosts 文件是否配置无误
5. license 的限制规则
license 中限制了 2 个参数

名称含义
ServiceNum单个物理节点上可以部署的服务数量
clinetNumPerService每个源端,可以接受的目标端连接数量

6. ORA-29538 错误
Oracle 数据库所在机器缺少 JDK 所致
72 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
7. 过滤器
• casetransform
大小写转换,可以在 svc-remote-filters 阶段,将模式名、表名、字段名转换为特定的大小写模式。
由 replicator.filter.casetransform.to_upper_case 控制

含义
true转换为大写
false转换为小写

• rename
控制名称映射,默认的配置文件路径
安装目录/filters-config/rename.csv
rename 文件的格式为
原模式, 原表, 原列, 新模式, 新表, 新列
其中
– * 表示所有
– - 表示保持不变

S1,T1,*,S2,T2,-
S1,*,*,S2,-,-
将 S1 模式下的 T1 表映射到 S2 模式下的 T2 表
将 S1 模式下的所有表映射到 S2 模式下

• dropcolumn
列级过滤,配置在目标端过滤器中,通过配置过滤掉源端不需要同步的列。
配置方法:开启列过滤,并配置相应的 json 文件路径
svc-remote-filters=dropcolumn
property=replicator.filter.dropcolumn.definitionsFile=/home/flysync/dropcolumn.json
dropcolumn.json 格式为:
[
{
"schema": "test",
"table": "*",
"columns": [
"column_a",
"column_b",
(continues on next page)
10.2. 常见问题 73
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
]
},
...
]
其中 * 代表所有。上面的配置为将 test 模式下所有的表的 column_a 列和 column_b 列过滤
8. 几个关键元信息表的含义解释
flysync 中,有两个关键的元信息表
• trep_commit_seqno 记录当前断点位置
• heartbeat 心跳信息,不定期的同步 UPDATE 信息
当源端服务名和目标端服务名不一致时,需要增加一个 rename 的规则,转换模式名,保证元信息表
能够正常同步
9. update 和 install 的关系
第一次安装 flysync 的使用,使用
fspm install
后面修改了 flysync.ini 配置文件,或者需要更新 flysync 版本时,使用 update
fspm update
注意: 如果出现 update 完成后,启动 replicator 时,出现缺少文件报错,需要手动从安装包
flysync-replicator/support/ 里拷贝所需要的文件到安装 kfs 的指定目录下
10. install-directory 和 home-directory 的关系
install-directory 和 home-directory 都可以控制 flysync 的安装位置, home-directory 的优先级高于
install-directory
74 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
配置 home-directory 后,会覆盖 install-directory 值
11. Oracle 清理归档
Oracle 清理归档的方法

rman target /
crosscheck archivelog all;
delete expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
使用 rman 连接数据库
列出归档日志信息
将列出的归档日志删除
删除 7 天前的归档

12. 管控平台信息自动收集和手动收集的关系
默认情况下,管控平台会每隔 5 秒钟,进行一次全集群的状态信息收集。另外, flysync 还在以下位置
预留了手动收集的触发入口
• [系统管理] -> [服务管理] -> [收集按钮]
• [实时监控] -> [拓扑图] -> [刷新]
13. 查看版本号的几个地方
• 主界面,页脚右下方
• fsrepctl version:
fspm --version
14. setupCDC.sh 脚本执行的位置限制
setupCDC.sh 脚本,目前只能在 setupCDC.sh 脚本所在的位置执行,比如
./setupCDC.sh
不能在其他目录采用全路径的方式执行
15. 源端和目标端的 seqno 对不上
有时,在同步过程中,目标端会报错
原因是,目标端需要的 seqno 超出了源端的最大限度,这种问题一般出现的情况为:
10.2. 常见问题 75
Kingbase FlySync 管理手册, Release V1R6
• 正常同步后,源端进行了重新部署,导致 seqno 归零
• 源端的元信息表被删除, flysync 重建元信息表后,默认的初始值归零
一般情况下若因为源端重新部署或重新建立元信息表导致,可以在目标端进行 reset 操作,使得目标
端 seqno 重新初始化即可。
16. 监控界面几个数字的含义

名称含义
历 史 同 步 数
所有 slave 节点的数据同步量(事务)之和
今 日 同 步 数
当天凌晨开始,截至查看前统计的同步数量(实时历史数量 - 当天零点时历史数
量)
昨 日 同 步 数
字面意思
环比昨日同步数量相对前日同步数量的增长量
系 统 启 动 时
同步系统中,运行时间最长的 service 启动时间
同步延迟系统中最大的 applyLatency 应用延迟
错误告警发生错误的列表
同步表排行同步的表数据量排行
同步趋势过去 15 天同步数据柱状图

17. 如何跳过错误数据
flysync 中,当目标端出现错误后,经过排查,出现错误的数据是用户不想要的数据(比如主键冲突,
已经存在等),可以跳过当前数据
fsrepctl -service 服务名 online -skip-seqno 序号
18. 初始配置好后, heartbeat 表报违反唯一约束
原因:
源端和目标端在安装好后,都会生成 HEARTBEAT 表初始信息,有时源端 INSERT 到 HEARTBEAT 表的数据会被解析出来(其他元信息表也存在此问题)
而目标端已经存在此数据,会报违反主键约束
处理方式:
参见上一条,在目标端跳过当前记录即可
19. 关于 static 文件
flysync 中,同步服务的行为由自动生成的 static 文件控制(在 fspm install 命令执行过程中,根据
flysync.ini 配置文件内容生成)
76 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
每个服务( service)会生成一个对应的 static 文件
20. 在结构或数据初始搬迁中, casetransform 与 rename 同时配置时,为什么 rename 过滤器没有生效
在 static 配置文件中,过滤器配置的顺序影响执行顺序,即先配先执行。若先配置的 casetransform,
则 rename 中应该配置转换后的名称。
21. 在卸载源端数据库后重新安装,并导入之前数据后再进行同步源端不生成 kufl
原因:
旧的 kufl 中存有断点信息,当换数据库后,旧的断点信息在新的数据库中是没有意
义的,所以就会一直等待该断点,导致数据解析不出增量数据
处理方式:
fspm reset -all # 清除断点信息,重新解析
22. 无法更新
在配置.ini 文件时,在节点的机器名中不可带有”-“和”_”字符不然会导致无法更新
23. 端口问题
在配置完 ini 文件之后,请检查设置 kufl 端口和 jmx 检测是否被防火墙拦截,如被拦截需要
设置防火墙开放相应端口
24. 服务卸载问题
在卸载服务之后,需要手动在控制台的’节点管理’中删除卸载的节点,不然再次安装可能会
出现信息错乱等问题。
25. 找不到命令
在完成安装之后,需要使用 source .bash_profile(即 profile-script 所配置文件) 来读取环
境变量
26. 设置开机自启
在设置开机自启后只能以服务形式启动和关闭 KFS,具体方式为:
• 基于 init 的系统(比如 centos 5) :
service replicator start
service replicator status
service replicator stop
• 基于 upStart 的系统(比如 ubuntu、 centos 6) :
initctl start replicator
initctl status replicator
initctl stop replicator
10.2. 常见问题 77
Kingbase FlySync 管理手册, Release V1R6
• 基于 systemd 的系统 (比如 centos 7):
systemctl start replicator.service
systemctl status replicator.service
systemctl stop replicator.service
27. replicator 自动停止,启动后不久又会停止
查看日志报错信息中有如下信息:
2020/01/18 18:15:51.376 | JVM appears hung: Timed out waiting for signal from␣
,→JVM.
Restarting JVM.
2020/01/18 18:15:51.740 | JVM received a signal SIGKILL (9).
2020/01/18 18:15:51.741 | JVM process is gone.
2020/01/18 18:15:51.741 | JVM exited after being requested to terminate.
2020/01/18 18:16:12.596 | JVM process is gone.
该问题是由于 flysync 自带的高可用特性会定时检测 jvm 是否还在活动,若一端时间内没有
回馈,会认为进程不在,进行重启。
如需修改超时配置,涉及两个调整参数:
wrapper.ping.timeout = 30 (默认,超时时间 30 秒)
wrapper.ping.interval = 5 (默认,间隔 5 秒)
该问题一般出现在:
1. CPU 使用率长时间达到 100%
2. 等待系统 I/O
3. 持续时间 30s
28. 初始搬迁出现内存相关异常或断开的连接
查看搬迁结果报错有如下信息:
There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 55574528 bytes for committing
reserved memory.
或出现 OOM 异常或断开连接的异常
该问题由于机器内存不足导致
解决方式
• 调整物理内存,扩大 swap 内存空间
• 手动指定 jvm 堆内存大小,调小堆内存最大堆内存: -Xmx1024m(当前指定 1G)
78 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
• 调整搬迁表的个数或写线程数
29. 源端 MySQL 搬迁大数据量长时间无响应
查看数据库日志如下
2020-06-03T08:15:56.067606Z 8 [ERROR] /usr/sbin/mysqld: The table '/tmp/#sql_
,→xxx'
is full
问题原因:表数据容量达到系统上限
解决方案:
修改 my.cnf 修改配置信息:
tmp_table_size = 256M //临时表大小
max_heap_table_size = 256M //内存表大小
以上配置信息需结合实际环境中表的 ibd 文件最大值进行配置修改,系统默认 16M, 修改后
重启 mysql 生效
30. 搬迁结果出现 java.rmi.UnmarshalException 异常信息
replicator 服务日志异常信息如下:
2020/06/22 14:54:25.756 | OpenJDK 64-Bit Server VM warning: INFO: os::commit_
,→memory(
0x00007f9a6faff000, 12288, 0) failed; error='Cannot
allocate memory' (errno=12)
2020/06/22 14:54:25.756 | #
2020/06/22 14:54:25.756 | # There is insufficient memory for the Java Runtime
Environment to continue.
2020/06/22 14:54:25.756 | # Native memory allocation (mmap) failed to map␣
,→12288 bytes
for committing reserved memory.
2020/06/22 14:54:25.756 | # An error report file with more information is␣
,→saved as:
2020/06/22 14:54:25.756 | # /home/hes/flysync_test/releases/KingbaseFlySync
-V001R002B20200604-replicator_pid2941/cluster-home/
bin/hs_err_pid10739.log
2020/06/22 14:54:25.766 | JVM exited while starting the application.
2020/06/22 14:54:25.970 | There were 5 failed launches in a row, each lasting␣
,→less
than 300 seconds. Giving up.

2020/06/22 14:54:25.970 |
,→the
There may be a configuration problem: please check␣

logs.
(continues on next page)
10.2. 常见问题 79
Kingbase FlySync 管理手册, Release V1R6
(continued from previous page)
2020/06/22 14:54:26.071 | <-- Wrapper Stopped
可手动进行复现,当正在搬迁时,手动 replicator stop 后搬迁结果会出现此异常
抛出异常原因: jvm 申请内存,内存不足导致
分析
查看 overcommit_memory 参数:
cat /proc/sys/vm/overcommit_memory
三个值
• 0 默认设置,估算内存量可用量,不足则拒绝请求
• 1 内存执行无内存过量处理
• 2 系统会分配给每个程序内存需求的最大值,就算没有实际用到,无法再分配
给其他程序
虽然 free -h 看到的可用内存充足,但被其他程序已经占用,不足以让 jvm 使用导致
解决方案
修改 overcommit_memory 值为 0 或 1。 :
vim /etc/sysctl.conf 修改 vm.overcommit_memory = 0
sysctl -p 使配置文件生效
31. 同步带有中文的表信息时, 同步程序报错
执行 locale 命令,检查操作系统的语言环境,检查 LC_ALL,LC_CTYPE,LANG 是否一致,确
认此环境下是否可以执行带有中文的 SQL 语句。
32. 在 Linux 执行命令行时,若命令中包含 Linux 特殊字符,例如“$”、“&”、“‘”等时,执行命令出错
需使用转义字符进行转义,例如 A$B 命令中需写为 A\$B 。
33. 特殊字符说明:在配置文件中( ini 或者 json 等),如果表名或者模式名带有正则特殊字符时,以下符
号需要通过双斜杠转义,”[$] , [+] , [^] , [|] “
且表名模式名列名带以下符号尚不支持”[\] [.] [,] [*] [?] “
匹配 C##TEST$+^|.* 如下所示:
34. 实时同步源端为 SQL Server smalldatetime, 同步后精度缺失
80 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
SSQL Server smalldatetime 会将插入的时间秒数省略, 因此会使得秒数后的精度丢失,请使
用 datetime 或其他时间类型。
35. oracle12c、 19c 在 redo 模式下解析 xml 类型报错
问题原因:存储为 CLOB 的 XMLType 数据在 Oracle 数据库从 12c 版本开始被舍弃
解决方案:需要在建表时,设置 XML 类型为 CLOB,如下:
create table T1
(
X VARCHAR2(32),
XML XMLTYPE
)
XMLTYPE XML STORE AS BASICFILE CLOB
36. 源端 Oracle Redo 时,长期运行操作系统的内容占用会比较高,处理办法
问题原因: JVM 有自己的一套内存释放原则,只有在需要内存时才考虑释放旧的内容, KFS
运行时如果出现大事务就会占用比较多的内容,也不会及时释放
解决方法:使用操作系统命令:
jmap -histo:live PID
触发 JVM 的 full gc,回收内存,其中 PID 指的是 KFS 的运行进程
37. 某些国产平台,调整网络延迟后, KFS 运行过程中出现 CPU 卡死
问题原因: CPU 多长时间内没有得到处理时间,看门狗会报错(不排除国产 CPU 本身的
问题)
解决办法:调整看门口的检测时间,根据实际需要调整大一些,比如调整为 30s:
sysctl -w kernel.watchdog_thresh=30
38. 比对大表时, MySQL 作为元信息库 Packet for query is too large
问题原因: 批量插入的数据量过大
解决办法: 修改 my.ini max_allowed_packet 参数大小,并重启 MySQL 服务,默认是
4194304,也就是 4M
39. 存在超大事务时, KUFL 传输频繁失败重启,导致无法同步
问题原因:事务过大, KUFL 传输超时
解决办法: 修改 heartbeatInterval 参数,使其足够大,能够保证传输不超时。 TCP 读取超时的时间为
heartbeatInterval * 10。
40. oracle 12c、 19c 在 redo 模式下解析 xml 类型报错,初始结构搬迁后进行同步报错
10.2. 常见问题 81
Kingbase FlySync 管理手册, Release V1R6
问题原因:存储为 CLOB 的 XMLType 数据在 Oracle 数据库从 12c 版本开始被舍弃
解决方案:需要在建表时,设置 XML 类型为 CLOB,如下
create table T1
(
X VARCHAR2(32),
XML XMLTYPE
)
XMLTYPE XML STORE AS BASICFILE CLOB
41. 使用 replicate 过滤器时,使用文件方式配置待过滤表时,关于特殊字符的支持情况
特殊符号 table.do table.ignore
! 1 1
~ 1 1
@ 1 1
# 1 1
$ 添加\ 添加\
% 1 1
^ 添加\ 添加\
& 1 1
* 不支持 不支持
_ 1 1
+ 添加\ 添加\
- 1 1
= 1 1
} 1 1
] 1 1
| 添加\ 添加\
; 1 1
: 1 1
, 不支持 不支持
< 1 1
. 不支持 不支持
> 1 1
? 不支持 不支持
注: 1 表示不做任何操作均能支持的特殊符号
42. 使用星环作为目标端进行同步或者搬迁时,日志中会打印报错信息,但不影响同步和搬迁的正常使用
和运行
问题原因: KFS 自带 JAVA 依赖包固有问题
解决方案:由于该报错信息不影响同步和搬迁的正常使用,一般情况下可以不用处理,若有特殊要
82 第 10 章 FAQ
Kingbase FlySync 管理手册, Release V1R6
求,可在没有 oracle 的场景下将同步服务目录/flysync/flysync-replicator/lib 中的 xmlparserv2.jar 去掉
10.2. 常见问题 83

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值