zoukankan      html  css  js  c++  java
  • MySQL的内存表在主从同步的注意事项

           有一些应用程序需要存放一些临时数据,这时候临时表似乎是一个很好的选择,但是内存表在主从数据库上表现却不那么好。

           原因很简单,无论是基于STATEMENT还是基于ROW复制,都要在二进制日志中包含改变的数据。这就要求在主从机上数据必须一致。当重启从库的时候,你就会丢失内存表的数据,复制中断。

          我们该怎么办呢?

    1.使用Innodb表代替

    innodb表非常快,能满足我们对性能的需求。

    2.在复制中忽略内存表

    如果不是非常有必要的话,忽略复制内存表,使用这个选项replicate-ignore-table=db.memory_table。我们需要注意的是:STATEMENT复制,不要使用insert ... select 添加数据到内存表。如果要使用insert ... select,从机上的表将会是空的,甚至某些时候,内存表根本不会复制到从机上。还有一种解决办法是在主从机上都部署上相同的计划任务,来刷新这个表。

    3.谨慎重启从机

    从长远角度考虑我不会使用内存表,作为解决方案。

    翻译自:

    http://www.mysqlperformanceblog.com/2010/10/15/replication-of-memory-heap-tables/

    此外还有关于如果真在工作中使用了内存表,并且重启了从机上的MySQL,还想和主机上的MySQL保持数据同步的话,这里有一个解决方案。

    http://forge.mysql.com/tools/tool.php?id=163

  • 相关阅读:
    【WF2017】Mission Improbable
    【Codeforces 837D】Round Subset
    【Codeforces 788C】The Great Mixing
    【JSOI2008】最大数
    2.1图像的数字化
    MATLAB生成随机数
    四六级准考证号忘记了如何快速查询四六级成绩?
    加密与水印结合
    如何在 PyPI安装python的软件包?
    matlab中如何定义函数
  • 原文地址:https://www.cnblogs.com/sunss/p/1986917.html
Copyright © 2011-2022 走看看