# dbsyncer **Repository Path**: dbother/dbsyncer ## Basic Information - **Project Name**: dbsyncer - **Description**: 基于dbsyncer增加了“全量+增量”功能,不用再手动切换 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 全量+增量同步模式 - 实现文档 ## 📋 目录 1. [功能概述](#功能概述) 2. [快速开始](#快速开始) 3. [技术实现](#技术实现) 4. [支持数据库](#支持数据库) 5. [文档索引](#文档索引) --- ## 功能概述 ### 问题背景 > 基于 AI 的编程修改,已测试过MySQL的同步,其余的未仔细测试,理论都支持 原始的 DBSyncer 只支持两种同步模式: - **全量同步**:一次性迁移所有数据 - **增量同步**:持续监听 CDC 变更 用户痛点: 1. 全量同步后,需要手动切换到增量模式 2. 全量同步期间的增量数据会丢失 3. 需要人工干预,操作繁琐 ### 解决方案 新增第三种同步模式:**全量+增量** ``` 全量+增量 = 自动执行全量同步 + 自动切换到增量同步 ``` 核心特性: - ✅ **自动切换**:全量完成后自动启动增量监听 - ✅ **数据完整**:全量期间的变更不会丢失 - ✅ **操作简便**:一次配置,全程自动化 ### 工作流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 1. 用户选择"全量+增量"模式并启动 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 2. 系统自动获取当前 CDC 位点(全量开始前) │ │ MySQL: binlog 位置 │ │ PostgreSQL: LSN │ │ Oracle: SCN │ │ SQL Server: LSN │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 3. 执行全量同步 │ │ • 全量期间的变更记录到 CDC 日志 │ │ • 位点信息已保存 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 4. 全量完成,自动切换到增量模式 │ │ • 修改同步模式为增量 │ │ • 从保存的位点开始监听 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 5. 回放全量期间的变更 │ │ • 所有变更 >= 保存的位点都会被处理 │ │ • 持续监听后续变更 │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 快速开始 ### 前置条件 1. **数据库已启用 CDC**: - MySQL: Binlog 格式为 ROW - PostgreSQL: wal_level 为 logical - Oracle: LogMiner 已配置 - SQL Server: CDC 已启用 2. **已配置增量同步监听器** ### 使用步骤 #### 1. 创建映射配置 在 Web 界面创建新的映射配置 #### 2. 选择同步模式 在"同步方式"选项中选择 **"全量+增量"** ``` ○ 全量同步 ○ 增量同步 ● 全量+增量 (全量完成后自动切换) ``` #### 3. 启动同步 点击启动按钮,系统会: 1. 自动获取当前 CDC 位点 2. 执行全量同步 3. 全量完成后自动切换到增量模式 #### 4. 监控日志 ``` [INFO] 检测到"全量+增量"模式,开始预取增量位点 [INFO] 开始预取增量位点,mappingId: xxx, mappingName: 测试映射 [INFO] 成功预取增量位点,snapshot: {...} [INFO] 增量位点已保存到 Meta [INFO] 开始全量同步... [INFO] 全量同步完成,准备自动切换到增量同步 [INFO] 已将同步模式切换为增量 [INFO] 从位点 xxx 开始监听 ``` ## 常见问题 ### Q1: "全量+增量"模式和手动切换有什么区别? **A:** 手动切换需要: 1. 启动全量同步 2. 等待完成 3. 手动修改配置为增量 4. 重新启动 "全量+增量"模式只需: 1. 选择"全量+增量"模式 2. 点击启动 3. 全流程自动化,无需人工干预 ### Q2: 全量期间的增量数据会丢失吗? **A:** **不会丢失**。 系统在全量开始前会先获取当前 CDC 位点,全量完成后从该位点开始监听,所有全量期间的变更都会被回放。 ### Q3: 如果预取位点失败怎么办? **A:** 系统会记录警告日志,但继续执行全量同步。 全量完成后仍会尝试切换到增量模式,增量监听器会从最早的可用位点开始监听。 ### Q4: 可以中途停止"全量+增量"同步吗? **A:** 可以。 停止后,再次启动时会: - 如果全量未完成,继续执行全量 - 如果全量已完成,自动切换到增量 ### Q5: 哪些数据库支持"全量+增量"模式? **A:** 目前支持: - MySQL 5.6+ - PostgreSQL 9.4+ - Oracle 11g+ - SQL Server 2008+ 其他数据库(如 MongoDB)暂不支持。 **祝使用愉快!** 🎉