gpt4 book ai didi

MySQL 数据库集群与大型爬虫索引的复制设置

转载 作者:行者123 更新时间:2023-11-29 15:13:06 24 4
gpt4 key购买 nike

在应用程序中设置 MySQL 集群或复制的最有效方法是什么,该应用程序具有具有数千次读/写操作的爬虫/索引引擎,然后是用于公共(public)访问的单独前端。

这有点像创建一个迷你谷歌搜索引擎。保存最新爬网数据的数据库必须以不影响公共(public)访问数据库的性能的方式进行分离。但是,最终需要协调两个数据库,以便公共(public)访问的数据库拥有所有最新数据。

所以我的想法是爬虫数据库将是主数据库,而公共(public)访问的数据库将是从数据库。然后,对公共(public)评估数据库的编辑/插入操作确实需要在主数据库上完成(与爬虫相同)。

这是做这种事情的最好方法吗?有更好的设置吗?

更多信息:

目前,爬虫运行时会以非常快的速度进行大量读取/更新/插入。

例如,爬虫可以每 2-3 秒发送 10 个商家,每个商家的位置和商品,此时接收服务器需要执行以下操作。如果业务已存在(数十万条记录),则搜索数据库,如果不存在则创建它。然后搜索该企业的该位置(在 50 万条记录中)是否存在,如果不存在,则创建它。然后循环遍历业务的每一项,检查是否存在(40+万条记录中),更新,如果不存在,则创建。旧的会被备份然后删除。

最佳答案

爬虫:

  • 将此进程放在单独的服务器(或多台服务器)上。
  • 如果可行,请使用多行 INSERT 批量插入行。
  • 有关高速摄取的更多提示,请参阅此内容:http://mysql.rjweb.org/doc.php/staging_table
  • 写入 Master(或者,如果集群允许,写入任何 Master)。

对于网络端:

  • 拥有多个带有 Apache/nginx/任何接收请求的服务器。
  • 将请求发送到从站(或节点)。
  • 使用循环(如果有多个服务器进行读取)。

其他事情:

  • 300% CPU 较高。让我们看看最严重的违规者,再加上SHOW CREATE TABLE
  • 您的数据集可能会非常大,因此请在可行的情况下缩小数据类型,并在适当的情况下进行标准化。 (上面的链接有更多关于标准化的内容。)
  • 到目前为止,单个 Master 似乎就足够了,因此任何复制或集群选项仍然可行。
  • 所有写入操作均在所有服务器上执行。这限制了您可以扩展的范围。超越这一点的唯一方法是通过“分片”。
  • 读取扩展可以通过添加更多从属来实现,几乎没有限制。这适用于所有类型的复制/集群。
  • 索引——使用FULLTEXT搜索“单词”;在适当的情况下使用常规INDEX
  • 由于 FULLTEXTINDEX 都不处理“型号”和“同义词”,因此您可能需要在插入数据时对其进行清理 .

关于MySQL 数据库集群与大型爬虫索引的复制设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com