The following steps are involved:
Create an NdbLogEventHandle
using
ndb_mgm_create_logevent_handle()
.
Wait for and store log events using
ndb_logevent_get_next()
.
The log event data is available in the structure
ndb_logevent
. The data which is specific
to a particular event is stored in a union between
structures; use ndb_logevent::type
to
decide which structure is valid.
The following sample code demonstrates listening to events related to backups:
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 }; NdbLogEventHandle le_handle= ndb_mgm_create_logevent_handle(handle, filter); struct ndb_logevent le; int r= ndb_logevent_get_next(le_handle, &le, 0); if(r < 0) /* error */ else if(r == 0) /* no event */ switch(le.type) { case NDB_LE_BackupStarted: ... le.BackupStarted.starting_node; ... le.BackupStarted.backup_id; break; case NDB_LE_BackupFailedToStart: ... le.BackupFailedToStart.error; break; case NDB_LE_BackupCompleted: ... le.BackupCompleted.stop_gci; break; case NDB_LE_BackupAborted: ... le.BackupStarted.backup_id; break; default: break; }
For more information, see Section 3.2.1, “Log Event Functions”.
Available log event types are listed in
Section 3.3.4, “The Ndb_logevent_type
Type”, as well as in the
file
/storage/ndb/include/mgmapi/ndb_logevent.h
in the MySQL 5.1 sources.