1、对memory引擎的操作会不会记录到binlog里,并传到slave进行回放?
首先创建一个memory引擎表:
然后在表中插入一条记录
让我们看看对memory引擎的表进行的操作会不会记录到binlog里
可见对memory引擎的表进行的操作会记录到binlog,这里记录的binlog有点奇怪,有#号,像是被注释掉了一样,让我们再看看从库上会不会这条insert语句会不会在从库进行回放。下图为在从库执行的select语句,可见这条insert语句会在从库进行回放。
2、为什么memory引擎的表会造成主从中断
假设存在这样一种场景,先在数据库1上创建memory引擎的表test,然后在其中插入一条记录10,之后对数据库1进行物理备份。因为表test为memory引擎,所以物理备份过程中只会拷贝test的表结构文件test.frm。之后把这个物理备份导入到数据库2中,然后让数据库2成为数据库1的从库,之后在数据库1(主库)上执行delete from test where i=10,因为从库上没有10这条记录(因为物理备份中只包含test.frm,也就是表结构,没有包含10这条数据),所以会导致从回放这条binlog的时候报错。(这里没有进行过测试,待之后测试)