关键字:
KingbaseFlysync、KFS、replicator、同步程序、服务端、flysync.ini、安装部署、人大金仓、PostgreSQL单机、PostgreSQL单机安装部署KingbaseFlysync、PostgreSQL单机安装部署KFS、PostgreSQL单机安装同步程序
一、概述
Kingbase FlySync支持基于PostgreSQL作为源端的数据同步。
本文主要介绍PostgreSQL单机KFS源端配置。
二、安装前准备
前置条件:已经完成PostgreSQL数据库的安装部署
2.1 环境信息
参数名 | 参数值 |
源端数据库IP地址 | 10.10.5.49 |
安装KFS同步程序IP地址 | 10.10.5.49 |
PostgreSQL数据名 | test |
PostgreSQL数据库监听端口号 | 54321 |
可用内存 | >4GB |
可用储存空间 | >1GB+7*每日数据增量 |
2.2 端口开放
1、关闭防火墙
临时关闭防火墙服务(服务器重启后失效)
service firewalld stop
永久关闭防火墙服务
chkconfig firewalld off

2、若有特殊情况如业务要求需要开启防火墙,则需要保证KFS同步程序所需端口可用,若不可用,可以在后续配置中修改默认端口。
telnet xx.xx.xx.xx 端口号
Kingbase FlySync同步服务运行所需的默认端口如下:
端口 | 描述 |
11000/11001 | KFS远程管理/监控RMI端口 |
3112 | KUFL传输接口 |
2.3 创建KFS同步程序安装用户
1、假设KFS同步程序安装用户为fly,创建如下(本文设置fly用户密码为123):
adduser fly
passwd fly
2、将fly用户加入到PostgreSQL登录用户所在的用户组
查询PostgreSQL PG登录用户所在的用户组
groups pg12

用root权限修改fly
usermod -G pg12 fly

2.4 ruby环境配置
上传ruby包到KFS同步程序安装服务器下并解压:
unzip rbenv_2.2.2_linux_x64.zip

然后在KFS同步程序安装用户的环境变量中进行配置
vi ~/.bash_profile
export RUBY_HOME=ruby绝对路径
export PATH=$RUBY_HOME/bin:$PATH
source ~/.bash_profile
2.5 安装包准备
准备需要安装的Kingbase FlySync同步程序安装包和license文件。
2.6 PostgreSQL数据库准备
2.6.1 . PostgreSQL 数据库是否支持decodebuf插件
PostgreSQL 数据库版本支持
• 9.6
• 10
• 11.5
• 12
在复制中我们使用了 decoderbufs 插件进行中间数据的存储,因此首先检查 PostgreSQL 数据库是否已经支持 decoderbufs 插件。在 Kingbase FlySync 的安装包中 extensions 目录中提供了相关依赖文件(pg_plugns_(version).zip),解压 zip 包可得到。
1. 数据库 bin 目录下执行 ./pg_config --pkglibdir 查看动态加载库目录。
2. 数据库 bin 目录下执行 ./pg_config --sharedir 查看 share 目录。
3. 检查 PostgreSQL 安装目录下的动态加载库目录,是否有 decoderbuf.so 和 kfs_current_query. so 包,若没有,将 Kingbase FlySync 安装包中附带的 decoderbuf.so 和 kfs_current_query.so 复制到 PostgreSQL 安装目录的动态加载库目录下。
4. 检查 PostgreSQL 安装目录下的 share/extension 目录下,是否有 decoderbufs.control 文件,若 没有,将 Kingbase FlySync 安装包中附带的 decoderbuf.control 复制到 PostgreSQL 安装目录下的 share/extension 目录下。
2.6.2 PostgreSQL数据库的相关配置
1. 编辑安装目录下 data/pg_hba.conf 文件, 增加如下配置,使用户有复制权限:
host replication all 127.0.0.1/32 md5
host replication all 0.0.0.0/0 md5
2.编辑安装目录下 data/postgresql.conf 文件, 修改如下配置:
参数配置 | 含义 |
max_wal_senders = 2* 数据库个数 | 日志发送进程数 (最小为 4) |
wal_keep_segments = 4 | 保留日志数量,根据磁盘空间设置,越大越好 |
wal_level = logical | 日志级别 |
max_replication_slots = 2* 数据库个 数 | 复制槽数量 (最小为 4) |
三、安装执行
3.1 上传并解压KFS同步程序
tar –zxvf KingbaseFlysync-Vxxxxxxxxxxxxxx-replicator.tar.gz

3.2 配置flysync.ini
在$HOME目录下新建flysync.ini文件,示例如下:

参数说明:
[defaults] | |
install-directory=/home/fly/kfs | 同步程序安装目录 |
profile-script=~/.bash_profile | |
rmi-port=11000 | rmi端口号,默认为11000 |
[postgresql] | 服务名 |
role=master | 同步角色,源端为master,目标端为slave |
master=10.10.5.49 | 源端服务的安装ip |
members=10.10.5.49 | 本服务的安装ip |
kufl-port=3112 | KUFL端口号 |
replication-host=10.10.5.49 | 数据库ip |
replication-port=54321 | 数据库端口 |
replication-user=SYSTEM | 数据库用户名 |
replication-password=123456 | 数据库用户密码 |
datasource-type=postgresql | 数据库类型 |
datasource-version=9.6 | 数据库版本 |
postgresql-extractor-method=xlogical | 源端数据库解析方式 |
postgresql-dbname=postgres | 数据库名称 |
svc-extractor-filters=replicate | replicator、replicator.filter.replicate.do、replicator.filter.replicate.ignore搭配使用同步指定模式下的dml |
property=replicator.filter.replicate.do=public.* | 表示要同步dml的模式为public。 |
property=replicator.filter.replicate.ignore=public.t1 | 排除public模式下t1的dml同步. |
3.3 执行安装
执行解压目录/tools/下的fspm install

更新环境配置
source ~/.bash_profile
3.4 上传license文件
上传license文件至$HOME/kfs/目录

3.5 启动同步程序
replicator start

3.6 查看同步服务情况
fsrepctl services或fsrepctl status(state:online表示服务正常)

四、测试验证
在源端数据库执行以下SQL
CREATE TABLE public.TEST_1(id int, name varchar(50));
INSERT INTO public.TEST_1 values(1, 'dawf');

执行kufl -service postgresql list查看解析情况

KFS同步程序常见操作命令:
KFS同步程序的启停
replicator start
replicator stop
replicator restart
查看同步服务状态
fsrepctl services
fsrepctl -service 同步服务名 status
同步服务的启停
fsrepctl -service 同步服务名 online
fsrepctl -service 同步服务名 offline
重置KUFL
fsrepctl -service 同步服务名 reset –all –y




