AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 204556
Accepted
Mohd Abdul Mujib
Mohd Abdul Mujib
Asked: 2018-04-21 10:36:33 +0800 CST2018-04-21 10:36:33 +0800 CST 2018-04-21 10:36:33 +0800 CST

MySQL XtraDB/Galera 集群高可用性 RamDisk *SuperFast*

  • 772

好的,所以这将是一个推测性问题,主要是面向设计的,而且是一个相当长的问题。如果我是你,我会喝杯咖啡。

前言:所以我一直在研究数据库,想要一个非常快速(就像真的一样)的数据库(引擎),具有以下必备条件,

  1. 酸合规
  2. In-Memory-ish 用于超快的 IO。
  3. 持久性(嗯......呃)
  4. 可扩展为集群/主从/等
  5. 高可用性(HA)
  6. MySQL直接替换
  7. 开源
  8. 应在商品服务器 (IYKWIM) 上运行

所以从我过于乐观的要求列表来看,你已经跳到......嗯

如何加速mysql,慢查询

好吧,开个玩笑吧,我知道如果innodb_buffer_pool_size调整得当,大部分时间它都会用完内存,但我说

它不是在内存中哟!

但是你会说嘿,它的 2k18 人可能已经创建了一些 100% 的内存数据库,对吧?嗯...实际上他们有,但每个人都有自己的权衡。

  1. VoltDB Community Edition 一切似乎都很好,直到您意识到它不是替代品。它需要 java 中的一些存储过程式命令,这需要您重写整个应用程序或至少 php 应用程序的 db 层/驱动程序/等。所以?交易破坏者!

  2. MemSQL ,嗯,这似乎是我们“有史以来最佳开源内存可扩展 SQL Acid DB ”竞赛的有力竞争者。只为,memSQL 老大就像...

MemSQL 服务器要求

不用说,memSQL 至少需要 4 个内核和 8Gigs 的 RAM,推荐的4 个内核和每个内核32 gigs 是非常疯狂的!!!!此外,memSQL 的社区版本(顺便说一句,它不是完全开源的!它只是免费的)不支持高可用性,因为它是一项付费功能。还有它的NoSQL。所以?交易破坏者!

  1. 所有其他 NoSQLish 数据库,如 membase、Redis、Memcached 等,都被排除在外。

所以现在我的天才想法!

我想知道我们是否可以运行一个 XtraDB/Galera 集群,所有实例都从带有常规快照的RAMDisc运行?

它勾选了所有复选框。

听我说完,首先向房间里的大象讲话,我们知道从 RAMDiscs 运行完整的 mysql Dbs 是相当嗯......大胆,用最礼貌的方式。那么如果服务器崩溃/关闭/等等我们会丢失一个节点会发生什么。虽然我们所有的 DB Cluster 作为一个整体仍然活着并且在踢**。我们所要做的就是从上一个快照启动数据库并与集群同步回来,顺便说一句,集群本身就非常擅长!

好吧,伙计们,不要对我太过挑剔,如果你发现我的实现有缺陷,请指导我。

mysql percona
  • 2 2 个回答
  • 610 Views

2 个回答

  • Voted
  1. Best Answer
    Rick James
    2018-05-08T10:07:03+08:002018-05-08T10:07:03+08:00

    好的,3 个 Galera 节点,其中:

    • 每个都有位于 RAM 磁盘中的所有磁盘内容。
    • 足够的 RAM 使之成为可能。
    • 这些节点在地理上是分开的,因此火山、洪水等无法一次将它们全部消灭。
    • 高速网络。

    笔记:

    • 这将允许从一台服务器丢失中完全自动恢复。
    • 故障期间的唯一延迟是将客户端切换到其他两个节点之一。
    • 但是,您可能会发现网络是慢点。(纠缠还没有完善。)
    • 无需快照。(您总是有 2 个其他节点具有数据的完整副本。)
    • 3
  2. dbdemon
    2018-04-23T13:34:35+08:002018-04-23T13:34:35+08:00

    (编辑以解决@RickJames 的评论,以及更多关于 NDB Cluster 和一般改进的内容。)

    你的计划有几个问题:

    1. 如果您想要持久性,那么显然您不能将 RAM 磁盘用于数据文件。

    2. 如果您计划为所有数据库文件(表数据文件、日志文件、临时文件等)使用 RAM 磁盘,那么您似乎需要内存所需的 RAM 量的两倍以上-只有数据库系统,因为您将表本身和它们的数据文件(通常会持久保存到磁盘)存储在 RAM 中。

    3. 您将如何保证 RAM 磁盘对于所有可能的用例都足够大?例如,当查询太大而无法在内存中处理时,可以创建磁盘内部临时表。因此,如果您使用 RAM 磁盘作为磁盘存储,那么您就有可能用完“磁盘”,这可能会产生一些不利影响。(这让我认为 MemSQL 有如此大的 RAM 需求是有充分理由的......)

      也许有一种方法可以配置您的存储/RAM 磁盘,以便部分存储在 RAM 磁盘上(首先使用/首选的部分),另一部分在真实磁盘上?

    也就是说,有些情况下 InnoDB 会创建磁盘上的临时表,即使查询可能已在内存中处理。有关详细信息,请参见8.4.4 MySQL中内部临时表的使用。在这些情况下,RAM 磁盘可能会有所帮助。这是一篇关于如何将MySQL tmpdir 放在 RAM-disk 上的博客条目(自 2012 年起) 。

    但是,在 RAM 磁盘解决方案中用于 tmpdir 的任何 RAM 都是可能已用于最重要的 InnoDB 缓冲池的 RAM。因此,在考虑使用 RAM 磁盘上的任何 RAM 之前,请确保您有足够大的缓冲池来容纳数据工作集。

    假设您将表的数据文件放在 RAM 磁盘上并计划对其进行快照,那么您还需要采取措施确保获得时间点一致的备份。这些步骤会使 RAM 磁盘变慢。

    因此,或者不使用 RAM 磁盘,您可以按原样使用 Galera,但要采取一切可能的预防措施来避免创建磁盘内部临时表。显然,您还应该确保使用 SSD 而不是旋转磁盘。

    另一个要考虑的技术可能是MySQL NDB Cluster:

    NDB Cluster 是一种在无共享系统中启用内存数据库集群的技术。无共享架构使系统能够与非常便宜的硬件一起工作,并且对硬件或软件的特定要求最少。[...]

    NDB Cluster 确实非常快,2015 年 2 月报告了 2 亿 (NoSQL) QPS,请参阅MySQL Cluster Benchmarks。让我担心的是,他们在 2018 年仍在使用这些基准,好像自 2015 年以来没有取得任何进展。我也感觉到,无论出于何种原因,与 Galera 和其他解决方案相比,NDB Cluster 的受欢迎程度正在下降. (例如,参见 DBA.SE 上各种标签的统计信息。)

    • 2

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve