我正在使用依赖于 Oracle 数据库的交易应用程序。
数据库崩溃了两次,企业主想要一些解决方案,即使数据库崩溃,应用程序仍然可以工作。
我的团队负责人介绍 Cassandra NOSQL 作为一种解决方案,因为它没有单点故障,但是这个选项将使我们从传统的关系模型转移到我认为是一个缺点的 NOSQL 模型。
我的问题是,有没有办法避免传统关系数据库管理系统(如 Mysql、postgreSQL、......等)出现单点数据库故障?
我正在使用依赖于 Oracle 数据库的交易应用程序。
数据库崩溃了两次,企业主想要一些解决方案,即使数据库崩溃,应用程序仍然可以工作。
我的团队负责人介绍 Cassandra NOSQL 作为一种解决方案,因为它没有单点故障,但是这个选项将使我们从传统的关系模型转移到我认为是一个缺点的 NOSQL 模型。
我的问题是,有没有办法避免传统关系数据库管理系统(如 Mysql、postgreSQL、......等)出现单点数据库故障?
听起来您只需要一个 Oracle 数据库实例集群,而不仅仅是一个实例,例如Oracle RAC。
如果您的 Oracle 服务器离线解决方案是使用 Cassandra,如果 Cassandra 集群出现故障会发生什么情况?您是否真的处于需要重写和重新架构整个应用程序以使用不同类型的数据存储的情况下,只是为了避免 Oracle 的停机时间?我怀疑这仅适用于使用量和负载量很大的应用程序,任何停机时间都会花费大量金钱(而不仅仅是让业务人员对他们的老板感到尴尬)。
有没有办法使用传统的关系 DBMS 避免单点 DB 故障
不,那是不可能的。仅仅是因为当一个节点死亡时。它不见了。
任何容错系统都将使用多个相互复制的节点。您仍然可以使用传统的 RDBMS,但您需要配置镜像以使系统能够容忍节点故障。
NoSQL 不是唯一可能的解决方案。您可以使用 MySQL 设置复制:
http://dev.mysql.com/doc/refman/5.0/en/replication-solutions.html
和
http://mysql-mmm.org/
以及关于故障转移的讨论:
http://serverfault.com/questions/274094/automated-failover-strategy-for-master-slave-mysql-replication-why-would-this