当前位置: 首页 > article >正文

命令行方式安装KFS同步KES到KADB

  • 部署背景及环境

使用命令行方式同步KES的数据至KADB

  1. 操作系统

[mppadmin@mdw ~]$ uname -a

Linux mdw 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux

  1. KFS版本

KingbaseFlySync-V002R002C004PS002-replicator.tar.gz

  1. ruby版本

[flync@mdw bin]$ /home/flync/rbenv/ruby/bin.real/ruby --version

ruby 2.2.2p95 (2015-04-13 revision 50295) [aarch64-linux]

  1. KADB版本

PostgreSQL 9.4.24 (Greenplum Database 6.0.0 build dev.V003R002C001B0181.d354cc9) on aarch64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.

5 20150623 (Red Hat 4.8.5-36), 64-bit compiled on Dec 30 2021 09:59:37

  1. KES版本

KingbaseES V008R006C008B0020 on aarch64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (NeoKylin 4.8.5-36), 64-bit

  1. Java版本

openjdk version "1.8.0_272"

  • 部署架构

使用命令行方式安装KFS不需要安装管控平台,只需要下载精简包(replicator),对所有平台通用。精简包名称:KingbaseFlySync-V002R002C004PS002-replicator.tar.gz。部署架构如下如:

因为测试环境源数据库和目标数据库在一台机器上,只需要安装一个replicator。如果不在一台机器上,则需要在源端和目标端分别安装replicator。源端从kes日志抽取日志,目标端replicator和源端replicator通讯,接收日志,写入KADB

注意:ruby跟随replicator安装

  • 安装步骤
  1. 创建KFS用户

groupadd flysync

useradd –g flysync flysync

  1. 解压replicator安装包

tar –xvf KingbaseFlySync-V002R002C004PS002-replicator.tar.gz

  1. 创建flysync.ini文件,描述部署架构及源\目标数据信息

Ini文件的模板在:/home/flync/KingbaseFlySync-V002R002C004PS002-replicator/flysync-replicator/samples/ini

因为测试环境的源和目标数据库在一台机器上,可以在flysync.ini分别写源和目标的配置信息,如果在两台机器,则分别在源端和目标端的kfs用户家目录配置两个flysync.ini文件,分别写源和目标端的配置信息,以下为在一个flysync.ini文件使用不同的标签分别配置源和目标的信息

本文以KESV8作为源端,拷贝flysync_kingbase8_source.ini模板文件到flysync的家目录,命名为flysync.ini,并修改如下:

[defaults]

install-directory=/home/flync/flysync      //KFS将要安装的目录

profile-script=~/.bashrc

rmi-port=11000

[oracle11kadb]     //KADB作为目标配置

role=slave      //目标端必为:slave

master=mdw      //源端主机名称

master-kufl-port=3113      //源端kufl端口,注意和kingbase8标签配置一致

members=mdw //目标端主机名

kufl-port=3112     //目标端kufl端口

replication-host=10.225.56.112     //当前主机名称,用于连接目标端数据库

replication-port=5432      //数据库端口

replication-user=mppadmin      //数据库用户

replication-password=Kingbase@1234     //数据库密码

datasource-type=kadb       //目标端数据库类型

kadb-dbname=target     //目标端数据库名称

svc-parallelization-type=none

svc-remote-filters=casetransform,rename

property=replicator.filter.casetransform.to_upper_case=false

property=replicator.applier.dbms.optimizeRowEvents=true

property=replicator.applier.dbms.maxRowBatchSize=5000

[kingbase8]

role=master     //源端必须为:master

master=mdw      //源端主机名称

members=mdw     //目标端主机名称

kufl-port=3113     //源端kufl端口

replication-host=10.225.56.112 //源端主机地址,用于数据连接

replication-port=54322

replication-user=SYSTEM //源端数据库用户名

replication-password=123456 //密码

datasource-type=kingbase       //源端数据库类型

datasource-version=8       //kes版本

kingbase-extractor-method=xlogical

kingbase-dbname=source

svc-extractor-filters=replicate,ignoreddl

property=replicator.filter.replicate.do=public.*      //源端需要同步的表

property=replicator.filter.replicate.ignore=public.t1     //源端忽略的表

property=replicator.extractor.dbms.minRowsPerBlock=4000

property=replicator.extractor.dbms.keepMixDML=true

property=replicator.filter.ignoreddl.ignore=CREATE;ALTER;DROP;TURNCATE

  1. 安装ruby数据库

上传ruby安装包,解压,然后在.bash_profile中配置下面环境变量(路径按照实际的改)

export RUBY_HOME=/home/flysync/rbenv/ruby  --假设ruby解压到/home/flysync/rbenv目录

PATH=$RUBY_HOME/bin:$PATH

export PATH

  1. KES作为源端的数据库配置

KingbaseES V8 数据库配置(xlogical 相关配置)

在复制中我们使用了decoderbufs 插件进行中间数据的存储, 因此首先检查V8 数据库是否已经支持decoderbufs 插件。在Kingbase FlySync 的安装包中extensions 目录中提供了相关依赖文件(kfs_decoderbufs_lib_mips64_v8r2.zip),解压zip 包可得到。

1. 检查V8 安装目录下的/lib 目录,是否有decoderbuf.so 和kfs_current_query.so 包,若没有,将KingbaseFlySync 安装包中附带的decoderbuf.so 和kfs_current_query.so 复制到Kingbase 安装目录的/lib 目录下。

2. 检查V8 安装目录下的/share/extension 目录,是否有decoderbufs.control 文件,若没有,将Kingbase FlySync安装包中附带的decoderbuf.control 复制到Kingbase 安装目录的/share/extension 目录下。

注意: KingbaseES V8R3C002B0261 及以上版本和V8R6 不需要替换decoderbuf 文件。

其次开始进行数据库的相关配置:

  1. 编辑安装目录下data/sys_hba.conf 文件, 增加如下配置,使用户有复制权限:

host replication all 127.0.0.1/32 md5

host replication all 0.0.0.0/0 md5

  1. 编辑安装目录下data/kingbase.conf 文件, 修改如下配置:

max_wal_senders = 2*   //数据库个数日志发送进程数(最小为4)

wal_keep_segments = 4 //保留日志数量,根据磁盘空间设置,越大越好

wal_level = logical    //日志级别

max_replication_slots = 2* //数据库个数复制槽数量(最小为4)

ora_input_emptystr_isnull=off //关闭空字符串显示为null(pg 兼容模式需配置)

全部配置完成后,重启数据库使配置生效。

  1. 拷贝KESV8的jdbc驱动到lib目录

在部署之前需确认KingbaseES V8 的具体版本,如果为V8R3(不含)之上的版本,需要将Kingbase FlySync 的安装包中extensions/jdbc/kingbase8-8.6.0.jar 拷贝到同步包的flysync-replicator/lib 目录下,如果为V8R3(含) 以下版本,需要Kingbase FlySync 的安装包中extensions/jdbc/kingbase8-8.2.0.jar 拷贝到同步包的flysync-replicator/lib目录下。

  1. 根据flysync.ini文件的配置,安装replicator

进入replicator解压目录下面的tools目录,执行./fspm install

[flync@mdw ~]$ cd KingbaseFlySync-V002R002C004PS002-replicator/

[flync@mdw KingbaseFlySync-V002R002C004PS002-replicator]$ cd tools

[flync@mdw tools]$ ls -lrt

总用量 32

drwxr-xr-x 3 flync flync  4096 11月 19 13:40 ruby-fspm

-rwxr-xr-x 1 flync flync  1279  2月 12 17:47 fspm

-rwxr-xr-x 1 flync flync 16959  2月 12 17:47 flysync_prep_upgrade

-rwxr-xr-x 1 flync flync  1554  2月 12 17:47 clean_release_directory

[flync@mdw tools]$ ./fspm install

  1. 安装完成后,根据安装程序提示启动replicator

replicator start

或者

/home/flsync/flysync/cluster_home/bin/startall

  1. 查看服务状态

命令:fsrepctl services

[flync@mdw tools]$ fsrepctl services

Processing services command...

NAME              VALUE

----              -----

appliedLastSeqno: 4    //日志抽取序列号

appliedLatency  : 0.009

role            : master

serviceName     : kingbase8

serviceType     : local

started         : true

state           : ONLINE   //online表示正常

NAME              VALUE

----              -----

appliedLastSeqno: 4    //日志应用序列号

appliedLatency  : 0.136

role            : slave

serviceName     : oracle11kadb

serviceType     : local

started         : true

state           : ONLINE   //online表示正常

Finished services command...

  • 补充
  1. 常用命令

查看服务状态

[flync@mdw tools]$ fsrepctl -service kingbase8 status

Processing status command...

NAME                     VALUE

----                     -----

appliedLastEventId     : kb:33006448:33008696

appliedLastSeqno       : 4

appliedLatency         : 0.009

autoRecoveryEnabled    : true

autoRecoveryTotal      : 0

channels               : 1

clusterName            : kingbase8

currentEventId         : kb:33006448:33008928

currentTimeMillis      : 1740649124074

dataServerHost         : 10.225.56.112

extensions             :

host                   : 10.225.56.112

latestEpochNumber      : 1

masterConnectUri       : kufl://localhost:/

masterListenUri        : kufl://mdw:3113/

maximumStoredSeqNo     : 4

minimumStoredSeqNo     : 0

offlineRequests        : NONE

pendingError           : NONE

pendingErrorCode       : NONE

pendingErrorEventId    : NONE

pendingErrorSeqno      : -1

pendingExceptionMessage: NONE

pipelineSource         : UNKNOWN

relativeLatency        : 172358.892

resourcePrecedence     : 99

rmiPort                : 11000

role                   : master

seqnoType              : java.lang.Long

serviceName            : kingbase8

serviceType            : local

simpleServiceName      : kingbase8

siteName               : default

sourceId               : 10.225.56.112

state                  : ONLINE

timeInStateSeconds     : 173037.96

timezone               : GMT+08:00

transitioningTo        :

uptimeSeconds          : 173039.419

useSSLConnection       : false

version                : Kingbase FlySync V002R002C004PS002

查看服务的日志解析情况

[flync@mdw tools]$ kufl -service kingbase8 list

SEQ# = 0 / FRAG# = 0 (last frag)

- TIME = 2025-02-25 17:22:34.665

- EPOCH# = 0

- EVENTID = kb:32948840:32949728

- SOURCEID = 10.225.56.112

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase8;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

 - SQL(0) =

  - ACTION = INSERT

  - SCHEMA = public

  - TABLE = test

  - ROW# = 0

   - COL(1: a) = 5

   - COL(2: b) = ddd

SEQ# = 1 / FRAG# = 0 (last frag)

- TIME = 2025-02-25 17:34:46.106

- EPOCH# = 1

- EVENTID = kb:32948840:33005616

- SOURCEID = 10.225.56.112

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[flysync_kingbase8.heartbeat];is_metadata=true;service=kingbase8;shard=#UNKNOWN;source_service_name=flysync_kingbase8;heartbeat=MASTER_ONLINE]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

 - SQL(0) =

  - ACTION = UPDATE

  - SCHEMA = flysync_kingbase8

  - TABLE = heartbeat

  - ROW# = 0

   - COL(1: id) = 1

   - COL(2: seqno) = NULL

   - COL(3: eventid) = NULL

   - COL(4: source_tstamp) = 2025-02-25 17:34:46.104

   - COL(5: target_tstamp) = NULL

   - COL(6: lag_millis) = NULL

   - COL(7: salt) = 0

   - COL(8: name) = MASTER_ONLINE

   - KEY(1: id) = 1

SEQ# = 2 / FRAG# = 0 (last frag)

- TIME = 2025-02-25 17:43:46.936

- EPOCH# = 1

- EVENTID = kb:32948928:33007256

- SOURCEID = 10.225.56.112

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase8;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

 - SQL(0) =

  - ACTION = INSERT

  - SCHEMA = public

  - TABLE = test

  - ROW# = 0

   - COL(1: a) = 6

   - COL(2: b) = eee

SEQ# = 3 / FRAG# = 0 (last frag)

- TIME = 2025-02-25 17:44:47.481

- EPOCH# = 1

- EVENTID = kb:32948928:33008288

- SOURCEID = 10.225.56.112

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase8;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

 - SQL(0) =

  - ACTION = DELETE

  - SCHEMA = public

  - TABLE = test

  - ROW# = 0

   - KEY(1: a) = 1

SEQ# = 4 / FRAG# = 0 (last frag)

- TIME = 2025-02-25 17:46:05.182

- EPOCH# = 1

- EVENTID = kb:33006448:33008696

- SOURCEID = 10.225.56.112

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase8;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

 - SQL(0) =

  - ACTION = UPDATE

  - SCHEMA = public

  - TABLE = test

  - ROW# = 0

   - COL(1: a) = 6

   - COL(2: b) = fff

   - KEY(1: a) = 6

  1. 日志位置:

/home/flync/flysync/flysync/flysync-replicator/log

[flync@mdw log]$ ls -lrt

总用量 348

-rw-r--r-- 1 flync flync      0  2月 25 17:12 replicate_change.log

-rw-r--r-- 1 flync flync      0  2月 25 17:12 failure_record_file.log

-rw-r--r-- 1 flync flync      0  2月 25 17:12 discard.index

-rw-r--r-- 1 flync flync  37455  2月 25 17:34 fsrepsvc-main.log

-rw-r--r-- 1 flync flync   1814  2月 25 17:34 replicator-user.log

-rw-r--r-- 1 flync flync  60584  2月 25 17:34 fsrepsvc-oracle11kadb.log

-rw-r--r-- 1 flync flync  67146  2月 25 17:34 fsrepsvc-kingbase8.log

-rw-r--r-- 1 flync flync 167551  2月 25 17:34 fsrepsvc.log

[flync@mdw log]$ pwd

/home/flync/flysync/flysync/flysync-replicator/log

  1. 更新flyshnc.ini文件

每次对flysync.ini进行了修改需要执行下面的动作

replicator stop

fspm update


http://www.kler.cn/a/569018.html

相关文章:

  • python基于后门的神经网络模型水印通用方法
  • 【软件测试】_使用selenium进行自动化测试示例
  • 在QML中注册C++类型
  • 通过logback日志简单实现链路追踪
  • 总结前端常用数据结构 之 队列篇【JavaScript 】
  • yolov8,yolo11,yolo12 服务器训练到部署全流程 笔记
  • hive 面试题
  • Linux 检测内存泄漏方法总结
  • 【漫话机器学习系列】113.逻辑回归(Logistic Regression) VS 线性回归(Linear Regression)
  • JPA属性转换器的使用与实例解析
  • 3-5 WPS JS宏 工作表的移动与复制学习笔记
  • Vue3生命周期以及与Vue2的区别
  • 面试基础--JVM垃圾回收深度剖析(JDK8)
  • 北斗模块在无人机领域的革新应用与未来展望
  • 第一节:基于Winform框架的串口助手小项目---基础控件使用《C#编程》
  • MIT何恺明再次突破传统:分形递归架构引爆生成模型新纪元!
  • VirtualVM:Java 监控工具使用指南
  • LeetCode 72 - 编辑距离 (Edit Distance)
  • CSS 系列之:基础知识
  • ASP.NET 解决 NLog、log4net 和 Serilog 在 IIS 部署后不写日志的问题