首先核对表结构、记录数量、实际数据内容及索引约束完整性。使用SHOW CREATE TABLE和SHOW INDEX对比结构与索引,逐表执行COUNT(*)验证行数,抽样比对关键字段值,并检查外键约束存在性及唯一性限制有效性,确保迁移后数据完整可用。
迁移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查询参照关系。
- 测试插入违反唯一约束的数据,确认目标库能正确拦截。
基本上就这些。只要结构、数量、内容、约束四方面都通过验证,就能较大概率保证迁移后的数据完整可用。自动化脚本配合人工抽查是最稳妥的方式。