10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

17.5.1.31复制和临时表

在MySQL 8.0中,当binlog_format被设置为混合,专门使用临时表的语句不登录源,因此临时表不是复制。语句涉及的临时和永久表登录操作的源只有永久表、临时表上和操作记录。这意味着永远不会有任何临时表的副本丢失事件意外关闭的副本。对基于行的复制和临时表的更多信息,见基于行的日志记录的临时表

binlog_format被设置为声明对临时表、操作登录源和复制副本,提供涉及临时表的语句可以记录安全使用statement-based格式。在这种情况下,损失的临时表复制副本可以是一个问题。在statement-based复制模式下,创建临时表删除临时表语句不能使用在一个事务中,过程,函数,或触发GTIDs正在使用服务器上的(也就是说,当enforce_gtid_consistency系统变量设置为)。这样他们可以使用外部环境中GTIDs在使用时,提供自动提交= 1是集。

因为基于行的之间的行为差异或混合复制模式和statement-based复制模式关于临时表,你不能在运行时切换复制格式,如果更改适用于上下文(全球或会话),它包含所有打开的临时表。更多细节,请参阅的描述binlog_format选择。

安全的复制品使用临时表时关闭。在statement-based复制模式下,临时表复制除了你停止复制服务器的情况(而不仅仅是复制线程)和复制的临时表,用于更新开放尚未执行的复制品。如果你停止复制服务器,这些更新所需的临时表副本重新启动时不再可用。为了避免这个问题,不要关闭临时表的复制品而开放。相反,使用下列程序:

  1. 发出一个停止|奴隶SQL_THREAD复制品声明。

  2. 使用显示状态检查的价值Slave_open_temp_tables变量。

  3. 如果该值不是0,重启SQL复制线程开始|奴隶SQL_THREAD复制品然后重复这个过程。

  4. 当该值为0,一个问题mysqladmin关闭命令来停止复制。

临时表和复制选项。默认情况下,对于statement-based复制,复制所有临时表;这种情况是否有任何匹配——replicate-do-db,——replicate-do-table,或——replicate-wild-do-table选项的效果。然而,——replicate-ignore-table——replicate-wild-ignore-table临时表的选项是荣幸。例外是使正确删除临时表在会话结束时,一个总是复制一个复制品删除临时表是否存在声明中,无论任何排除规则,通常会申请指定的表。

推荐的做法当使用statement-based复制指定前缀的命名临时表,你不希望复制,然后使用——replicate-wild-ignore-table选择与之匹配的前缀。例如,您可能会给所有这些表的名字开始norep(如norepmytable,norepyourtable等等),然后使用——replicate-wild-ignore-table = norep %阻止他们被复制。