上下文:我们正在使用MariaDB Gallera集群(仅有)2个主节点用于Web应用程序。 昨天晚上,我们有一个电源故障,现在我们似乎无法恢复数据,发现两个节点上的数据库已损坏。 我们对这个设置的最初印象是,如果一个节点出现故障,另一个节点将很快作为主节点。
我的问题是,
有没有办法设置一个集群,所以总有一个备份节点会自动复制,如果其中一个节点closures? 特别是如果有电源故障。
图库集群的正确实现是什么?
我们正在使用一个有5个节点的Galera集群,在它们前面有一个负载平衡器,它连续检查所有的节点。 我们的configuration是,我们只有一个节点为来自负载均衡器的连接提供写入和读取目标,其他节点是热备份。 但是,当然Galera也支持多主读写,所以你可以调整到你喜欢的。
最小簇大小需要为3,因为当节点之间的连接由于任何原因而断开时,它必须是奇数以避免脑裂。 (您也可以使用仲裁器,但更简单的设置只是使用至less3个适当的群集节点。)我们使用5个节点,以便更轻松地升级群集并提高弹性。
Galera还支持WAN上的集群,但是在服务器设置中需要进行一些额外的调整,以免破坏服务器的性能。 通常情况下,具有冗余networking和电源的3个节点以上的集群应该适用于这些应用程序。
在你的问题中,你没有说的是你在Galera集群上使用的数据库引擎的types。 看到你有腐败,我想可能是MyISAM? 如果是这样,你需要迁移到使用InnoDB,因为MyISAM实际上不被Galera支持。 它还具有其他一些其他优点,如更具弹性的写入,避免数据损坏,即使在不太可能发生的情况下,集群实际上应该分离,并且需要恢复数据库。
第一个问题的答案与大多数计算问题一样:是的,如果你有足够的资源和时间。 如果集群处于某种数据中心环境,那么希望能有某种带外pipe理接口,如专用pipe理网卡和/或KVM系统。
现代数据中心pipe理解决scheme(如英特尔的Datacenter Manager或Raritan Datacenterpipe理系统)使用户能够设置策略,以在发生电源故障后自动重启系统,发送通知,甚至可能开始启动异地或基于云的故障转移节点。 但是,安装和configuration这类安全网的各个方面需要很大的成本和专业技术水平,因此需要大量的设备,彻底的testing和准备是困难的,没有一些停机时间。
另一个常见的节点pipe理工具是Nagios ,它允许远程电源pipe理和控制。
除了带内和带外pipe理选项之外,使用诸如Salt或Chef之类的CM工具来设置configurationpipe理服务器将有助于确保节点configuration正确,并且极大地简化了configuration新节点的任务,甚至在奇怪的或远程的环境。 存储和数据库要求以及networking环境将有助于确定适当的集群体系结构,特别是在存储,电源和备份方面。 在某些情况下,在SUSE系统上生成kickstart克隆或类似AutoYaST的类似安装辅助工具可能很有价值。 这将允许您快速构build干净的节点,并在发生硬件故障时从快照或备份中导入必要的数据。
另一种select是保存使用KIWI Build系统构build的导入,装载或复制必要数据的自定义系统映像。 使用KIWI将允许您创build可以在各种场景中部署的映像,包括VM,PXE,可启动DVD / USB等。 使用KIWI或其他一些操作系统构build工具为您的需求devise完美的自定义图像可能会因多种原因而受益匪浅。
对于第二个问题的更具体的描述是很困难的,不知道你认为什么长度是可以接受的 具有附加远程备份,自动故障转移和恢复的多站点高可用性群集所需的设置和资源与“高可用性”意味着群集构build所在的群集所需的设置和资源大不相同电力和互联网,它需要工作。 希望有一些在那里的信息是有用的。