19.5.1.16 复制 invoked特征
复制 invoked特征,如可加载函数和存储程序(存储过程和函数、触发器和事件),具有以下特征:
-
该特征的效果总是被复制。
-
使用语句基 replication 复制的语句包括:
然而,使用这些语句创建、修改或删除的特征的效果将使用行基 replication 复制。
Note尝试使用语句基 replication 复制 invoked特征将生成警告Statement is not safe to log in statement format。例如,尝试使用语句基 replication 复制可加载函数将生成这个警告,因为当前不能确定 MySQL 服务器是否确定该函数是确定性的。如果您确定 invoked特征的效果是确定性的,可以忽略这些警告。
-
-
事件的状态将在复制服务器上设置为
REPLICA_SIDE_DISABLED
,无论指定的状态是什么(不适用于DROP EVENT
)。 -
事件的源服务器在复制服务器上被标识为其服务器 ID。
ORIGINATOR
列在INFORMATION_SCHEMA.EVENTS
中存储该信息。见Section 15.7.7.19, “SHOW EVENTS 语句”,了解更多信息。
-
-
该特性实现位于复制服务器上,以便在源服务器失败时,可以将复制服务器用作源服务器,无需事件处理中断。
要确定 MySQL 服务器上是否有任何计划事件,这些事件是在其他服务器上创建的(该服务器曾经作为源服务器),可以按照以下方式查询信息架构EVENTS
表:
Press CTRL+C to copySELECT EVENT_SCHEMA, EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS WHERE STATUS = 'REPLICA_SIDE_DISABLED';
Alternatively, you can use the SHOW EVENTS
statement, like this:
Press CTRL+C to copySHOW EVENTS WHERE STATUS = 'REPLICA_SIDE_DISABLED';
当将复制服务器升级为源服务器时,您必须使用ALTER EVENT
,其中 event_name
ENABLEevent_name
是事件的名称。
如果多个源服务器参与了在该复制服务器上创建事件的过程,并且您想确定在具有服务器 ID source_id
的给定源服务器上创建的事件,可以修改前面的查询语句,以包括 ORIGINATOR
列,如下所示:
Press CTRL+C to copySELECT EVENT_SCHEMA, EVENT_NAME, ORIGINATOR FROM INFORMATION_SCHEMA.EVENTS WHERE STATUS = 'REPLICA_SIDE_DISABLED' AND ORIGINATOR = 'source_id'
您可以使用 ORIGINATOR
与SHOW EVENTS
语句类似地使用:
Press CTRL+C to copySHOW EVENTS WHERE STATUS = 'REPLICA_SIDE_DISABLED' AND ORIGINATOR = 'source_id'
REPLICA_SIDE_DISABLED
替换了 SLAVESIDE_DISABLED
,该项已被弃用。
在启用来自源服务器复制的事件之前,您应该在复制服务器上禁用 MySQL 事件调度器(使用语句 SET GLOBAL event_scheduler = OFF;
),然后运行必要的ALTER EVENT
语句,重新启动服务器,然后在复制服务器上重新启用事件调度器(使用语句 SET GLOBAL event_scheduler = ON;
)-
如果您后来将新源服务器降级为复制服务器,您必须手动禁用所有由ALTER EVENT
语句启用的事件。您可以将事件名称存储在一个单独的表中,然后使用SELECT
语句或使用ALTER EVENT
语句将事件重命名,以便将其标识为复制事件。
如果您重命名事件,然后在降级该服务器为复制服务器时,可以通过查询EVENTS
表来标识事件,如下所示:
Press CTRL+C to copySELECT CONCAT(EVENT_SCHEMA, '.', EVENT_NAME) AS 'Db.Event' FROM INFORMATION_SCHEMA.EVENTS WHERE INSTR(EVENT_NAME, 'replicated_') = 1;