Skip to content

log_bin_trust_function_creators

xiaoboluo768 edited this page Jun 14, 2020 · 2 revisions
  • 用于控制MySQL对存储函数和触发器创建的限制
    • 全局变量,动态变量,布尔型值,默认值为0,表示在开启了log_bin参数的主库上,对于可能会造成数据改变的存储过程、函数和触发器不允许创建,主库在创建可能会造成数据改变的存储过程、函数和触发器时可能会报错误(Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable),因为备库在重放时可能造成主备数据不一致,如果确定不会改变数据,那么可以在创建存储过程和触发器的时候使用READS SQL DATA FUNCTION关键字来明确的告知MySQL服务器这个存储过程、函数和函数不会修改数据,因此可以在开启了log-bin的服务器上安全的创建并被复制到开启了log-bin的slave上。但是,如果slave复制重放存储过程、函数和触发器时可能会因为没有权限而无法执行(binlog中可能记录如:DEFINER=root@% 、DEFINER=sspdbexecuter@localhost的格式,slave重放时可能因为没有这个用户而没有权限执行)。可以设置该参数为1来解决上述的两个报错问题。

上一篇:slave_preserve_commit_order | 下一篇:binlog_checksum

Clone this wiki locally