# dwh-soft
**Repository Path**: limebinary/dwh-soft
## Basic Information
- **Project Name**: dwh-soft
- **Description**: 用来存放dwh服务同步组件的程序包
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 5
- **Created**: 2024-10-23
- **Last Updated**: 2024-10-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dwh-soft
#### 介绍
用来存放dwh服务同步组件的程序包
这是一款基于 mysql 数据库迁移或实时同步到 postgresql 的中间服务组件(可断网执行,安全隔离,无需外网接入,免费绿色软件)
该程序主要用于解决 mysql/mariadb 同步到 PG\Mysql\greenplum\cloudBerryDb 等场景的用途,目的是把PG当成读库来操作,全程自动化,类似于读写分离的效果

#### 软件架构
使用java开发的二进制程序包,基于web应用程序架构。
无需连接外网,可断网模式运行,本机启动即可运行的web应用程序包
类似于阿里云的 dts 数据同步服务(腾讯、字节跳动都有类似服务),也可以用于 mysql 数据不停机服务线下、线上的迁移和实时同步,或海外机房同步等,可节约大量资金
架构补充
前端框架采用的是MIT协议的 [pearAdmin UI](https://gitee.com/pear-admin/Pear-Admin-Layui)
后端框架采用 [quarkus](https://gitee.com/mirrors/Quarkus) 框架 + 数据操作组件 [edb](https://github.com/MrYang-Jia/edb)
#### 安装教程
初始化admin账号密码(可修改): dwh/123456
windows
```properties
# 下载 dwh-1.1.0-windows.zip 解压后,放到您指定的目录下启动即可
# 如果需要修改默认端口号,则需要通过 cmd 或 linux控制台指定端口号(Dquarkus.http.port) , 否则直接启动即可
# 默认端口访问地址: http://127.0.0.1:11306/dwh/login
./dwh-1.1.0.exe -Dquarkus.http.port=11306
```
linux centos7(推荐)
```properties
# 建议使用 centos7 或以上版本
# 下载 dwh-1.1.0-linux.zip 解压后,放到您指定的目录下启动即可
# 设置文件为可启动文件
chmod 777 ./dwh-1.1.0
# 使用screen后台模式
yum -y install screen
# 启动一个窗口
screen -S dwh
# 启动服务(无需后台挂起 ctrl+z ,然后后台模式 bg)
# 默认端口访问地址: http://127.0.0.1:11306/dwh/login
./dwh-1.1.0 -Dquarkus.http.port=11306
# screen会话中:快捷键 ctrl+a+d ,退出会话,将会话切换到后台运行,这样子退出sshd控制台时,服务能正常运行,不影响服务的运行
```
#### 使用说明
软件使用期限每半年更新一次,尽量避免被人直接挂售
首次使用时,输入初始化账号密码: dwh/123456 ,
然后打开【数据同步】-【任务管理】,点击【创建任务】创建迁移同步任务即可
第一次使用时,直接迁移测试用的小数据库,然后点击同步即可。
当然,如果您熟悉了这套软件,也可以直接用于生产迁移数据,但是建议是从有读写分离的负载库上迁移,减少数据库的影响
同时也支持,您自己手工指定对应的 binlog 日志节点,进行指定数据同步
[dwh mysql同步软件介绍](https://mp.weixin.qq.com/s?__biz=MjM5MTY2MjcxMQ==&mid=2247483659&idx=1&sn=d0a1b3a57d698b8f901646fad0bda89d&chksm=a6b3561391c4df05b74a71ffce1fbdd15f0dcb6dca9995e407c10d5e65667bf805051e539f79)
[软件使用讲解](https://www.bilibili.com/video/BV1zj421X7ni/)
[dwh同步软件使用教程-图文](https://mp.weixin.qq.com/s?__biz=MjM5MTY2MjcxMQ==&mid=2247483684&idx=1&sn=ea48be3562ac9369ce7abacd6de2263d&chksm=a6b3563c91c4df2a31f63c823bd4f40ad5ef3e627b6446230756843aa7983f8e518265d8de6d)
#### 参与贡献
因为刚开始,所以短期内可能不会有太大变动的内容,有紧急诉求的伙伴,可以通过公众号单独在后台留下联系方式,我看到后会及时联系
[公众号](https://mp.weixin.qq.com/s?__biz=MjM5MTY2MjcxMQ==&mid=2247483659&idx=1&sn=d0a1b3a57d698b8f901646fad0bda89d&chksm=a6b3561391c4df05b74a71ffce1fbdd15f0dcb6dca9995e407c10d5e65667bf805051e539f79)
#### 特技
mysql 无人值守全量全库自动同步到Postgresql数据库,实现异构数据库读库功能
mysql 实现数据迁移、同步到 mysql、mariadb、postgresql、greenplum、cloudBerryDb、kafka等数据存储点
一键增加Mysql常用兼容函数 if、ifnull、group_concat、find_in_set、sysdate()、date_format
ps: kafka 模块没有经过严格验证,后续我再完善下,其他模块都是经过了百分百的时间论证过的结果,总耗时5年左右完成的稳定异构数据库同步,目前这个版本是第三代版本,所以实际上还有很多同步模块的功能并没有实现,但是这个工具的价值就在于异构数据库的同步,有其他诉求的可以留言,有场景化了,才继续延申扩展
#### mysql 数据类型支持

#### greenplum / cloudBerryDb 特殊说明
由于 cloudBerryDb 是基于 greenplum 的一些基础版本规则构建的,所以两者可以认为是等同的分布式数据库,其中 cloudBerryDb 底层是PG14版本,优于GP6,测试性能比GP6高7倍以上
目前同步时,默认以 mysql 的主键表位主键进行分布式hash键值分布,如果同步时也同步索引,则自动构建基于主键的分布式索引
如果修改主键时,会自动构建新的分布式键,但是原索引会全部移除,因为所有的索引是依照主键去构建的,然后再重新迁移节点数据
如果是无主键的表,则会使用hash随机分布节点数据
特别说明,如果需要使用gis数据类型的,需要额外安装相关 postgis 库的插件,尤其是分布式数据库 cloudBerryDb 对应的库为 [cloudberrydb_gis](https://github.com/cloudberrydb/postgis)
#### 部分软件截图
> ##### 登录页

> ##### 同步功能页

2024-10-19 增加表单类型的配置页,方便用户快速配置同步任务
> ##### 导入功能页


> ##### 同步功能属性项
2024.10.19 额外增加对 greenplum/cloudberryDb的同步支持
2024.10.19 额外增加 同步表覆盖策略,同时主同步策略同步时增加只同步同步表覆盖策略的同步功能,区别于 ETL 同步,因为ETL同步不支持ddl表结构变更调整同步
2024.10.19 修复主键id变更时,数据无法同步的问题

> ##### 系统告警通知功能
##### 支持 钉钉BOT、微信BOT、Http接口调用、阿里云短信、邮件通知等方式

> ##### 异常定位

> ##### 断网自动重连

2024.10.19 断网自动重连功能,发现如果是io异常时,则会自动重连,间隔3分钟,如果有设置告警提醒,则会再每间隔5次则会发送一次告警信息进行推送
#### 可关注公众号私信
