# SyncFlow **Repository Path**: dreamli007/sync-flow ## Basic Information - **Project Name**: SyncFlow - **Description**: SyncFlow 是一个轻量级、高可用的数据库表同步配置管理系统,支持跨数据库的增量数据同步任务管理和调度。通过可视化界面简化数据同步配置,支持精确到分钟级的任务调度,并提供实时监控和统计功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-11 - **Last Updated**: 2025-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SyncFlow - 数据库同步配置管理系统 ![GitHub](https://img.shields.io/github/license/yourusername/syncflow) ![Java](https://img.shields.io/badge/Java-17+-blue) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.0.0-brightgreen) SyncFlow 是一个轻量级、高可用的数据库表同步配置管理系统,支持跨数据库的增量数据同步任务管理和调度。通过可视化界面简化数据同步配置,支持精确到分钟级的任务调度,并提供实时监控和统计功能。 ## ✨ 核心功能 - **可视化配置管理** - 添加/编辑/删除数据同步配置 - 设置源表和目标表映射关系 - 配置同步列、唯一键和删除标记 - 设置同步间隔(分钟级精度) - **智能任务调度** - 基于时间轮算法的精确调度器 - 毫秒级任务触发精度 - 自动计算初始延迟和下次执行时间 - 任务热加载机制 - **数据同步引擎** - 增量数据同步(基于时间戳) - 支持删除记录同步 - 批量插入/更新操作 - UPSERT(存在则更新,不存在则插入)支持 - 执行时间窗口控制(如仅限夜间执行) - **实时监控与统计** - 同步配置状态统计(启用/禁用/总数) - 任务执行成功率与耗时分析 - 最后同步时间跟踪 - 错误计数与告警机制 - **便捷操作** - 一键触发手动同步 - 批量重新加载所有任务 - 状态快速切换(启用/禁用) - 优先级管理(高/中/低) ## 🛠️ 技术栈 | 类别 | 技术组件 | | ------------ | ---------------------------- | | **后端** | Spring Boot 3.x, MyBatis | | **前端** | Vue.js, Element UI, ECharts | | **数据库** | MySQL (支持其他关系型数据库) | | **调度引擎** | Netty HashedWheelTimer | | **构建工具** | Maven | | **其他** | HikariCP, Lombok, PageHelper | ## 🚀 快速开始 ### 前提条件 - Java 17+ - MySQL 5.7+ - Maven 3.6+ ### 安装步骤 1. **克隆仓库** ```bash git clone https://gitee.com/datou404/sync-flow.git cd syncflow ``` 2. **创建数据库** ```sql CREATE DATABASE sync_management; USE sync_management; ``` 3. **执行初始化脚本** ```sql CREATE TABLE sync_config ( id BIGINT AUTO_INCREMENT PRIMARY KEY, source_table VARCHAR(100) NOT NULL, target_table VARCHAR(100) NOT NULL, sync_column VARCHAR(50) NOT NULL, unique_key VARCHAR(200) NOT NULL, deleted_column VARCHAR(50), sync_interval INT NOT NULL DEFAULT 5, last_sync_time DATETIME, last_success_time DATETIME, error_count INT DEFAULT 0, enabled BOOLEAN DEFAULT true, execution_window VARCHAR(100) DEFAULT 'ALL', priority INT DEFAULT 2, created_time DATETIME DEFAULT CURRENT_TIMESTAMP, updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` 4. **配置数据源** 编辑 `application.yml`: ```yaml spring: datasource: source: url: jdbc:mysql://localhost:3306/sync_management username: your_db_user password: your_db_password driver-class-name: com.mysql.cj.jdbc.Driver target: url: jdbc:mysql://target-db:3306/target_db username: target_user password: target_password driver-class-name: com.mysql.cj.jdbc.Driver ``` 5. **编译运行** ```bash mvn clean package java -jar target/syncflow-1.0.0.jar ``` 6. **访问系统** 打开浏览器访问: [http://localhost:8080](http://localhost:8080) ## 🖥️ 使用指南 ### 1. 添加同步配置 1. 点击【新增配置】按钮 2. 填写源表和目标表信息 3. 设置同步列(用于增量同步的时间戳字段) 4. 指定唯一键(用于记录匹配) 5. 配置同步间隔(分钟)和执行窗口 6. 保存配置 ### 2. 管理同步任务 - **启用/禁用**:通过状态开关控制任务运行 - **手动触发**:点击同步按钮立即执行任务 - **编辑配置**:修改已有配置参数 - **删除配置**:移除不需要的同步任务 ### 3. 查看统计信息 仪表盘显示关键指标: - 总配置数 - 启用/禁用配置数量 - 高优先级任务数 - 今日成功/失败次数 - 平均同步耗时 ## 📊 系统架构 ```mermaid graph TD A[前端界面] -->|HTTP API| B(Spring Boot) B --> C[配置管理模块] B --> D[任务调度引擎] B --> E[数据同步服务] C --> F[MySQL 管理库] E --> G[源数据库] E --> H[目标数据库] D --> E ``` ## 🔧 配置项说明 | 配置项 | 说明 | 默认值 | | ---------------- | ------------------------------ | ------ | | source_table | 源数据库表名 | 必填 | | target_table | 目标数据库表名 | 必填 | | sync_column | 增量同步的时间戳列 | 必填 | | unique_key | 记录唯一标识列 | 必填 | | deleted_column | 软删除标记列(可选) | - | | sync_interval | 同步间隔(分钟) | 5 | | execution_window | 执行时间窗口(如 00:00-06:00) | ALL | | priority | 任务优先级(1-高, 2-中, 3-低) | 2 | ## 🤝 贡献指南 欢迎贡献!请遵循以下流程: 1. Fork 项目仓库 2. 创建特性分支 (`git checkout -b feature/your-feature`) 3. 提交更改 (`git commit -am 'Add your feature'`) 4. 推送到分支 (`git push origin feature/your-feature`) 5. 创建 Pull Request ## 📜 开源协议 本项目采用 [Apache License 2.0](LICENSE) 开源协议