(2022.07.22 Fri)
关系型数据库迁移后的检验
对象完整性检验
可检测是否所有的数据库对象都已迁移,包括
- 数据库、表
- 视图
- 存储过程
- 函数
- 触发器
- 分页
等。
检测迁移后的对象是否存在、对象的信息,并用诸如diff
之类的命令与原数据的相应信息做比较。
MySQL中的命令 -
查看数据库和表
SHOW databases;
SHOW tables;
SELECT * from information_schema.TABLES;
SHOW columns FROM <tablename>; // 列出列属性信息
DESCRIBE <tablename>;
查看视图
SELECT * from information_schema.VIEWS; //视图
查看存储过程和函数
// 1
select <name> from mysql.proc where db = <db_name> and `type` = 'PROCEDURE'; //存储过程
select <name> from mysql.proc where db = <db_name> and `type` = 'FUNCTION'; //函数
// 2
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
// 3 查看创建的代码
SHOW CREATE PROCEDURE <procedure_name>;
SHOW CREATE FUNCTION <func_name>;
查看触发器
// 1
SHOW TRIGGERS [FROM <db_name>] [LIKE <expr>];
SHOW TRIGGERS \G; // 加入\G命令,返回结果展示工整
// 2
SELECT * FROM information_schema.triggers \G; // 查看所有触发器
SELECT * FROM information_schema.triggers WHERE trigger_name= <trigger_name> \G;
查看分页
SELECT * FROM tab LIMIT <starting_line>, <total_lines>;
对象的完整性检测完成,接下来检测数据表格中的总数是否与迁移前的相同。比如对迁移后的表格做count
操作,计算总行数。
此外还可查看表格中的索引是否一致,
SHOW INDEX FROM <table_name> \G;
对数据库运行业务查询
对迁移前后的数据库做业务查询,看结果是否正常。
使用数据库提供的内置工具作对比
不同的数据库产品提供了相应的工具做迁移前后的比较
- Oracle:dbms_comparison包、minus相减法、dbms_utility.get_hash_value计算hash值、 PL/SQL Developer工具等
- SQL Server:Visual Studio工具,SQL Server Data Tools (SSDT)、SQLDiff或tablediff.exe工具针对单表比对、Red Gate的SQL Compare工具,需要注意: 对于 SSDT工具来说,需要对比的2个库都必须有主键或唯一键才能进行比对
- MySQL:mysqldiff + mysqldbcompare
Reference
1 网络文章整理
网友评论