我在 AlwaysOn 可用性组中设置了 2 个 SQL Server 和一个数据库。
我还设置了针对数据库运行的作业。在故障转移期间,如何确保作业将继续在辅助服务器上运行?我是否需要在两台机器上安装作业和 SSIS 包并在辅助机器上手动禁用它们......然后在故障转移的情况下手动启用它们?还是有内置功能来处理这个?
我在 AlwaysOn 可用性组中设置了 2 个 SQL Server 和一个数据库。
我还设置了针对数据库运行的作业。在故障转移期间,如何确保作业将继续在辅助服务器上运行?我是否需要在两台机器上安装作业和 SSIS 包并在辅助机器上手动禁用它们......然后在故障转移的情况下手动启用它们?还是有内置功能来处理这个?
是的,如果它们是主副本,您将需要在您希望这些特定作业运行的任何其他副本上创建作业。
您需要为每个 SQL Server 代理作业是否/何时运行创建自己的逻辑。例如,您是否只想在当前实例是特定可用性组的主副本时才运行作业?你需要把它放到你的工作中。它不能被自动覆盖,因为这会带走 AlwaysOn AG 的灵活性。是否要在辅助副本上禁用它们完全取决于您、这些作业的作用以及您希望它们运行的方式/时间/是否运行。
请记住,辅助副本服务器不仅仅是等待故障转移的备用服务器。它可以是一个功能齐全、可访问的服务器。正因为如此,让每一份工作都处于闲置状态将是一种巨大的残疾。
所以,是的,您需要将我们的作业推送到其他副本,并使用一些逻辑来判断作业在启动时是否应该继续执行。
例如,备份作业可以通过确定当前副本是否是特定数据库的首选副本来利用sys.fn_hadr_backup_is_preferred_replica函数。这将得出您如何为备份首选项设置可用性组。
我遇到了一些类似的挫败感,因为在线图书上的文档说“在安排你的工作时,添加逻辑以仅在主服务器上执行”,但没有说明如何这样做。sys.fn_hadr_backup_is_preferred_replica 非常适合备份作业,但对于“主要”或您有什么似乎没有类似的功能。幸运的是,您可以从以下内容中获取该信息:
这只会让您知道当前数据库的角色。