扩展 mysql 数据库的方法或工具有哪些。我们的 mysql 数据库每天都在增加。我们只为其分配了固定大小的硬盘,所以我担心当硬盘容量已满时,我们需要重新定位或增加硬盘大小。
使用 RAID 似乎是一个好主意,但它的大小仍然固定。我们需要一个可扩展的 MySQL 数据库系统。
目前我只能将 Hadoop 视为一种解决方案。
对于我们来说,理想的解决方案是当 HDD 达到其极限时,我们只需在机器上添加另一个 HDD,然后 MySQL 就会将其识别为一个,然后我们就无法在服务器上添加任何 HDD,将设置一个新的服务器,这将增加 MySQL 数据存储空间的总大小。
答案1
三种最流行的扩展方法是主从复制、分区和分片。主从复制仅在您想要扩展读取时才有效。它不适用于扩展数据库大小或写入。分区是一种将大表存储在多个物理位置(多个 HDD 上)的方法。分片可以被视为由应用程序而不是 MySQL 服务器执行的全局分区。基本上,分片是一种跨多个不直接耦合的 MySQL 数据库存储类似数据的方法。前两种方法由 MySQL 内部支持,分片应由应用程序开发人员在应用程序级别执行。看起来您应该使用分片,因为分区不能分布在多个服务器上,并且有一定的限制。
答案2
集群通常用作性能解决方案,但是我对您所写内容的理解是,问题在于数据库的大小?
使用 NoSQL 数据库通常是出于性能原因(MySQL 复制设置起来很简单 - 因此在可用性方面没有太大区别),但你会失去巨大的功能量。Hadoop 不会解决您的数据量问题,并且可能意味着您需要重写大量代码。
如何管理数据量在很大程度上取决于应用程序和数据的性质 - 您可以删除旧数据吗?您可以离线迁移数据吗?您可以整合旧数据吗?
对于我们来说,理想的解决方案是,当 HDD 达到极限时,我们只需在机器上添加另一个 HDD,然后 MySQL 就会将其识别为一个
虽然您可以简单地将磁盘添加为 RAID-0 或 JBOD 阵列,但这是一种非常混乱的做法 - 您将从单点故障转变为多点故障。
类似地,您可以挂载磁盘并迁移单个表文件(使用来自原始位置的符号链接),但这假设您没有运行单文件 innodb 后端。这与使用 RAID-0/JBOD 一样糟糕。
对于事务型 DBMS,镜像 (RAID-1) 提供了巨大的性能优势 - 但不会增加存储量。因此,我建议计划将存储量从 1 个驱动器增加到 4 个驱动器(配置为镜像条带集对)。