适用场景

国产数据库替换的重点不是「装上去」,而是「迁数据和改代码」两件事。SQL 方言、数据类型、存储过程、分页语法、大小写敏感、序列与自增、批量导入工具,每一项都可能让迁移返工。先把兼容性测试做完,再谈切换窗口。

配置步骤(金仓 KingbaseES 迁移校验)

# 1) 连接与版本
ksql -U system -d test -c 'SELECT version();'

# 2) 备份(逻辑)
sys_dump -U system -d test -F c -f /backup/kb/test_$(date +%Y%m%d).dmp

# 3) 迁移校验:行数比对
ksql -U system -d test -c 'SELECT relname, n_live_tup FROM sys_stat_user_tables ORDER BY n_live_tup DESC LIMIT 20;'

# 4) 关键表金额汇总比对
ksql -U system -d test -c 'SELECT SUM(amount), COUNT(*) FROM biz_order WHERE created_at >= current_date - 30;'

# 5) 性能与慢语句基线
ksql -U system -d test -c 'SELECT query, calls, total_time/calls AS avg_ms FROM sys_stat_statements ORDER BY avg_ms DESC LIMIT 10;'

关键参数与建议

  • 部署规范:数据盘与日志盘分离,参数按内存与并发调优,不沿用默认值上线
  • 字符集:统一 UTF-8,避免中文乱码与排序问题
  • 备份:逻辑备份 + 物理备份双轨,备份文件定期做恢复验证
  • 兼容性:明确不支持的语法清单(存储过程、分页、函数),改到应用层或数据库层
  • 性能基线:上线前做并发压测,记录 TPS/QPS、慢语句、锁等待
  • 账号权限:业务账号最小权限,禁止应用使用 DBA 账号
  • 监控:表空间水位、连接数、慢查询、主备延迟纳入统一平台
  • 迁移校验:行数、金额汇总、关键字段抽样比对三项必须一致

容易踩的坑

  • 迁移只比行数,金额与状态字段没比,业务上线后对不上账
  • Oracle 语法直接照搬,分页与日期函数报错
  • 序列与自增映射错位,主键冲突
  • 大表迁移用单线程导入,窗口时间不够
  • 没做回滚预案,迁移失败后源库已被写入
  • 忽略了统计信息收集,迁移后执行计划全变差

验证与巡检

# 校验脚本要点:行数 / 汇总 / 抽样三合一
for t in biz_order biz_customer biz_pay; do
  echo "== $t =="
  ksql -U system -d test -c "SELECT COUNT(*) FROM $t;"
done

# 主备延迟
ksql -U system -d test -c 'SELECT * FROM sys_stat_replication;'
  • 巡检:三项校验一致、主备延迟秒级、慢语句 Top10 有优化记录、统计信息定期收集

小结

国产库迁移验收:应用不改代码或改动可控、性能达标、备份可恢复、监控接入。三项数据校验(行数、汇总、抽样)全过才算迁移完成。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。