分库分表场景下的数据校验

    使用 对 table-0 进行特殊配置,设置对应 rules,配置上游表与下游表的映射关系。这种配置方式需要对所有分表进行设置,适合上游分表数量较少,且分表的命名规则没有规律的场景。场景如图所示:

    sync-diff-inspector 完整的示例配置如下:

    1. # Diff Configuration.
    2. ######################### Global config #########################
    3. # 检查数据的线程数量,上下游数据库的连接数会略大于该值
    4. check-thread-count = 4
    5. # 如果开启,若表存在不一致,则输出用于修复的 SQL 语句
    6. export-fix-sql = true
    7. # 只对比表结构而不对比数据
    8. check-struct-only = false
    9. ######################### Datasource config #########################
    10. [data-sources.mysql1]
    11. port = 3306
    12. user = "root"
    13. password = ""
    14. route-rules = ["rule1"]
    15. [data-sources.mysql2]
    16. host = "127.0.0.1"
    17. port = 3306
    18. user = "root"
    19. password = ""
    20. route-rules = ["rule1"]
    21. [data-sources.tidb0]
    22. host = "127.0.0.1"
    23. port = 4000
    24. user = "root"
    25. ########################### Routes ###########################
    26. [routes.rule1]
    27. schema-pattern = "test" # 匹配数据源的库名,支持通配符 "*" 和 "?"
    28. table-pattern = "table-*" # 匹配数据源的表名,支持通配符 "*" 和 "?"
    29. target-schema = "test" # 目标库名
    30. target-table = "table-0" # 目标表名
    31. ######################### Task config #########################
    32. [task]
    33. output-dir = "./output"
    34. source-instances = ["mysql1", "mysql2"]
    35. target-instance = "tidb0"
    36. # 需要比对的下游数据库的表,每个表需要包含数据库名和表名,两者由 `.` 隔开
    37. target-check-tables = ["test.table-0"]

    注意事项

    如果上游数据库有 test.table-0 也会被下游数据库匹配到。