代码之家  ›  专栏  ›  技术社区  ›  Trần Kim Dá»±

Galera:索引大数据时无法写入数据库

  •  1
  • Trần Kim Dá»±  · 技术社区  · 5 年前

    我使用的是3个节点的Galera集群。我目前遇到以下问题。我想把超过5亿条记录写入数据库,例如表数据。步骤如下:

    • 创建表NewData,其中schema作为数据,但没有索引。
    • 把5亿条记录写到这个表中。(使用多个线程进行写入,每个线程将写入一堆记录)。
    • 完成后,为该表分配索引。
    • 将数据重命名为OldData,并将NewData重命名为Data。

    “我无法写入其他服务”短语“当前无法写入数据”。我增加后 innodb_buffer_pool_size 其他节点可以读取数据,但仍然无法写入。

    我已经进行了配置,使编写的作业在不同的节点上写入,但问题仍然相同。我认为,如果一个节点的工作负载非常高,那么另一个节点的行为应该仍然正常。请告诉我为什么和如何解决这个问题。

    谢谢

    1 回复  |  直到 5 年前
        1
  •  2
  •   Rick James    5 年前

    我想你错过了一步。

    1. (一次性)创建表 NewData 架构为 Data 但没有索引。
    2. 插入 新数据 .
    3. Create table`Empty(同样类似于数据,但没有任何索引)
    4. RENAME TABLE NewData TO ToIndex, Empty TO NewData;
    5. ALTER TABLE ToIndex ADD INDEX ...
    6. RENAME TABLE Data TO Old, ToIndex TO Data;

    关键是要做两件事:

    • 不停地给没有索引的人写信 新数据 .
    • 交换表,以便定期将该表(以新名称命名)编入索引,然后用于替换活动表(通常被视为 数据 ).

    这种情况并不完全相同,但有一些相似之处: http://mysql.rjweb.org/doc.php/staging_table