Mysql Flush语句

2019-08-07  本文已影响0人  judeshawn

语法:

FLUSH [NO_WRITE_TO_BINLOG | LOCAL] {
    flush_option [, flush_option] ...
  | tables_option
}

flush_option: {
    BINARY LOGS
  | DES_KEY_FILE
  | ENGINE LOGS
  | ERROR LOGS
  | GENERAL LOGS
  | HOSTS
  | LOGS
  | PRIVILEGES
  | OPTIMIZER_COSTS
  | QUERY CACHE
  | RELAY LOGS [FOR CHANNEL channel]
  | SLOW LOGS
  | STATUS
  | USER_RESOURCES
}

tables_option: {
    TABLES
  | TABLES tbl_name [, tbl_name] ...
  | TABLES WITH READ LOCK
  | TABLES tbl_name [, tbl_name] ... WITH READ LOCK
  | TABLES tbl_name [, tbl_name] ... FOR EXPORT
}

flush语句会触发隐式提交

部分flush语句可以由mysqladmin工具执行,例如flush-hosts,flush-logs,flush-privileges,flush-status,以及flush-tables等等。

LOCAL:主从复制环境下flash语句默认会同步到Slave节点,flush logsflush binary logs,flush tables(or table_list) read lock,以及flush tables table_list for export除外,因为这些语句同步到slave节点会出问题。
。Local(或NO_WRITE_TO_BINLOG)表示不写入Binlog,即不会同步到slave节点。

向服务器发送SIGNUP指令会触发某些flush操作。

reset语句类似于flush。

这个选项会把当前线程的会话状态变量值设置位全局值,同时把会话值设为0.某些全局变量也会被设置为0.也会把key caches的计数器重置为0并且把max_used_connections状态变量设置为当前打开的连接数量.这些信息在对查询进行debugging时会使用到。

FLASH TABLES 语法


FLUSH TABLES=FLUSH TABLE,flush表的同时具有多种获取锁的模式,并且每次只能使用一个选项。

注意:
这里描述

FLUSH TABLES ... FOR EXPORT语句需要拥有对表的select权限。因为这条语句会获取表锁,因此也必须拥有LOCK TABLES权限,另外flush操作还需要reload权限。

语句只能应用于非临时表。如果含有临时表,会被忽略。如果含有视图,会出现ER WRONG OBJECT报错。其他情况,会出现ER NO SUCH TABLE报错。

innodb支持拥有自己的.ibd文件的表的FOR EXPORT(即,使用innodb_file_per_table参数启用时创建的表)。innodb会保证在FOR EXPORT语句发出通知时表所有的变化都刷新到磁盘。当FOR EXPORT语句生效时,二进制表数据文件就可以拷贝了,因为此时在服务器运行时.ibd文件上的事务处于一致性状态。FOR EXPORT不会应用于innodb系统表空间文件或者具有FULLTEXT索引的innodb表。

FLUSH TABLES ... FOR EXPORT支持innodb分区表

当FOR EXPORT下达通知后,Innodb会将内存中或表空间文件外独立的磁盘缓存中的某种类型的数据写入磁盘。对每张表,innodb还会生成一个table_name.cfg文件放在数据库目录里。这个.cfg文件包含的信息是以后再次导入表空间文件所需要的元数据,可以导入原服务器或另外的服务器。

当FOR EXPORT语句完成,Innodb会把所有的脏页刷新到表的数据文件。所有变更缓存记录在刷新之前会先合并。此时,表被锁住,是静态的:表处于事务一致状态,然后就可以拷贝.bd表空间文件以及对应的.cfg文件来获取这些表的一致性快照。

完成表的导出之后,使用UNLOCK TABLES就能释放锁,或使用LOCK TABLES也可以释放锁并获得另一种锁,或使用start transaction来释放锁并开始新的事务。

当会话内的以下任何语句正在使用时,执行FLUSH TABLES ... FOR EXPORT会报错:

FLUSH TABLES ... WITH READ LOCK
FLUSH TABLES ... FOR EXPORT
LOCK TABLES ... READ
LOCK TABLES ... WRITE

当会话内FLUSH TABLES ... FOR EXPORT生效时,使用以下这些语句也会报错:

FLUSH TABLES WITH READ LOCK
FLUSH TABLES ... WITH READ LOCK
FLUSH TABLES ... FOR EXPORT
上一篇下一篇

猜你喜欢

热点阅读