美文网首页
数据库迁移后的检验,2022-07-22

数据库迁移后的检验,2022-07-22

作者: Mc杰夫 | 来源:发表于2022-07-21 11:43 被阅读0次

(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 网络文章整理

相关文章

网友评论

      本文标题:数据库迁移后的检验,2022-07-22

      本文链接:https://www.haomeiwen.com/subject/fjjmirtx.html