我们正在寻找 mysql 集群的替代品 - Oracle 或 pgsql。我阅读了有关 Oracle 11 数据库系统中 HA 的整个文档,但我真的无法完全理解它。我所理解的是,RAC 正在实现 HA。背后是否有像 mysql-proxy 这样的代理?或者集群正在使用一些类似心跳的软件更改 IP 地址?或者应用程序必须在连接字符串中具有另一个目标,以防主目标发生故障?我需要这个,这样我就可以评估重新编码核心应用程序需要多少努力。
答案1
Oracle RAC 的工作原理有点复杂,但简单来说如下:
Oracle RAC 由 Oracle 数据库节点组成。每个节点都有一个本地监听器,整个集群有一个或多个 SCAN(单客户端访问名称)监听器。每个监听器都有自己的虚拟 IP 地址。如果某个主机死机,则死机主机的监听器地址将由其他主机接管。主机应该有一个专用的互连接口,心跳通过该接口传输,服务器之间的同步也通过该接口完成。
客户端只需连接到 SCAN 侦听器,并且该侦听器的 IP 地址是固定的(如果集群有更多 SCAN,则 DNS 应将名称解析为这些地址,使客户端使用循环法连接到 SCAN)。当客户端连接时,集群会将客户端重定向到最佳本地侦听器,但为此,客户端不需要任何进一步的设置。
Oracle 有相当好的关于 RAC 的文档,但实施和管理 RAC 并不简单(至少可以这么说)。如果您想使用 RAC,您应该听取 pfo 的建议并聘请专业人士。
答案2
RAC 就是 RAC / 它是一个黑盒子。所有 HA 内容都在 RAC 和驱动程序级别处理。应用程序重新编码只是因为 Oracle 不是 MySql 才有必要。