我正在考虑为我们的 SQL Server 集群之一使用 RAID0 设置。我将概述情况并寻找为什么这可能是一个坏主意。此外,如果您有用例、白皮书或其他文档,您可以就这个主题向我指出,那就太好了。
我们在 2 个数据中心有 3 台服务器,它们是 SQL 集群的一部分。它们都在一个可用性组中运行 SQL Server。主节点旁边有一个副本,另一个位于另一个数据中心。他们正在运行具有自动故障转移功能的同步复制。所有驱动器都是企业级 SSD。他们将运行 SQL Server 2017 或 2019。
我认为与其他方法相比,在 RAID0 阵列上运行它们会有很多好处,而且几乎没有真正的缺点。我目前看到的唯一负面影响是主服务器上缺乏冗余,因此失败率增加。作为优点:
如果驱动器发生故障,而不是在有人收到通知并对其进行手动操作之前以缓慢、降级的状态运行,则服务器将立即无法保持完整的操作能力。这将有一个额外的好处,即通知我们故障转移,因此我们可以更快地调查原因。
它降低了每 TB 容量的整体故障几率。由于我们不需要奇偶校验或镜像驱动器,因此我们减少了每个阵列的驱动器数量。驱动器越少,驱动器故障的总机会就越小。
这更便宜。为我们所需的容量需要更少的驱动器显然成本更低。
我知道这不是传统的商业思维,但有什么我没有考虑的吗?我喜欢任何赞成或反对的意见。
我不是为了提高查询性能而尝试这样做,但如果有有意义的,请随时指出它们。我主要担心的是没有考虑或解决我没有想到的可靠性或冗余问题。
操作系统位于单独的镜像驱动器上,因此服务器本身应该保持正常运行。这些驱动器之一可以更换并再次镜像。它很小,除了系统数据库之外没有任何数据库文件。我无法想象这需要超过几分钟。如果其中一个数据阵列出现故障,我们会更换驱动器、重建阵列、恢复并与 AG 重新同步。根据我的个人经验,恢复比 RAID5 驱动器重建快得多。我从来没有遇到过 RAID1 故障,所以我不知道重建是否会更快。恢复将来自备份并前滚以匹配主服务器,因此主服务器上的负载增加应该非常小,仅将日志的最后几分钟与恢复的副本同步。
在阅读Grant Friitchey 编写的SQL Server Query Performance Tuning 时,我发现很难理解以下部分:避免 RAID 5 用于 t-logs 因为,对于每个写入请求,RAID 5 磁盘阵列产生的磁盘 I/O 数量是比较的两倍到 RAID 1 或 RAID 10。
我知道 RAID 5 通过奇偶校验功能区别于其他 RAID。这意味着如果某些驱动器出现故障,则可以从其他驱动器恢复丢失的数据。我想了解为什么不建议将 RAID 5 用于事务日志文件。书中的解释对我来说还不够。也许有人可以向我解释或提供一篇好文章。
performance transaction-log sql-server-2014 raid query-performance performance-tuning
我希望我在正确的社区中提问,如果没有,任何建议将不胜感激。
我正在做一份调查论文,我正在对擦除编码和复制技术进行比较。在这个阶段,我正在比较它们的具体参数如下。
我试图构建的表格处理区分哪种技术在以下方面更好的参数:存储效率、可用性、持久性、编码时间、故障延迟和重建成本。
由于在发生故障时复制在读取性能方面更快,所以我说复制技术在故障时具有更高的延迟是否正确?和编码时间相同,说复制具有较高的编码时间是否正确,因为它在写入时具有更好的性能时间?
纠删码系统失败的重建成本是否高于复制?它是否涉及更多的磁盘 I/O?如果故障是暂时的或永久性的,它会有所不同吗?
如果我根据瞬态和永久性故障比较上述所有参数,是否会提供更多信息?
如果我将它们进行如下比较是否正确?
纠删码: 更高(持久性、存储效率、可用性)和更低(编码时间、故障延迟、重建成本)
复制:*更高(编码时间、故障延迟、重建成本)和更低(持久性、存储效率、可用性)
我在 oracle linux 5.8 上有 oracle ASM 11gR2,我想安装 oracle 数据库。我有一些磁盘,我想使用 oracle ASM 或 RAID 10 的冗余策略。不知道哪个更好?Oracle ASM 冗余还是 RAID 10?
专门运行 PostgreSQL 11.2 服务器(带有 TimescaleDB 扩展)的 Ubuntu 18.04 服务器将很快耗尽磁盘空间,因此需要向计算机添加新的 SSD 磁盘以支持不断增长的数据库大小。
数据预计将以相同/更高的速率继续增加,因此需要不断增加存储硬件,直到机器用完 2.5 英寸驱动器托架。只有这时才会考虑将数据库分布在多台机器上,因为所涉及的复杂性增加。
想法
联合文件系统mergerfs可以将驱动器集中在一起,轻松解决存储扩展问题。但这会增加数据库操作的延迟,因此不建议这样做。可以通过底层 RAID-1/5/6/10 或使用 SnapRAID 添加冗余。
RAID-0 和 RAID-10 允许将 RAID 阵列扩展到新添加的驱动器中,并通过条带化提高性能。然而,每个添加的驱动器都会增加一个故障点。此外,许多人声称镜像 SSD 的用途有限,因为RAID-0 中的两个 SSD 可能会同时发生故障。所以也许这意味着 RAID-10 并不比 RAID-0 更好。此外,故障率随着每增加一个 SSD 而线性增加。
RAID-5/6 由于奇偶校验计算和写入 2 个驱动器而降低了性能,从而使有效 IOPS 降低了 75%。对于数据库来说似乎是一个糟糕的选择。
PostgreSQLTABLESPACES可用于将每个表分配到特定驱动器。然而,使用表空间会使恢复变得非常复杂。此外,是否可以在新驱动器上创建新表空间并让 Postgres 自动决定将新记录写入何处?
ZFS、BTRFS?对他们不熟悉,愿意探索他们是否合适。
问题: 2020年推荐的PostgreSQL机器扩容方法是什么,如果扩容频繁(一年1-2次),性能应该不会受到太大影响,恢复也不会太复杂可能会导致数据丢失?
RAID-10 对我来说似乎是一个好主意,但 RAID-1 的使用似乎有限,同时会导致“损失”一半的磁盘空间,随着驱动器数量的增加,故障点也会增加,情况会变得更糟。
由于预算限制,我们无法一次性将 2U 机箱中的 16 个驱动器托架全部装满 SSD,因此必须逐步完成。
任何意见是极大的赞赏!
编辑:在研究了 ZFS 之后,这似乎可能是我的案例的解决方案之一。
仅包含镜像 ZFS vdev(每个 …
根据最佳实践,建议将所有tempdb(不仅仅是 tempdb)文件移动到不同的物理磁盘中。
我有一个虚拟服务器,最初有来自同一RAID 10池的 4 个 LUN。在卷管理器的帮助下,我将这 4 个 LUN 转换为 4 个不同的卷。
现在的问题是,移动tempdb到单独的卷中是否会产生任何影响,或者就性能而言,将它们与其他 SQL Server 文件保留在一起就可以了?
raid ×6
sql-server ×2
backup ×1
oracle-asm ×1
partitioning ×1
performance ×1
postgresql ×1
replication ×1
scalability ×1
tablespaces ×1
tempdb ×1
timescaledb ×1