ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1933|回复: 0

[文章] 内存表在同步环境注意事项

[复制链接]
发表于 2013-8-16 13:56:40 | 显示全部楼层 |阅读模式
原文地址:http://ourmysql.com/archives/1168?f=wb

   在一些场景想利用MySQL的内存表存一些数据来加快数据的操作。但如果在复制环境中这可不是一个好事情。

   主要原因如下:

   1. 内存表在数据库重启或是异常down机的情况下内存表的数据会全部丢失。如果从库重启一下则同步就不能进行了。

   2. 另一方面,在主从环境下,如果从库上同时有大的操作或是排序工作,有借助于临时表的的场景,同时主库上内存表也有较大的写入,从库有可能会就出现报那个内存表is full (1114)这样的错误。

   3. 特别需要注意在使用内存表的场景主库重启会主动发起一次对内存表的truncate table操作

   那如何解决呢:

   1. 从我对数据库的了解上来看推荐用Innodb表去替代memory表, Innodb表如果一个表的数据经常被访问,就会被加载到内存里,数据和索引都在内存,访问速度是比较快的。

   2. 不要复制Innodb表。 利用replication-igore-table=db.tbaname形式声明不同步那个表。 这种情况下如果在statement级别的复制,禁止出现insert into otbname select c1 from tbname这种语句。

   3.把监表单独放到一个实例下,和主要业务数据分开。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 22:36 , Processed in 0.034821 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表