大致流程
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”。
sap数据复制到clickhouse的方法