【问题标题】:MySQL Merging InnoDb and MyiSAM tablesMySQL 合并 InnoDb 和 MyiSAM 表
【发布时间】:2012-01-13 18:00:48
【问题描述】:

我正在为一些数据创建一个小型搜索引擎,并且需要使用 MyiSAM,因为它具有全文搜索功能。不幸的是,我还需要使用事务进行提交和回滚,以确保输入将要搜索的数据。

我创建了一个 InnoDb 表用于数据存储(因为它可以执行提交和回滚),以及一个 MyiSAM 表,它是 InnoDb 表的精确副本,用于使用全文搜索。现在的问题是保持这些表同步。

我正在寻找一种有效的方法来保持 MyiSAM 表与 InnoDb 表同步。我不能使用触发器,因为在将数据提交到 InnoDb 表之前,我不希望在 MyiSAM 表中存储任何内容。

我可以编写一些在提交时同步表的代码,但我不确定组合这两个表的快速方法。这些表可能很大,我不希望用户等待一个小时才能插入一条记录。在相同的上下文中,我不希望用户在一天中的某个时间无法访问搜索引擎一个小时,因为 cron 作业会同步两个表并锁定 MyiSAM 表。

还有一点要提一下,我的 MySQL 服务器在 Bluehost 上,因此 MySQL 被锁定在 5.1 版本,所以我不能在 5.6 版本中使用新的 InnoDb 全文搜索。当然,我不能在 Bluehost 上安装任何第三方搜索服务器,例如 sphinx。

如果有人能很好地解决我的问题,我将不胜感激。

【问题讨论】:

    标签: merge innodb sync myisam full-text-search


    【解决方案1】:

    这是一个老问题,但对于在搜索中遇到这个问题的人来说:InnoDB 表支持从 MySQL 5.6.4 开始的 FULLTEXT 索引。

    【讨论】:

      【解决方案2】:

      我有一个小小的解决方法

      1. 设置 MySQL 复制
      2. 关于主
        • 删除 MyISAM 表上的 FULLTEXT 索引
        • 将 MyISAM 表转换为 InnoDB
      3. 在奴隶上
        • 将 InnoDB 表转换回 MyISAM
        • 在 MyISAM 表上重新创建 FULLTEXT 索引

      前进

      • 在 Master 上执行所有 INSERT、UPDATE 和 DELETE。
      • 在 Slave 上进行所有 FULLTEXT 搜索。

      我之前建议过这个:https://dba.stackexchange.com/a/22425/877

      【讨论】:

        猜你喜欢
        • 2012-03-01
        • 2011-05-14
        • 1970-01-01
        • 2012-05-15
        • 2011-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        相关资源
        最近更新 更多