迁移MySQL数据库后,验证数据完整性是确保业务正常运行的关键步骤。重点在于核对源库与目标库的结构、数据量、内容一致性,并检查约束和索引是否完整。
1. 检查表结构一致性
表结构不一致可能导致应用报错或数据写入异常。需确认迁移后表定义完全相同。
使用SHOW CREATE TABLE 源表;和SHOW CREATE TABLE 目标表;对比输出,包括字符集、存储引擎、字段类型、默认值等。 可用脚本批量比对所有表结构,重点关注自增ID、时间戳默认值、NOT NULL约束等细节。2. 核对记录数量
行数差异是最直观的数据缺失信号,应逐表比对总条数。
执行SELECT COUNT(*) FROM 表名;分别在源和目标库运行,记录结果并比对。 对于大表可采样分页统计(如LIMIT偏移),避免锁表或超时,但整体趋势必须一致。3. 抽样比对实际数据内容
数量一致不代表内容正确,需抽查关键字段值是否准确。
选取主键连续或时间分布均匀的样本行,导出源库数据片段,与目标库对应记录逐字段比对。 关注日期、金额、状态码等核心字段,特别注意时区转换、精度丢失问题。 可用工具如pt-table-checksum自动校验主从数据一致性,适用于同构环境。4. 验证索引与约束完整性
缺少索引会影响性能,外键缺失可能破坏数据逻辑关系。
用SHOW INDEX FROM 表名;确认关键查询字段的索引存在且类型正确。 检查外键约束是否迁移成功,可通过INFORMATION_SCHEMA.KEY_COLUMN_USAGE查询参照关系。 测试插入违反唯一约束的数据,确认目标库能正确拦截。基本上就这些。只要结构、数量、内容、约束四方面都通过验证,就能较大概率保证迁移后的数据完整可用。自动化脚本配合人工抽查是最稳妥的方式。
