首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >和AlwaysOn问题

和AlwaysOn问题
EN

Database Administration用户
提问于 2015-04-23 16:33:43
回答 1查看 2.9K关注 0票数 1

我在使用AlwaysOn和SSB设置当前环境时遇到了问题,我将尽量在这里解释:

当前环境:

代码语言:javascript
复制
Server A             Server B
database x(Pub)      database x (Sub)
                     database y

我们的应用程序运行在database x上。我们有transactional replication设置,以使database xServer B上可用。Database y用于接收来自另一个应用程序的数据。我们使用它来处理这些数据,并将必要的信息发送到database xdatabase xServer B上的副本帮助我们验证所有信息,并确保不会发送任何无效的数据。

为了在database ydatabase x之间进行通信,我们使用SSB。为什么?更快。

我们将迁移到AlwaysOn,我们希望维护当前的设置,并添加故障转移群集技术。

因此,我们来到了一个问题: AlwaysOn不允许我们选择我们想要的副本。因此它拥有一切,包括SSB对象(服务、队列等)。当我们设置数据库并尝试通信database yx时,我们在transmission_queue上得到了这个错误:

数据库x是只读模式。

因此,SSB正在使用我们在database xServer B中复制的本地服务,而不是查看我们告诉他去Server A中的database x的路线。

我们发现的另一种方法是为数据库y创建一个新实例,我不喜欢这种方法,而且从我所读到的内容来看,我们还失去了两个实例来自AlwaysOn的自动故障转移,我们必须手动完成它。

我个人的猜测是SSB总是使用本地服务,我没有办法摆脱这种情况。我考虑过的一件事是将AutoCreatedLocal路由从Server B中移除,看看它是否工作(仍然需要尝试),但是如果它工作了,我不确定当它完成故障转移时我将如何进行设置。我可能需要一个脚本来运行并创建它。

感谢你在这方面的任何帮助。

编辑以添加更多信息:按照Remus ( 使用永远--论的服务代理 )提供的链接使用AlwaysOn配置SSB。基本上,只是更改了使用AG的路由,而不是特定的服务器。

仍然有相同的错误:数据库在只读模式。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-04-23 20:09:55

您需要在x和y之间设置一个AG感知的SSB路由。参见具有永远--论可用性组的服务。即使x和y位于同一台主机上,此路由也将通过网络传递消息。当故障转移发生,x和y位于不同的主机上时,传递将不间断地进行。

我个人的猜测是SSB总是使用本地服务,我没有办法摆脱这种情况。

您应该阅读服务代理路由 (虽然它有点过时,因为它错过了AG感知的端点)。如果没有声明明确的路由,SSB使用本地服务(“自动”路由)作为最后手段。通过显式地创建一条路线,你总是有一条“出路”。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/98685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档