4.1.16被调用特性的复制

对用户定义函数(udf)和存储程序(存储过程和函数、触发器和事件)等调用特性的复制提供了以下特征:

  • 特性的效果总是被复制的。

  • 以下语句使用基于语句的复制进行复制:

    然而,影响使用这些语句创建、修改或删除的特性将使用基于行的复制进行复制。

    请注意

    试图使用基于语句的复制复制被调用的特性会产生警告语句以语句格式登录是不安全的.例如,尝试使用基于语句的复制来复制UDF会产生此警告,因为MySQL服务器目前无法确定UDF是否是确定性的。如果您绝对确定被调用的特性的影响是确定的,那么您可以放心地忽略这样的警告。

  • 在这种情况下创建事件而且改变事件

  • 特性实现驻留在可再生状态的副本上,因此,如果源失败,该副本可以用作源,而不会丢失事件处理。

要确定MySQL服务器上是否有在其他服务器上创建的任何预定事件(该服务器充当源),请查询INFORMATION_SCHEMA。事件表格的方式类似如下所示:

选择event_schema, event_name from information_schema。status = ' slaveside_disabled '的事件;

或者,您可以使用显示事件声明中,像这样:

显示status = ' slaveside_disabled '的事件;

当将具有此类事件的副本提升到源时,必须启用使用的每个事件改变事件event_name启用,在那里event_name是事件的名称。

如果在此副本上创建事件涉及多个源,并且希望标识仅在具有服务器ID的给定源上创建的事件source_id,修改上一个查询事件表,以包含发起者列,如下所示:

从information_schema中选择event_schema, event_name, originator。status = ' slaveside_disabled '和originator = '的事件source_id

您可以使用发起者显示事件以类似的方式陈述:

显示status = ' slaveside_disabled '和originator = '的事件source_id

在启用从源复制的事件之前,应该禁用副本上的MySQL事件调度器(使用如下语句)SET GLOBAL event_scheduler = OFF;),运行任何必要的改变事件语句,重新启动服务器,然后在副本上重新启用事件调度器(使用如下语句)SET GLOBAL event_scheduler = ON;)-

如果稍后将新源降级为副本,则必须手动禁用控件启用的所有事件改变事件语句。方法将事件名称存储在单独的表中选择先前显示的语句或用法改变事件语句以公共前缀重命名事件,例如replicated_来识别它们。

如果重命名事件,那么在将此服务器降级为副本时,可以通过查询事件表格,如下所示:

选择CONCAT (EVENT_SCHEMA”。', EVENT_NAME)作为数据库。从INFORMATION_SCHEMA事件”。事件WHERE INSTR(EVENT_NAME, 'replicated_') = 1;