• 金仓KFS数据级联场景部署


    KFS数据级联场景部署

    数据级联场景是源端数据发送给中间端数据库,再从中间端数据库发送到目标端数据库。KFS通过多个一对一的数据链路实现数据级联同步。

    一、环境信息

    1、软件版本

    KFS版本:Kingbase FlySync V001R006C003B20220107

    源端:oracle 11.2.0.4.0

    中间端:KingbaseES V008R006C003B0071

    目标端:Mysql 8.0.26

    2、部署拓扑

    KFS与数据库集中部署,部署在同一台服务器上。

    3、IP地址

    源端(oracle):192.168.100.111

    中间端(kes):192.168.100.114

    目标端(mysql):192.168.100.112

    二、源端(oracle) KFS部署

    源端oracle采用redo方式解析。

    (一)、环境配置

    1、创建安装用户

    groupadd flysync

    useradd flysync -g flysync -G mysql

    passwd flysync

    2、上传安装文件包和license文件到服务器/home/flysync目录下,并解压

    tar -xzvf KingbaseFlySync-V001R006C003B20220107-replicator.tar.gz

    3、配置将hosts文件,将源端和目标端服务器都加上去

    vi /etc/hosts

    192.168.100.111 oracle

    192.168.100.114 kes

    192.168.100.112 mysql

    192.168.100.113 sqlserver

    4、配置/etc/security/limits.conf文件【可选】

    vi /etc/security/limits.conf

    flysync - nofile 65535

    flysync - nproc 8096

    mssql - nofile 65535

    mssql - nproc 8096

    5、开启时间同步服务【可选】

    yum install ntp

    systemctl start ntpd

    systemctl enable ntpd

    6、在/etc/sysctl.conf配置swappiness参数【可选】

    vi /etc/sysctl.conf

    vm.swappiness = 10

    sysctl -p

    7、检查依赖软件jdk和ruby【必须】

    --jdk

    java -version

    版本小于1.8的,可以使用yum安装1.8版本

    yum install java-1.8.0-openjdk.x86_64

    也可以下载oracle的1.8版本的JDK包手动上传安装

    --ruby

    可以使用yum方式安装

    yum install ruby

    也可以使用KFS控制台服务器里自带的ruby包进行替换,位置在:/opt/KFS/console/media/rbenv,

    将压缩包解压到/usr/local,然后配置/etc/profile文件里$PATH环境变量,将ruby的bin目录添加进去

    vi /etc/profile

    export PATH=$PATH:/usr/local/ruby/bin

    配置完成后,使用source命令应用

    source /etc/profile

    (二)、数据库配置

    1、配置数据库时间格式:

    ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD' SCOPE=SPFILE;

    2、创建连接用户并授予相关权限:

    create user flysync identified by 123456;

    alter user flysync default tablespace users;

    alter user flysync quota unlimited on users;

    GRANT CONNECT, RESOURCE TO FLYSYNC;

    GRANT EXECUTE_CATALOG_ROLE TO FLYSYNC;

    GRANT CREATE SESSION TO FLYSYNC;

    GRANT SELECT ANY TRANSACTION TO FLYSYNC;

    GRANT SELECT ANY TABLE TO FLYSYNC;

    GRANT UNLIMITED TABLESPACE TO FLYSYNC;

    GRANT DBA TO FLYSYNC;

    3、开启 Oracle 数据库的归档日志(必须开启)了,具体步骤如下:

    (1).查看当前归档模式

    SQL>select  log_mode  from  v$database;

    (2).创建归档目录

    [oracle@zjtmp-db oracle]$ mkdir -p $ORACLE_BASE/archivelog

    [oracle@zjtmp-db oracle]$ sqlplus / as sysdba

    SQL> alter system set log_archive_dest_1="location=/data/oracle/archivelog" scope=both;

    (3).将数据库重启到mount状态

    SQL>shutdown immediate

    SQL>startup mount

    (4).将数据库更改为归档模式

    SQL>alter database archivelog;

    (5).打开数据库

    SQL>alter database open;

    (6).查看归档模式是否开启

    SQL>select  log_mode  from  v$database;

    4、开启补全日志:

    (1).检查补全日志的状态

    SQL> SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_all FROM v$database;

    SUPPLEME SUP SUP

    -------- --- ---

    NO NO NO

    (2).开启补全日志 (建议在 MOUNT 模式下执行)

    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    (3).再次检查补全日志的状态

    SQL> SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;

    SUPPLEME SUP SUP

    -------- --- ---

    YES      YES YES

    必须3项都为YES

    5、切换日志文件

    SQL> ALTER SYSTEM SWITCH LOGFILE;

    (三)、KFS安装

    1、配置flysync.ini文件

    在安装用户的家目录下配置flysync.ini文件

    vi  /home/flysync/flysync.ini

    输入以下内容:

    [defaults]

    user=flysync

    install-directory=/home/flysync/kfsrep

    profile-script=~/.bash_profile

    rmi-port=11000

    [oracle11g]

    role=master

    master=oracle

    members=oracle

    kufl-port=3112

    replication-host=192.168.100.111

    replication-port=1521

    #连接数据库的用户名必须为大写

    replication-user=FLYSYNC

    replication-password=123456

    datasource-type=oracle

    oracle-extractor-method=redo

    datasource-oracle-service=orcl

    svc-extractor-filters=dropstatementdata,ignoreddl

    property=replicator.extractor.dbms.tablePatterns=FLYSYNC.*,TEST.*

    property=replicator.extractor.dbms.keepMixDML=false

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

    2、安装

    切换到安装包目录下的tools子目录

    cd /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/tools

    ./fspm install

    3、将license文件复制到安装目录下

    cp license_8703_0.dat /home/flysync/kfsrep/license.dat

    4、启动KFS

    replicator start

    查看KFS状态

    replicator status

    查看服务状态

    fsrepctl status

    查看KUFL列表

    kufl list

    三、中间端(KES v8r6)KFS部署

    (一)、环境配置

    1、创建安装用户

    groupadd flysync

    useradd flysync -g flysync -G mysql

    passwd flysync

    2、上传安装文件包和license文件到服务器/home/flysync目录下,并解压

    tar -xzvf KingbaseFlySync-V001R006C003B20220107-replicator.tar.gz

    3、配置将hosts文件,将源端和目标端服务器都加上去

    vi /etc/hosts

    192.168.100.111 oracle

    192.168.100.114 kes

    192.168.100.112 mysql

    192.168.100.113 sqlserver

    4、配置/etc/security/limits.conf文件【可选】

    vi /etc/security/limits.conf

    flysync - nofile 65535

    flysync - nproc 8096

    mssql - nofile 65535

    mssql - nproc 8096

    5、开启时间同步服务【可选】

    yum install ntp

    systemctl start ntpd

    systemctl enable ntpd

    6、在/etc/sysctl.conf配置swappiness参数【可选】

    vi /etc/sysctl.conf

    vm.swappiness = 10

    sysctl -p

    7、检查依赖软件jdk和ruby【必须】

    --jdk

    java -version

    版本小于1.8的,可以使用yum安装1.8版本

    yum install java-1.8.0-openjdk.x86_64

    也可以下载oracle的1.8版本的JDK包手动上传安装

    --ruby

    可以使用yum方式安装

    yum install ruby

    也可以使用KFS控制台服务器里自带的ruby包进行替换,位置在:/opt/KFS/console/media/rbenv,

    将压缩包解压到/usr/local,然后配置/etc/profile文件里$PATH环境变量,将ruby的bin目录添加进去

    vi /etc/profile

    export PATH=$PATH:/usr/local/ruby/bin

    配置完成后,使用source命令应用

    source /etc/profile

    (二)、数据库配置

     创建连接数据库账号并授权:

    ksql>CREATE USER FLYSYNC SUPERUSER PASSWORD '123456';

    (三)、KFS安装

    1、检查数据库decoderbufs插件是否安装

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

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

    ls   /opt/Kingbase/ES/V8/Server/lib/decoderbufs.so

    ls   /opt/Kingbase/ES/V8/Server/lib/kfs_current_query.so

    ls   /opt/Kingbase/ES/V8/Server/share/extension/decoderbufs.control

    如果没有,解压KFS安装包中自带的压缩包,将这些文件复制到相应目录

    cd  /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/extensions/decoderbufs

    cp kfs_decoderbufs_lib_linux64_v8r3.zip  /home/kingbase

    cd /home/kingbase

    unzip kfs_decoderbufs_lib_linux64_v8r3.zip

    cp ./lib/decoderbufs.so /opt/Kingbase/ES/V8/Server/lib

    cp ./lib/kfs_current_query.so /opt/Kingbase/ES/V8/Server/lib

    cp ./share/extension/decoderbufs.control  /opt/Kingbase/ES/V8/Server/share/extension

    chown kingbase:kingbase /opt/Kingbase/ES/V8/Server/lib/decoderbufs.so

    chown kingbase:kingbase /opt/Kingbase/ES/V8/Server/lib/kfs_current_query.so

    chown kingbase:kingbase /opt/Kingbase/ES/V8/Server/share/extension/decoderbufs.control

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

    vi /opt/Kingbase/data/sys_hba.conf

    host replication all 127.0.0.1/32    md5

    host replication all 0.0.0.0/0       md5

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

    vi /opt/Kingbase/data/kingbase.conf

    max_wal_senders=4          #日志发送进程数,数据库个数*2,最小为4

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

    wal_level=logical          #日志级别,必须为logical       

    max_replication_slots=4    #复制槽数量,数据库个数*2,最小为4

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

    sys_ctl -D /opt/Kingbase/data restart

    4、配置flysync.ini

    中间端的flysync.ini文件配置两个服务,一个目标端服务,对应源端oracle11g;一个源端服务,对应目标端mysql8

    [defaults]

    install-directory=/home/flysync/kfsrep

    profile-script=~/.bash_profile

    rmi-port=11000

    #目标端服务

    [oracle11g_kingbase8]

    role=slave

    master=oracle

    master-kufl-port=3112

    members=kes8

    kufl-port=3113

    replication-host=192.168.100.114

    replication-port=54321

    replication-user=flysync

    replication-password=123456

    datasource-type=kingbase

    datasource-version=8

    kingbase-dbname=TEST

    svc-parallelization-type=none

    svc-remote-filters=casetransform,rename

    property=replicator.filter.casetransform.to_upper_case=false

    property = replicator.filter.rename.definitionsFile=/home/flysync/kfsrep/filters-config/oracle11g_kingbase8_rename.csv

    property=replicator.applier.dbms.optimizeRowEvents=true

    property=replicator.applier.dbms.maxRowBatchSize=5000

    #源端服务

    [kingbase8]

    role=master

    master=kes8

    members=kes8

    kufl-port=3112

    replication-host=192.168.100.114

    replication-port=54321

    replication-user=FLYSYNC

    replication-password=123456

    datasource-type=kingbase

    datasource-version=8

    kingbase-extractor-method=xlogical

    kingbase-dbname=TEST

    svc-extractor-filters=replicate

    property=replicator.filter.replicate.do=PUBLIC.*,flysync_kingbase8.*

    property=replicator.filter.replicate.ignore=PUBLIC.T1

    #大事务拆分参数,到达4000行开始拆分事务,默认为500

    property=replicator.extractor.dbms.minRowsPerBlock=4000

    #同步DDL语句所需,可以配置支持的DDL类型

    property=replicator.extractor.dbms.ddlListFile=/home/flysync/kfsrep/filters-config/ddl_support_list.csv

    #在开启同步DDL后生效,create table as类型语句,同时产生DDLDML,是否保留DMLtrue为保留,false为不保留,默认为true

    property=replicator.extractor.dbms.keepMixDML=true

    5、从KFS安装包目录下的extensions/jdbc拷贝jdbc包

    V8R3(不含)之上的版本,使用kingbase8-8.6.0.jar

    V8R3(含)以下版本,使用kingbase8-8.2.0.jar

    cd /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/extensions/jdbc

    cp kingbase8-8.6.0.jar /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/flysync-replicator/lib

    6、安装

    cd /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/tools

    ./fspm install

    7、复到license文件到安装目录

    cp license.dat /home/flysync/kesrep/license.dat

    8、修改rename文件

    修改目标端服务oracle11g_kingbase8的rename文件

    vi /home/flysync/kfsrep/filters-config/oracle11g_kingbase8_rename.csv

    FLYSYNC,trep_commit_seqno,*,flysync_oracle11g_kingbase8,-,-

    FLYSYNC,consistency,*,flysync_oracle11g_kingbase8,-,-

    FLYSYNC,heartbeat,*,flysync_oracle11g_kingbase8,-,-

    FLYSYNC,trep_shard,*,flysync_oracle11g_kingbase8,-,-

    FLYSYNC,trep_shard_channel,*,flysync_oracle11g_kingbase8,-,-

    test,*,*,public,-,-

    9、启动并初始化

    /home/flysync/kesrep/flysync/cluster-home/bin/startall

    source ~/.bash_profile

    查看KFS状态

    replicator status

    查看服务状态

    fsrepctl status

    查看KUFL列表

    kufl list

    四、目标端(mysql8)KFS部署

    (一)、环境配置

    1、创建安装用户

    groupadd flysync

    useradd flysync -g flysync -G mysql

    passwd flysync

    2、上传安装文件包和license文件到服务器/home/flysync目录下,并解压

    tar -xzvf KingbaseFlySync-V001R006C003B20220107-replicator.tar.gz

    3、配置将hosts文件,将源端和目标端服务器都加上去

    vi /etc/hosts

    192.168.100.111 oracle

    192.168.100.114 kes

    192.168.100.112 mysql

    192.168.100.113 sqlserver

    4、配置/etc/security/limits.conf文件【可选】

    vi /etc/security/limits.conf

    flysync - nofile 65535

    flysync - nproc 8096

    mssql - nofile 65535

    mssql - nproc 8096

    5、开启时间同步服务【可选】

    yum install ntp

    systemctl start ntpd

    systemctl enable ntpd

    6、在/etc/sysctl.conf配置swappiness参数【可选】

    vi /etc/sysctl.conf

    vm.swappiness = 10

    sysctl -p

    7、检查依赖软件jdk和ruby【必须】

    --jdk

    java -version

    版本小于1.8的,可以使用yum安装1.8版本

    yum install java-1.8.0-openjdk.x86_64

    也可以下载oracle的1.8版本的JDK包手动上传安装

    --ruby

    可以使用yum方式安装

    yum install ruby

    也可以使用KFS控制台服务器里自带的ruby包进行替换,位置在:/opt/KFS/console/media/rbenv,

    将压缩包解压到/usr/local,然后配置/etc/profile文件里$PATH环境变量,将ruby的bin目录添加进去

    vi /etc/profile

    export PATH=$PATH:/usr/local/ruby/bin

    配置完成后,使用source命令应用

    source /etc/profile

    (二)、数据库配置

    1、mysql系统参数配置

    vi /etc/my.cnf

    [mysqld]

    local-infile

    character-set-server = utf8

    collation-server = utf8_general_ci

    default-time-zone = '+08:00'

    保存后重启数据库

    systemctl restart mysqld

    2、连接帐号配置

    建立帐号并给予相应的权限

    mysql>CREATE USER flysync@'%' IDENTIFIED BY '123456';

    mysql>GRANT ALL ON *.* TO flysync@'%' WITH GRANT OPTION;

    (三)、KFS安装

    1、配置flysync.ini

    [defaults]

    install-directory=/home/flysync/kfsrep

    profile-script=~/.bash_profile

    rmi-port=11000

    [kingbase8mysql8]

    skip_validation_check=MySQLDumpCheck,MySQLPermissionsCheck

    role=slave

    master=kes8

    master-kufl-port=3112

    members=mysql

    kufl-port=3112

    replication-host=192.168.100.112

    replication-port=3306

    replication-user=flysync

    replication-password=123456

    datasource-type=mysql

    svc-remote-filters=casetransform,rename

    property=replicator.filter.casetransform.to_upper_case=false

    replicator.filter.rename.definitionsFile=/home/flysync/kfsrep/filters-config/kingbase8mysql8_rename.csv

    2、安装

    cd /home/flysync/KingbaseFlySync-V001R006C003B20220107-replicator/tools

    ./fspm install

    3、复到license文件到安装目录

    cp license.dat /home/flysync/kesrep/license.dat

    4、修改rename文件

    vi /home/flysync/kfsrep/filters-config/kingbase8mysql8_rename.csv

    flysync_kingbase8,*,*,flysync_kingbase8mysql8,-,-

    public,*,*,test,-,-

    5、启动并初始化

    /home/flysync/kesrep/flysync/cluster-home/bin/startall

    source ~/.bash_profile

    查看KFS状态

    replicator status

    查看服务状态

    fsrepctl status

    查看KUFL列表

    kufl list

    五、数据搬迁

    (一)、表结构迁移

    表结构迁移使用极速搬迁模式,在中间端和目标端执行,数据源都指向源端数据库。

    1. 中间端(oracle11g_kingbase8)

    ddlscan -target.service oracle11g_kingbase8 -source.user FLYSYNC -source.pass 123456 -source.db orcl -source.dbtype oracle -source.host 192.168.100.111 -source.port 1521 -source.schema TEST  -target.db test -mgType 0

    1. 目标端(kingbase8mysql8)

    ddlscan -target.service kingbase8mysql8 -source.user FLYSYNC -source.pass 123456 -source.db orcl -source.dbtype oracle -source.host 192.168.100.111 -source.port 1521 -source.schema TEST  -target.db test -mgType 0

    (二)、存量数据迁移

    数据级联场景,数据迁移可以使用特殊模式(源端流水线平滑搬迁),在源端执行,这样源端就可以将存量数据生成KUFL日志同步到中间端,中间端就可以自动将数据同步到目标端。采用这种模式同步只需执行数据迁移一次就将数据自动迁移到中间端和目标端。

    特殊模式搬迁需要源端、中间端和目标端kfs服务是online状态。

    源端执行:

    loader -source.service oracle11g -source.user FLYSYNC -source.pass 123456 -source.db orcl -source.dbtype oracle -source.host 192.168.100.111 -source.port 1521 -source.schema TEST -source.rmiHost 192.168.100.111 -source.rmiPort 11000 -mgType 2 -clean

    特殊模式搬迁过程中,不可人为修改服务状态。若因外界原因导致服务状态异常,需将

    服务修正为 online 后再次执行搬迁。

  • 相关阅读:
    haproxy负载均衡
    【基于Matlab GUI的语音降噪系统设计】
    [R] ggplot2 - exercise (“fill =“)
    C++中的不规则二维数组
    Kotlin:崛起中的下一代编程语言
    Babylon.js有哪些技术难点
    Spring Boot 5 创建个人中心页面(API+Vue)
    VUE核心
    Spring Boot 加载本地 JAR 包的技术实践
    微机原理练习题_13
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/125442437