适用场景
国产数据库替换的重点不是「装上去」,而是「迁数据和改代码」两件事。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 有优化记录、统计信息定期收集
小结
国产库迁移验收:应用不改代码或改动可控、性能达标、备份可恢复、监控接入。三项数据校验(行数、汇总、抽样)全过才算迁移完成。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。