将 IBM Db2 LUW 的管理员任务调度作业计划重构为 Amazon RDS for MySQL
  • 10

从 IBM Db2 LUW 到 Amazon RDS 迁移管理任务调度作业计划

关键要点

本文介绍如何将 IBM Db2 LUW 的管理任务调度器 (ATS) 的作业计划迁移到 Amazon RDS包括 MySQL、MariaDB 或 Amazon Aurora MySQL 兼容版。Db2 LUW 的 ATS 允许自动化和调度数据库内部的管理任务,包括备份、数据导入和导出等常规操作。Amazon RDS 提供事件调度器以支持定期执行 SQL 操作。文章讨论了在 Amazon RDS 上如何启用事件调度器、添加、更新、删除事件以及事件调度器与 Db2 LUW ATS 之间的对比。

IBM Db2 LUW 中的 管理任务调度器ATS是一个可以自动化和调度数据库中管理任务的工具,如备份、维护活动、数据导入和导出等。

Db2 LUW ATS 的主要功能包含:

任务调度:ATS 允许您自动化 Db2 LUW 中的例行管理任务,简化并根据预定义的时间表自动执行这些任务。灵活的调度选项:ATS 提供灵活的调度框架,允许您定义任务运行的频率和时间,可以设定特定间隔如每天、每周或每月或使用类似 cron 的表达式自定义调度。日志记录和监控:ATS 维护任务运行的日志,包括开始时间、结束时间和状态信息,方便您跟踪和审计任务运行历史。

在本文中,我们将展示如何使用 IBM Db2 LUW 的 ATS 进行调度并将其迁移到目标数据库,包括 Amazon RDS for MySQL、Amazon RDS for MariaDB 或 Amazon Aurora MySQL 兼容版。

Db2 LUW 的管理任务调度器

Db2 LUW 中的管理任务调度器内置于数据库中,可以通过命令行接口访问。它使数据库管理员DBA能够定义任务、设置调度参数并管理任务的执行。

任务的运行由 Db2 自治计算守护程序 (db2acd) 负责,该守护程序每 5 分钟轮询活动数据库中的新任务。当任务调度时间到达时,该守护程序会调用相应的任务。

默认状态与初始化

默认情况下,ATS 在 Db2 LUW 中是禁用的。您可以通过设置注册变量 DB2ATSENABLE 来启用它。此外,如果尚未创建 SYSTOOLSPACE 表空间,则需要先创建它,因为 Db2 依赖此表空间来存储历史数据和配置信息。

使用 SQL 例程管理任务

Db2 LUW 提供以下 SQL 例程,便于您调度和修改任务:

ADMINTASKADD:添加新任务的过程。ADMINTASKREMOVE:删除现有任务的过程。ADMINTASKUPDATE:更新任务的过程。

添加、更新或删除任务

任务需要被封装在 SQL 存储过程中,并作为输入提供给 ATS 过程。例如,以下命令添加一个每 6 小时收集 SALES 表统计信息的新任务:

sqlCALL SYSPROCADMINTASKADD (statssales CURRENTTIMESTAMP NULL NULL 0 /6 SYSPROC ADMINCMD VALUES(RUNSTATS ON TABLE SALES WITH DISTRIBUTION TABLESAMPLE BERNOULLI(30)) NULL NULL)

您可以使用 ADMINTASKLIST 视图列出数据库中创建的所有任务:

sqlSELECT FROM systoolsADMINTASKLIST

列出任务状态

使用 ADMINTASKSTATUS 视图可以查看数据库中所有任务的状态:

sqlSELECT FROM systoolsADMINTASKSTATUS

更新任务

要更新任务可以使用 ADMINTASKUPDATE 过程。例如,调整之前创建的任务的调度,使其每 12 小时运行一次:

sqlCALL SYSPROCADMINTASKUPDATE (statssales NULL NULL NULL 0 /12 NULL NULL)

删除任务

删除任务有两种选择:您可以仅删除任务的状态以保留实际任务持续运行,或直接删除任务本身。下面的命令将删除所有早于当前时间戳的任务状态:

sqlCALL SYSPROCADMINTASKREMOVE(statssales CURRENTTIMESTAMP)

您还可以通过以下命令从调度中删除任务本身:

sqlCALL SYSPROCADMINTASKREMOVE(statssales NULL)

Amazon RDS 的事件调度器

对于可以通过 UNIX/LINUX 的 cron 功能解决的用例,您可以将调度作业迁移到 MySQL 或 MariaDB,并使用事件调度器。MySQL 和 MariaDB 都允许您以 SQL 语句或更复杂的业务逻辑的方式运行任务,通过配置的事件在您的数据库实例中进行定期管理。

启用事件调度器

您可以按照以下步骤在 Amazon RDS for MySQL 或 Amazon RDS for MariaDB 中启用事件调度器:

在 Amazon RDS 控制台中,选择 参数组。选择您的参数组,并在 操作 菜单中选择 编辑。为参数 eventscheduler 选择值 ON,并选择 保存更改。

该参数是动态的,无需重启实例,启用后就可以配置事件调度器。

下方的命令用于查看数据库服务器中的 eventscheduler 守护进程状态:

sqlSHOW PROCESSLIST

风驰加速器fengchi

添加、修改或删除事件

您可以使用 CREATE EVENT 语句在数据库中添加新事件:

sqlCREATE EVENT salesstats ON SCHEDULE EVERY 6 HOUR COMMENT Analyzes the SALES table every 6 hours DO ANALYZE TABLE db2inst1SALES

列出事件

您可以使用 SHOW EVENTS 命令或通过 INFORMATIONSCHEMA 下的 events 表查看事件详情。

更新事件

您可以使用 ALTER EVENT 语句修改事件的调度或 SQL 语句等特性:

sqlALTER EVENT salesstats ON SCHEDULE EVERY 12 HOUR COMMENT Analyzes the SALES table every 12 hours

将 IBM Db2 LUW 的管理员任务调度作业计划重构为 Amazon RDS for MySQL

删除事件

使用 DROP EVENT 语句可以删除不再需要的事件:

sqlDROP EVENT salesstats

使用事件调度器自动化常见任务

事件调度器是自动化数据库特定任务的绝佳方式,以下是一些可以通过事件调度器实现的常见任务:

数据维护:定期执行数据清理、归档等任务,以保持数据库整洁并优化性能。数据聚合:自动化数据汇总和报告生成,减少手动干预。表分区维护:定期添加或移除表分区,避免人工干预。收集表统计信息:通过预定义的计划定期收集大型表的统计信息,保持查询性能良好。用户权限管理:根据预定计划自动化用户访问控制任务。

Db2 ATS 与 MySQL 或 MariaDB 事件调度器的比较

描述Db2 LUWMySQL 或 MariaDB启用方式设置 DB2ATSENABLE 注册变量为 ON设置 EVENTSCHEDULER DB 参数为 ON添加新任务使用 ADMINTASKADD 过程使用 CREATE EVENT 命令更新存在的任务使用 ADMINTASKUPDATE 过程使用 ALTER EVENT 命令移除现有任务使用 ADMINTASKREMOVE 过程使用 DROP EVENT 命令调度格式使用 CRON 表达式使用时间戳函数任务格式必须封装在过程内可以是 SQL 语句或复合语句列出任务使用 ADMINTASKLIST 视图使用 INFORMATIONSCHEMAEVENT 表或 SHOW EVENTS 命令监控任务状态使用 ADMINTASKSTATUS 视图使用 EVENTSLASTEXECUTED 或错误日志

限制

使用 AWS 上的事件调度器时的一些限制:

没有对因之前调度运行时间过长而导致的事件重复运行的保护。无法查看事件的历史运行状态。如果事件失败,记录只存在于数据库的错误日志中。

结论

本文讨论了在从 Db2 LUW 迁移时如何使用事件调度器。我们比较了 Db2 和 MySQL 或 MariaDB 数据库之间的选项,并讨论了目标数据库的某些局限性。

如有任何评论或问题,请告诉我们,我们非常重视您的反馈!