Skip to content

Latest commit

 

History

History
135 lines (116 loc) · 12.1 KB

postgres_migrate_manual.md

File metadata and controls

135 lines (116 loc) · 12.1 KB

DBMS POSTGRES MIGRATE MANUAL

本文档用于描述 DBMS 分布式迁移服务平台 POSTGRES 迁移功能


结构迁移

结构迁移任务配置示例

Postgres MIGRATE MYSQL 兼容性数据库内置列数据类型映射规则 ,提供以下功能实现:

  • SCHEMA 名称区分大小写
  • TABLE 名称区分大小写
  • COLUMN 名称区分大小写
  • 表结构定义迁移
  • 表索引定义迁移
  • 表约束定义迁移
  • 自定义配置路由规则映射
    • schema 名称路由
    • 数据库表名路由
    • 数据库表列名称路由
  • 自定义配置迁移规则映射,迁移规则优先级:列->表->SCHEMA->任务->内置
    • 列数据类型自定义
    • 列默认值自定义
    • 表属性自定义(仅限 TiDB 数据库)
    • 列默认值无内置规则,并提供 [buildin_datatype_rule] 和 [buildin_defaultval_rule] 元数据表,能够编写更多规则
  • 断点续传
  • 数据库序列 SEQUENCE 迁移(需要下游数据库支持序列)
  • 经转换的表结构可直接下游数据库进行创建(需要下游数据库支持序列)

NOTE:

约束类别 注意事项 备注
数据库版本 POSTGRES 数据库版本要求 >= 9.5
字符集 POSTGRES 数据库字符集 ONLY 支持 EUC_TW、UTF8、EUC_CN
排序规则 POSTGRES 数据库排序规则 ONLY 支持 C、POSIX、ZH_TW、ZH_TW.UTF8、ZH_TW.UTF-8、ZH_CN、ZH_CN.UTF8、ZH_CN.UTF-8、EN_US、EN_US.UTF8、EN_US.UTF-8,如果下游数据库是 MYSQL / TiDB,则忽略 POSTGRES 数据库字符集,统一 UTF8MB4 和 UTF8MB4_BIN、UTF8MB4_0900_AI_CI 转换
数据表类型 1. 分区表、临时表、聚簇表、外部表以及自定义类型 UDT 表统一转换成普通表,且自定义 UDT 表结构迁移受限自定义类型,下游数据库若不支持直接创建则以报错形式记录
2. 物化视图、普通视图统一忽略转换,以不兼容形式记录
如有必要,请获取完整的不兼容对象信息清单,然后进行手动转换
数据表约束 MYSQL 兼容性数据库唯一约束基于唯一索引字段,下游只会创建唯一索引
表索引类型 POSTGRES 数据库不兼容索引类型以不兼容形式记录
数据表默认值 数据库表列函数默认值不转换,保留上游默认值,下游建表时是否报错取决于下游数据库是否支持当前函数默认值
错误处理 如果程序遇到报错,进程不会终止,具体错误表以及对应的错误详情参见元数据表 [struct_migrate_task] 数据

结构对比

结构对比任务配置示例

POSTGRES MIGRATE MYSQL 兼容性数据库,以上游数据库 POSTGRES 表结构为基准,提供以下功能实现:

  • SCHEMA 名称区分大小写
  • TABLE 名称区分大小写
  • COLUMN 名称区分大小写
  • 自定义配置路由规则映射
    • SCHEMA 名称路由
    • TABLE 名称路由
    • COLUMN 名称路由
  • 自定义配置迁移规则映射,迁移规则优先级:列->表->SCHEMA->任务->内置
    • 列数据类型自定义
    • 列默认自定义
  • 表索引对比,依据索引类型既对比索引是否一致,也对比索引字段是否一致
  • 表约束对比,依据约束类型既对比约束名是否一致,也对比约束字段是否一致

NOTE:

约束类别 注意事项 备注
基准参照 数据库表数据类型自定义部分参照自定义基准进行对比,非自定义部分参照内置转换规则基准进行对比
字符集和排序规则 如果下游数据库是 TiDB / MYSQL,则忽略 POSTGRES 数据库字符集,统一 UTF8MB4 转换对比,而排序规则根据内置规则映射转换对比 UTF8MB4_BIN、UTF8MB4_0900_AI_CI 对比
外键和检查约束 1. 如果下游数据库是 TiDB,则排除外键、检查约束对比
2. 如果下游数据库是 MYSQL,对于低版本只检查外键约束,高版本外键、检查约束都对比
错误处理 如果程序遇到报错,进程不会终止,具体错误表以及对应的错误详情参见元数据表 [struct_compare_task] 数据

数据迁移

STMT 数据迁移任务配置示例

CSV 数据迁移任务配置示例

POSTGRES MIGRATE MYSQL 兼容性数据库,提供以下功能实现:

  • SCHEMA 名称区分大小写
  • TABLE 名称区分大小写
  • COLUMN 名称区分大小写
  • 自定义配置路由规则映射
    • SCHEMA 名称路由
    • TABLE 名称路由
    • COLUMN 名称路由
  • 自定义数据库表迁移范围
  • 自定义配置 SQL Hint
  • 断点续传
  • 上游数据库一致性/非一致性读
  • 表数据字符集参照上下游数据源参数配置 charset 进行自动转换传输,支持乱码 garbled-char-replace 字符替换功能
  • 支持统计信息以及 CHUNK 形式划分数据迁移范围,并自动识别 ORACLE 数据库版本并采用最优的方式迁移
  • 数据存放空间检查是否满足数据表大小,不满足自动跳过,直至找到满足条件的数据表导出或者任务结束 (ONLY CSV MIGRATE TASK)
  • 下游 TiDB 数据库 CSV 数据迁移支持自动导入(Require: TiDB Version >= v7.5)

NOTE:

约束类别 注意事项 备注
数据表结构 数据表存在主键或者唯一键,否则因异常错误退出或者手工中断退出,断点续传【replace into】无法替换,数据可能会导致重复,除非手工清理下游重新导入
断点续传 断点续传期间,参数配置文件 chunk-size 不能动态变更,但可通过配置 enable-checkpoint = false 自动清理断点以及已迁移的表数据,重新导出导入
错误处理 如果程序遇到报错,进程不会终止,CSV / STMT 模式数据迁移具体错误表以及对应的错误详情参见元数据表 [data_migrate_task] 数据

数据校验

数据校验任务配置示例

POSTGRES MIGRATE MYSQL 兼容性数据库,以上游 POSTGRES 数据库为基准,提供以下功能实现:

  • SCHEMA 名称区分大小写
  • TABLE 名称区分大小写
  • COLUMN 名称区分大小写
  • 自定义配置路由规则映射
    • SCHEMA 名称路由
    • TABLE 名称路由
    • COLUMN 名称路由
  • 自定义数据库表数据校验范围、校验字段以及可忽略的校验字段
  • 上游一致性/非一致性读,下游当前读
  • 支持程序 CRC32、数据库 MD5 方式数据校验以及只校验数据表行数
  • 断点续传
  • 非强制要求表结构必须存在有效唯一字段索引,采用数据对比过程结合数据记录行数规避

NOTE:

约束类别 注意事项 备注
数据校验 ONLY 校验数据行数产生的差异不会输出详情修复文件,元数据表只记录数据表不相等,但对应的上下游表行数程序日志会显示记录
校验规则 1. compare-field/compare-range 参数,compare-range 优先级高于 compare-field,仅当两个都配置时,以 compare-range 为准
2. compare-field 参数字段是否是索引字段,需自行确认保证,非索引字段影响校验效率以及数据库资源消耗
断点续传 断点续传期间,参数配置文件 chunk-size 不能动态变更,但可通过配置 enable-checkpoint = false 自动清理断点以及已迁移的表数据,重新导出导入
错误处理 如果程序遇到报错,进程不会终止,具体错误表以及对应的错误详情参见元数据表 [data_compare_task] 数据

实时同步(未来计划)

POSTGRES MIGRATE MYSQL 兼容性数据库,计划ing

NOTE: