带有临时表的slave停止stop或者修改表结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有临时表的slave停止stop或者修改表结构相关的知识,希望对你有一定的参考价值。

带有临时表的从库 stop slave,操作步骤

 在stop slave之前一定要确定变量“Slave_open_temp_tables”是否为0,确定该从库是否有打开临时表。如果在不为0时,还有临时表,停止了从库或slave sql thread(IO同步进程),当从库重新开启后,之前对temporary table临时表上的update更新操作不可用,因为未被IO写入磁盘。

正确停从库步骤如下

1.
mysql> stop slave io_thread

2.
mysql> show status like ‘Slave_open_temp_tables‘;

3.
如果‘Slave_open_temp_tables‘不为0,就执行如下,否则跳到第四步
mysql> start slave io_thread

4.
#service mysqld stop

即先停主从的IO进程,确认临时表上的更新是否都写入磁盘,临时表是否为0,若不为0,等IO完了,再关从库


存在临时表的数据更新步骤,主从同步中

  1. 调用IO_thread,将主库的binlog日志同步到从库

  2. 调用sql_thread进程,根据同步到本地的binlog更新数据库。因为存在临时表,sql_thread只是更新临时表中的数据。

  3. 调用IO_thread进程,将临时表中的更新写回原表(表数据修改直接修改磁盘中内容)



以上是关于带有临时表的slave停止stop或者修改表结构的主要内容,如果未能解决你的问题,请参考以下文章

oracle 临时表

获取临时表的结构(如生成 sql 脚本)并清除当前实例的临时表

修改临时表存放路径tmpdir

mysql 如何查询一个带有树结构的表的数据

mysql问题小结

带有临时表的 RODBC::sqlQuery 提供空字符向量,尽管查询在 SSMS 中工作,较小的查询在相同的连接下工作