在一些场景想利用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.把监表单独放到一个实例下,和主要业务数据分开。
觉得文章有用?立即:
和朋友一起 共学习 共进步!
望着测验魔石碑上面闪亮得甚至有些刺眼的五个大字,少年面无表情,唇角有着一抹自嘲,紧握的手掌,因为大力,而导致略微尖锐的指甲深深的刺进了掌心之中,带来一阵阵钻心的疼痛…
“萧炎,斗之力,三段!级别:低级!”测验魔石碑之旁,一位中年男子,看了一眼碑上所显示出来的信息,语气漠然的将之公布了出来…
中年男子话刚刚脱口,便是不出意外的在人头汹涌的广场上带起了一阵嘲讽的骚动。
“三段?嘿嘿,果然不出我所料,这个“天才”这一年又是在原地踏步!