sap数据复制到clickhouse的方法

大致流程


1、因为sap常使用的数据库包括sqlserver,所以这里我们为了“实现sap数据复制到clickhouse”,可以通过“sqlserver数据库的数据复制到clickhouse”来实现。

2、大致流程为:

(1)安装虚拟机

(2)安装docker

(3)安装clickhouse数据库

(4)安装sqlserver数据库

(5)安装kafka connect

(6)安装DBeaver

我们将以安装作为这篇博客的导向,并为每个导向里附带对应软件需要进行的配置,以实现我们总的目标。

一、安装虚拟机

1、到官网下载virtualbox虚拟机https://www.virtualbox.org/,并安装。

2、在虚拟机上运行ubuntu系统桌面版的详细教程ubuntu桌面版在virtualbox上安装与配置,教程里的cpu,这里建议给4个即可,内存给到25g即可。

​    服务版的详细教程ubuntu22服务版在virtualbox上安装与配置,教程里的cpu,这里建议给2-4个即可,内存给到25g即可。

       如果安装的服务版,还需在电脑上安装Xshellh和xftp,Xshell用来使用ssh连接到虚拟机,解决虚拟机里不能复制张贴输入的问题(虚拟机的增强模式在加密环境下可能有些功能不生效);xftp用来把本机文件传输到虚拟机里面。

​     Xshell连接ubuntu教程,建议配置默认root用户登录ubuntu配置root用户登录.note

​     xftp使用首先当前操作的用户必须是root用户,这样才能拥有权限传输文件,安装完xftp后在Xshell顶部有个绿色的按钮点击即可跳转到xftp界面,可以看到左右两个视窗都有文件,左边的是本地的文件,右边是虚拟机上的文件,在左边选择一个文件,右边选择一个想要放置文件的目录,点击上方向右的箭头,即可把文件传到虚拟机里面。

3、在虚拟机上运行windows系统(可选)

       电脑下载一个迅雷,在浏览器输入以下链接跳转到迅雷界面并选择下载windows-server镜像。ed2k://|file|cn_windows_server_2016_x64_dvd_9718765.iso|6176450560|CF1B73D220F1160DE850D9E1979DBD50|/解压后使用虚拟机安装镜像,网络改为桥接网卡,安装增强模式(点击虚拟机设备-安装增强功能-在windows虚拟机里进入文件夹选择增强模式的一个安装程序并安装,重启虚拟机-安装完后即可共享本机的文件夹)。

二、安装docker

1、在ubuntu服务版上docker一般是怎么部署的.note
2、给docker配置代理
使用docker代理

sudo mkdir -p /etc/systemd/system/docker.service.d 
sudo touch /etc/systemd/system/docker.service.d/proxy.conf 

在proxy.conf写入如下信息,http://proxy:7890改为自己的代理地址

[Service] 
Environment="HTTP_PROXY=http://proxy:7890/" Environment="HTTPS_PROXY=http://proxy:7890/" Environment="NO_PROXY=localhost,127.0.0.1,192.168.*"

看docker是否使用了代理

docker info | grep -i proxy 

重启生效

systemctl daemon-reload 
systemctl restart docker 
docker info

保存并退出
     保存文件后(在 nano 中使用 Ctrl + O 保存,Ctrl + X 退出),你需要重新加载 Docker 配置。

加载重启docker

service docker restart  
三、安装clickhouse数据库

1、clickhouse部署(看官方文档进行部署),部署到ubuntu里面。

2、连接不上clickhouse数据库可能是端口没有暴露的问题,官方文档下面有,参考这一段代码

docker run -d -p 18123:8123 -p19000:9000 --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse

-p 18123:8123用于暴露端口。


四、安装sqlserver数据库(可选:判断是否需要安装在windows虚拟机里)

1、sqlserver安装包和ssms安装包,可以在网上找对应的教程安装安装包链接(失效请到网上查找资源)
2、安装完后打开sqlserver 配置管理器,点击sqlserver服务-sqlserver代理启动模式设置为自动,sqlserver browser设置为自动。

3、登录ssms

4、把需要还原的.bak文件放到ssms里面还原

5、为 MSSQL 设置 Change Data Capture (CDC) 的详细步骤与内涵.note(已经有sqlserver数据库和数据可直接看这一步)

问题:虚拟机的数据库连接不上,尝试把虚拟机的防火墙关闭再尝试。

五、安装kafka connect

下载链接:百度云盘链接
把文件通过xftp转存到ubuntu虚拟机,使用命令解压:

tar -xvf 你的tar文件.tar  

​     进到含有.yml的目录下,使用docker命令部署kafka connect,注意要确保docker代理能够使用,通过docker info命令查看是否配置了proxy。

docker compose up

部署完毕后,使用虚拟机的地址加8089端口,在浏览器上访问Redpanda页面。

  在script目录下配置文件

clickhouse-config-sap.sh(根据实际情况对应修改) 


SINK_CONNECTOR_NAME="mssql-sink-connector"
CLICKHOUSE_HOST="192.168.0.46"
CLICKHOUSE_PORT=18123
CLICKHOUSE_USER="default"
CLICKHOUSE_PASSWORD=""
CLICKHOUSE_DATABASE="default"
#TOPICS="sqlserver.test2.dbo.OJDT"

TOPICS_REGEX="sqlserver.hhy.dbo.*"


clickhouse-sink-register.sh*

​
#!/bin/bash

set -x

if [ ! $1 ];then
   echo "Please specify a configuration file."
   exit
fi


source $1

echo "register clickhouse sink connector"
cat <<EOF | curl --request POST --url "http://127.0.0.1:18083/connectors" --header 'Content-Type: application/json' --data @-
{
    "name": "${SINK_CONNECTOR_NAME}",
    "config": {
      "connector.class": "com.altinity.clickhouse.sink.connector.ClickHouseSinkConnector",
      "tasks.max": "1",
      "topics.regex": "${TOPICS_REGEX}",
      "clickhouse.server.url": "${CLICKHOUSE_HOST}",
      "clickhouse.server.user": "${CLICKHOUSE_USER}",
      "clickhouse.server.password": "${CLICKHOUSE_PASSWORD}",
      "clickhouse.server.database": "${CLICKHOUSE_DATABASE}",
      "clickhouse.server.port": ${CLICKHOUSE_PORT},


      "store.kafka.metadata": true,
      "topic.creation.default.partitions": 6,

      "store.raw.data": false,
      "store.raw.data.column": "raw_data",

      "metrics.enable": true,
      "metrics.port": 8084,
      "buffer.flush.time.ms": 500,
      "thread.pool.size": 2,
      "fetch.max.wait.ms": 1000,
      "fetch.min.bytes": 52428800,

      "enable.kafka.offset": false,

      "replacingmergetree.delete.column": "_sign",

      "auto.create.tables": true,
      "schema.evolution": false,

      "deduplication.policy": "off"
    }
}
EOF

mssql-config-hhy.sh(根据源数据库对应修改)

​
# SqlServer config
SOURCE_CONNECTOR_NAME="mssql-source-connector"
MSSQL_HOST="192.168.0.43"
MSSQL_PORT=1433
MSSQL_USER="user_name"
MSSQL_PASSWORD="Password1"
DATABASE_NAMES="hhy"
TOPIC_PREFIX="sqlserver"
EXCLUDE_TABLES="dbo.OHMM,dbo.f_splitStr,dbo.F_split"
EXCLUDE_COLUMNS="dbo.OFRM.FileContnt,dbo.IRD1.Template,dbo.OIRD.Definition,dbo.ASC6.SignData,dbo.CINF.DashConf,dbo.OPRO.BValue,dbo.OPCT.XMLFile,dbo.EBL1.DocContent,dbo.OULA.EULADoc,dbo.AWMG.XMLFile,dbo.OFBT.CONTENT,dbo.OEJB.XMLFile,dbo.OCPC.OLDContent,dbo.OCPC.DiExpoCont,dbo.SCL6.SignData,dbo.SRA2.ResDag,dbo.SRA2.ResPdf,dbo.SRA2.ResHtml,dbo.SRA2.ResXml,dbo.SRA2.ResLog,dbo.SRA2.ErrScreen,dbo.OADP.LogoImage,dbo.RDC1.Template,dbo.EJB2.FileStorag,dbo.OFUS.PROFPHOTO,dbo.OQRC.FileContnt,dbo.AUSR.UserPrefs,dbo.ACPN.Template,dbo.OCPN.Template,dbo.AADP.LogoImage,dbo.OTRX.Data,dbo.AINF.DashConf,dbo.RDOC.Template,dbo.OSRC.SysRptTemp,dbo.OSRC.CusRptTemp,dbo.OWMG.XMLFile,dbo.OHMM.InfoFile,dbo.OWPK.Content,dbo.OUSR.UserPrefs"


mssql-source-register.sh* 

​
#!/bin/bash

set -x
if [ ! $1 ];then
   echo "Please specify a configuration file."
   exit
fi

source $1

echo "register SqlServer connector"
cat <<EOF | curl --request POST --url "http://127.0.0.1:8083/connectors" --header 'Content-Type: application/json' --data @-
      {
        "name": "${SOURCE_CONNECTOR_NAME}",
        "config": {
          "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector",
          "tasks.max": "1",
          
          "database.hostname": "${MSSQL_HOST}",
          "database.port": "${MSSQL_PORT}",
          "database.user": "${MSSQL_USER}",
          "database.password": "${MSSQL_PASSWORD}",

          "topic.prefix": "${TOPIC_PREFIX}",
          "database.names" : "${DATABASE_NAMES}",
          "table.exclude.list" : "${EXCLUDE_TABLES}",
          "column.exclude.list" : "${EXCLUDE_COLUMNS}",
          "database.applicationIntent": "ReadOnly",
          "snapshot.isolation.mode": "snapshot",
          "schema.history.internal.kafka.bootstrap.servers" : "kafka:9092",
          "schema.history.internal.kafka.topic": "${TOPIC_PREFIX}.schema-changes",
          "database.encrypt": true,
          "database.trustServerCertificate": true 
        }
      }
EOF



六、安装DBeaver

官方地址
在这里连接两个数据库,查看数据的变动,测试数据库是否能连接上。

 

最后一步打开ubuntu,进到安装kafka connect的目录,进到scrpt目录,运行:(将文件设置为可执行)

chmod o+x mssql-source-register.sh* 
chmod o+x clickhouse-sink-register.sh*

运行:

./clickhouse-sink-register.sh* clickhouse-config-sap.sh 
./mssql-source-register.sh* mssql-config-hhy.sh

网页打开Redpanda页面,找到connector,可以看到已经有source和sink。

再点开DBeaver查看clickhouse数据库表,可以看到数据在更新,到此就完成了“sap数据复制到clickhouse”。


AI/BI
sap数据复制到clickhouse的方法
刘付国瑞 2024年12月24日
分析这篇文章

存档
登录 留下评论
国能Vanna Flask项目启动