随着 Oracle 工程系统的引入,DBA 在某种程度上更接近于基础设施设计决策,并且期望至少对数据库的网络设计要求有一些意见。至少这是我发现自己的情况:)
部署 ODA 进行测试后,我发现自己采用了当前设置:
系统控制器 0 具有连接到典型边缘交换机 Catalyst 2960 系列的公共绑定接口 (bond0)。管理接口 (bond1) 连接到相同类型的第二个边缘交换机。
类似地,系统控制器 1 的公共接口连接到第二个交换机,而管理接口连接到第一个交换机。
这样,如果其中一个开关出现故障,操作员将能够通过公共界面或管理界面到达每个系统控制器以促进诊断。
在 Cisco 端,为 ODA 的 4 个绑定接口配置了 EtherChannel 组。这两个交换机单独连接到网络的其余部分,两者之间没有直接链接。
乍一看,这确实是一个合理的设计,但我对不同故障场景的思考越多,我似乎提出的问题就越多。
考虑到这些边缘型交换机本身并不是冗余的,集群能够处理由于电源故障导致的一台交换机不可用,或者一台交换机无法转发数据包似乎是相当重要的。
数据库客户端(在本例中为 Zend 服务器应用程序服务器)每个都类似地通过绑定接口连接到两个交换机中的一个。这就带来了一些关于负载均衡的问题:我对11gR2 RAC的理解,简单的连接到SCAN地址,很可能让客户端走很长一段路到主网,然后通过另一个交换机回来,这几乎不能考虑要非常有效率。
如果交换机出现故障或停止转发数据包,会发生什么情况?连接会通过 SCAN 找到可访问的 VIP 侦听器吗?RAC 是否会以某种方式检测网络故障并将 SCAN 和 VIP 移动到具有工作且可访问的公共接口的系统控制器?老实说,我看不出它会如何。
虽然客户端在故障转移场景中通过核心网络并返回很长一段路是可以接受的,但在正常生产中避免它肯定会很好。
我确信 Oracle 对这一切应该如何协同工作有一个非常清晰的认识,但恐怕我并没有那么清楚地看到这一切。
边缘级/非冗余交换机是否可以实现完全冗余?我们能否以某种方式对客户端连接在生产和故障转移情况下的路由位置添加一些控制?也许有一种很好的方法可以将两台交换机互连,以允许一台交换机上的客户端和另一台上的数据库侦听器之间直接进行通信?
在这一点上,我正在寻找应应用于典型高可用性 ODA 实现的任何最佳实践和基本网络设计注意事项。
希望这对任何面临为其 ODA 制定网络设计决策的 DBA 有用:)
更新:
ODA 在主动备份配置中配置了绑定。我认为这可能允许设置绑定上的每个接口都连接到不同的交换机,而无需任何交换机端配置。
有谁知道是不是这种情况?
[root@oma1 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: …Run Code Online (Sandbox Code Playgroud) 当对链接服务器运行一些查询时,我在 SSMS(服务器安装了 Windows Server 2008 和 Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1)中看到以下错误,特别是长时间运行的查询。
跨链接服务器从表中进行简单选择工作正常。这是一个新问题,当已经工作多年的 SP 开始出现故障时,人们注意到了这个问题。
我在服务器上运行了 Wireshark 捕获,捕获到链接服务器主机上端口 1433 的数据包。在捕获的尾部,我看到许多 (10) 个 TCP Keep-Alives 被发出(在关于错误校验和的消息之后),然后是一个 RST 数据包。RST 数据包与以下返回给客户端的错误相关。
我们网络上还有其他数据库服务器,其中链接服务器的配置相同,不会出现此问题。
我找到了一些文章,例如this和this。我们正在使用受牵连的 Broadcom NIC。烟囱卸载状态设置在服务器上启用。
我们将尝试禁用。关于故障排除的其他想法将不胜感激。
OLE DB provider "SQLNCLI10" for linked server "myServer" returned message "Protocol error in TDS stream".
OLE DB provider "SQLNCLI10" for linked server "myServer" returned message "Communication link failure".
Msg 65535, Level 16, State 1, Line 0
Session Provider: Physical …Run Code Online (Sandbox Code Playgroud) 我想知道在更改SQL Server 2008 R2盒子的IP地址之前是否有任何危险或相关预防措施。
我们使用 Windows Server 2008 R2 和 SQL Server 2008 R2 构建了一台虚拟 PC。这台机器的目的是运行一个作业来恢复备份文件(由不同的服务器复制),操作它,再次备份它,然后将它复制到其他服务器。我们已经在我们的测试/开发 DMZ 中运行了几次,现在正在考虑部署。
最简单的选择是重新 IP。服务器名称将保持不变。我的问题是一位同事建议这是不安全的(重新 ip 一个 SQL Server)。我的问题是
a) 对于我正在使用的操作系统和 SQL,这是真的吗?(赢得 2008 R2 和 SQL 2008 R2?)
b) 对于 OS 和/或 SQL 的任何其他组合是否如此?
c) 在准备过程中,我们有什么特别需要做的吗?
到目前为止,我的研究表明它会很好,但我比那些社交 MSDN 人员更信任 DBA StackExchange 的人。
http://www.sqlservercentral.com/Forums/Topic1164450-391-1.aspx
我们正在将我们的 SQL Server 实例备份到网络共享,但我们的网络管理员想要尝试通过不同的网段从备份中转移带宽。我很好奇是否可以将 SQL Server 配置为通过辅助 NIC 运行所有备份?
我们的大多数服务器都是虚拟化的(因此提供 NIC 不是问题),并且我们的整个基础架构都在 SQL Server 2008 R2、2012 和 2014 上运行。
我们有两台服务器(SQL-ATL01、SQL-ATL02)组成故障转移群集,每台服务器都作为 SQL Server 高可用性组 (HAG) 的一部分运行。每个服务器有两个网卡。一个是直接连接到另一台服务器的 10Gbit 卡,用于同步 192.168.99.x 子网上的 HAG。另一个是 1Gbit 卡,用于将 DB 服务器连接到交换机,以便与 10.0.0.x 子网上的应用服务器进行通信。侦听器指向 192.168.99.x 子网。
我们想在集群的另一个物理位置添加第三台服务器 (SQL-NYC01) 并将其作为 HAG 的异步副本部分运行,但 VPN 仅路由 1Gbit 网络子网上的流量。
有没有办法设置故障转移集群和高可用性组告诉它:
或者我们是否必须让所有副本流量在同一个 IP 地址/子网上进出?
我构建了一个在静态端口 50101 上运行的命名实例。
网络人员已打开防火墙上的端口以允许传入连接。我也要求他们打开 UDP 端口 1434,因为我相信 SQL 浏览器服务在此端口上运行,并且需要将命名实例的正确端口传递回请求连接。即使命名实例在静态 TCP 端口上运行。
那是对的吗?
SQL Browser / UDP 1434 不只是用于动态端口,对吧?
如果连接字符串中的端口不是明确的,它需要打开吗?
真的需要结束这场争论!
议员
为了非常灵活并更轻松地将数据库移动到不同的服务器,我们提出了为每个数据库使用别名的想法。因此,通过简单地更改 DNS 条目,我们可以将所有查询路由到不同的数据库服务器,而无需更改连接字符串或重新部署相应的客户端应用程序。
澄清:
每个数据库我们都会有一个别名。因此,如果将数据库移动到不同的服务器,只需更改其 DNS 别名。
例如:
因此,假设 db1 已从 server1 移至 server2,则无需更改连接字符串。只需要更改 DNS 别名条目,转发到 server2 而不是 server1。
这有什么已知的缺点吗?
我在一个非常高的安全域上有两台 Windows 7 机器,一台充当服务器,另一台充当客户端。
每个盒子都有一个 SQL Server Express 2005 数据库和应用程序“A”,但是我只使用其中一个来存储数据(服务器),客户端计算机仅使用应用程序“A”和一个系统数据源来连接到服务器机器数据库。
我的问题是应用程序“A”表现得很有趣,我想看看数据从服务器计算机数据库到达客户端计算机需要多长时间。
我通常只是从客户端 ping 服务器,但由于这个高安全域上的 GPO 限制,我无法...
显然存在防火墙例外,允许从服务器 -> 客户端进行连接。我可以从客户端计算机运行查询来提供响应时间/任何其他有用的数据吗?
我必须将 IPv4/v6 地址和网络(CIDR 表示法)存储在 MySQL 数据库中。不幸的是,我不得不使用 Mysql。
所以,我正在寻找inetPostgreSql 类型的等效项。:
inet 类型在一个字段中包含 IPv4 或 IPv6 主机地址,以及可选的子网。子网由主机地址中存在的网络地址位数(“网络掩码”)表示。如果网络掩码为 32,地址为 IPv4,则该值不表示子网,仅表示单个主机。在 IPv6 中,地址长度为 128 位,因此 128 位指定唯一的主机地址。
此类型的输入格式为 address/y,其中 address 是 IPv4 或 IPv6 地址,y 是网络掩码中的位数。如果缺少 /y 部分,则 IPv4 的网络掩码为 32,IPv6 的网络掩码为 128,因此该值仅表示单个主机。在显示时,如果网络掩码指定了单个主机,则 /y 部分被抑制。
我知道 Mysql 5.6 INET_ATON(), INET_NTOA(), INET6_ATON(), INET6_NTOA()的以下功能。但我使用 Mysql 5.5 ......所以,忘记 INET6_xxxx。
我也知道以下问题“存储 IP 地址”,但它不涉及网络 CIDR 表示法。
您将如何inet在 Mysql 5.5 中实现等效的类型?
我们遇到了与 SQL Server 的连接问题,经过一周的深入研究后,我能够将其确定为 Winsock 限制。这是描述:
现在,在工作日的某些时间点,我们会遇到流量突发,这实质上使新连接速率飙升至每秒 2500-3500 次连接尝试,并持续大约 2-3 秒。
这就是乐趣开始的时候:客户端在相同的 2-3 秒突发期间收到连接错误。
我们已经确认和所做的:
network ×10
sql-server ×6
connectivity ×2
backup ×1
connections ×1
datatypes ×1
dns ×1
mysql ×1
oracle ×1
rac ×1
tcpip ×1