高级DBA带你解决达梦国产数据库数据同步至clickhouse数据库通用方法(全中国唯一一份)关键技术讲解

步骤1、安装达梦8国产数据库

参考笔者之前写的博文,怎么安装国产达梦8数据库,按博文提前装好!

https://blog.csdn.net/nasen512/article/details/126872483   

在这里插入图片描述

步骤2、安装好clickhouse数据库

参考笔者之前写过的博文,将clickhouse数据库提前安装好!

https://blog.csdn.net/nasen512/article/details/126954425

在这里插入图片描述

步骤3、安装etl中间件ClickHouse JDBC Bridge

Clickhouse-jdbc-bridge:是clickhouse提供的一个jdbc组件,用于通过JDBC的方式远程访问其他数据库表。

Clickhouse支持通过JDBC连接外部数据库,所有支持JDBC驱动的数据库都能直接接入clickhouse。要实现JDBC连接,clickhouse需要使用以后台进程运行的程序 clickhouse-jdbc-bridge。
JDBC表引擎可以对接Mysql、Postgresql、SQLite等数据库,但是JDBC表引擎不能单独完成对接工作,需要依赖clickhouse-jdbc-bridge的查询代理服务,clickhouse-jdbc-bridge是java语言实现的sql代理服务,项目地址为:

https://github.com/ClickHouse/clickhouse-jdbc-bridge   #作者的资源库有直接可以去下载RPM安装包
https://clickhouse.com/docs/zh/engines/table-engines/integrations/jdbc    # clickhouse官网的介绍

在这里插入图片描述
在这里插入图片描述
我们看懂架构图,则需要保证
ClickHouse JDBC Bridge第三方插件要能正常练到2个数据库。我们可以把这个插件看出是2个数据库直接的桥梁!

达梦8数据库肯定是完整支持jdbc协议的,所以这个就存在2个数据库数据类型的一一映射关系,这个关系,就在ClickHouse JDBC Bridge维护。
在这里插入图片描述

步骤4、ClickHouse JDBC Bridge安装部署方法

一、ClickHouse JDBC Bridge下载安装RPM包

https://github.com/ClickHouse/clickhouse-jdbc-bridge    #github下载地址

直接去笔者的资源库自行去下载更方便
在这里插入图片描述
在这里插入图片描述

rpm -ivh  clickhouse-jdbc-bridge-2.1.0-1.noarch.rpm    #安装命令

二、ClickHouse JDBC Bridge 配置

cd /etc/clickhouse-jdbc-bridge/config/datasources      #安装成功后自动生成配置路径

根据模板生成配置

touch datasource.json   #创建配置文件
{
  "$schema": "../datasource.jschema",
  "ch-server": {
    "aliases": [
      "self"
    ],
    "driverUrls": [
      "https://repo1.maven.org/maven2/com/clickhouse/clickhouse-jdbc/0.3.2-patch8/clickhouse-jdbc-0.3.2-patch8-http.jar"
    ],
    "driverClassName": "com.clickhouse.jdbc.ClickHouseDriver",
    "jdbcUrl": "jdbc:clickhouse://172.18.21.68:8123/system?compress=false",
    "username": "default",
    "password": "",
    "maximumPoolSize": 5
  },

 "dm-server": {
    "aliases": [
      "dm"
    ],
    "timezone":"GTM+8",
     "converter": {
              "mappings": [{ "nativeType": "TIMESTAMP", "toType": "String" },
              { "nativeType": "DATE", "toType": "String" }]
                      },
    "driverUrls": [
      "/etc/clickhouse-jdbc-bridge/drivers/DmJdbcDriver18.jar"
    ],
    "driverClassName": "dm.jdbc.driver.DmDriver",
    "jdbcUrl": "jdbc:dm://172.18.21.147:5236/NASEN",
    "username": "NASEN",
    "password": "",
    "maximumPoolSize": 100
  }





}



















{
  "$schema": "../datasource.jschema",
  "ch-server": {
    "aliases": [
      "self"
    ],
    "driverUrls": [
      "https://repo1.maven.org/maven2/com/clickhouse/clickhouse-jdbc/0.3.2-patch8/clickhouse-jdbc-0.3.2-patch8-http.jar"
    ],
    "driverClassName": "com.clickhouse.jdbc.ClickHouseDriver",
    "jdbcUrl": "jdbc:clickhouse://172.18.25.88:8123/system?compress=false",
    "username": "default",
    "password": "123456",
    "maximumPoolSize": 5
  },

 "dm-server": {
    "aliases": [
      "dm"
    ],



   "timezone":"GTM+8",



    "driverUrls": [
      "/etc/clickhouse-jdbc-bridge/drivers/DmJdbcDriver18-8.1.2.141.jar"
    ],
    "driverClassName": "dm.jdbc.driver.DmDriver",
    "jdbcUrl": "jdbc:dm://172.18.21.167:5236?SCHEMA=dbname&localTimezone=480",
    "username": "nasen",
    "password": "123",
    "maximumPoolSize": 100
  }

上传启动包

cd /etc/clickhouse-jdbc-bridge/drivers

在这里插入图片描述

clickhouse-jdbc-0.3.2-patch8-http.jar
dm8-oracle-jdbc16-wrapper.jar
DmJdbcDriver18.jar

三、后台启动ClickHouse JDBC Bridge服务

nohup clickhouse-jdbc-bridge > /home/clickhouse-jdbc-bridge.log 2>&1 &

四、clickhouse设置与ClickHouse JDBC Bridge联通配置

cd /etc/clickhouse-server  #进到配置路径
vi config.xml   #追加配置文件最后

在文件最后追加下面内容

 <jdbc_bridge>
        <host>172.18.21.141</host>
        <port>9019</port>
    </jdbc_bridge>

五、clickhouse测试验证

select * from jdbc('', 'show datasources')
select * from jdbc('dm', 'select * from NASEN.NASEN_TEST')

作者总结

过程中遇到了一些问题比如时区的问题,数据同步之后,时区相差8小时!
过程很复杂,分析源码,反复测试,最终发现还有个隐藏的java时区的配置。是反复看了源码,最终猜出来的。
当然也是下段配置得到线索,最终通过代码加了那个配置。测试正常了!

笔者是去github上拿下源码,恢复到自己电脑上,凭运气分析,猜出来的,居然有个神秘的时区配置。

https://blog.csdn.net/nasen512/article/details/128446822  #笔者解决同步之后时间时常问题

把整个技术数据流程串联起来,就能完成达梦数据库与clickhouse数据的同步!当然clickhouse-jdbc-bridge是github上的国外的公益团队开发的插件,给他们点赞。笔者也把自己的经验写出来,希望可以帮助大家。

笔者自己攻克这个技术难题私下也是花了很多的时间,去攻读国外读文档,也参考很多同僚的文章总结的,整个过程还是挺不容易,尤其是解决那个时区的问题!

作者本人简介:现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目。并维护真实企业级生产数据库上千余个。紧急处理数据库生产事故上百起,挽回数据丢失所操作的灾难损失不计其数。

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
达梦数据库中的DBA角色是具有系统部权限的角色,授予了DBA角色的用户可以在整个数据库系统中拥有最高权限,相当于数据库系统的管理员。 授权DBA角色给某个用户可以使用以下语句: GRANT DBA TO 用户名; 通过这个授权,用户就可以在数据库上拥有系统部权限,可以为所欲为,对所有的用户下进行操作。然而,由于DBA角色具有非常高的权限,一般情况下不会随意授予给用户,因为这可能会导致潜在的安风险和数据损坏。 在达梦数据库中,还有其他角色如RESOURCE和PUBLIC,分别用于授予用户自己用户下的部权限和公共权限。授权这些角色可以使用类似的语句,例如: GRANT RESOURCE TO 用户名; 需要注意的是,授予角色给用户后,用户可以通过执行角色来间接地使用角色中包含的权限。例如: SET ROLE DBA; 这样用户就可以拥有DBA角色中的所有权限了。在数据库性能优化和高可用架构方面,DBA角色或相关技术人员需要具备面了解的知识,并使用各种技术手段来优化数据库性能和实现高可用架构,例如主从复制和读写分离等。通过学习和实践,可以掌握数据库性能优化的各种技术,并能够应用于实际的数据库管理工作中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [达梦数据库用户权限管理](https://blog.csdn.net/weixin_49715367/article/details/124322304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL学习笔记5-数据库性能优化与扩展.md](https://download.csdn.net/download/weixin_52057528/88244498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值