MySQL的内存表在主从同步的注意事项
2011-03-17 12:48
1016 查看
有一些应用程序需要存放一些临时数据,这时候临时表似乎是一个很好的选择,但是内存表在主从数据库上表现却不那么好。
原因很简单,无论是基于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
原因很简单,无论是基于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
相关文章推荐
- mysql 临时表和内存表创建 查询 删除以及注意事项
- 【简短笔记】mysql内存表使用注意事项
- mysql 临时表和内存表创建 查询 删除以及注意事项
- mysql在互联网应用设计和开发中的注意事项(二)
- mysql 双机热备注意事项
- mysql优化 之 表设计注意事项
- Android内存分配的注意事项
- MySQL转换Oracle的七大注意事项
- 【转】mysql索引使用技巧及注意事项
- Windows下添加MySQL服务到系统服务以及注意事项
- iBatis连接MySQL时的注意事项
- MySQL中MAX函数与Group By一起使用的注意事项(转)
- mysql中group by与having合用注意事项分享
- 最新Linux系统下安装MySql 5.7.17全过程及注意事项
- Mysql开启远程连接及注意事项
- MYSQL存储过程注意事项
- mysql外键操作注意事项
- mysql查询注意事项
- Mysql的一些数据类型及注意事项 以及版本的区别