MySQL 8.4 C API Developer Guide  / C API Binary Log Interface  /  Overview of the C API Binary Log Interface

10.1 Overview of the C API Binary Log Interface

The following simple example program demonstrates the binary log C API functions. Program notes:

  • mysql is assumed to be a valid connection handler.

  • The initialSET statement sets the@source_binlog_checksum user-defined variable that the server takes as an indication that the client is checksum-aware. This client does nothing with checksums, but without this statement, a server that includes checksums in binary log events will return an error for the first attempt to read an event containing a checksum. The value assigned to the variable is immaterial; what matters is that the variable exist.

if (mysql_query(mysql, "SET @source_binlog_checksum='ALL'")){  fprintf(stderr, "mysql_query() failed\n");  fprintf(stderr, "Error %u: %s\n",           mysql_errno(mysql), mysql_error(mysql));  exit(1);}MYSQL_RPL rpl;rpl.file_name_length = 0;rpl.file_name = NULL;rpl.start_position = 4;rpl.server_id = 0;rpl.flags = 0;if (mysql_binlog_open(mysql, &rpl)){  fprintf(stderr, "mysql_binlog_open() failed\n");  fprintf(stderr, "Error %u: %s\n",           mysql_errno(mysql), mysql_error(mysql));  exit(1);}for (;;)  /* read events until error or EOF */{  if (mysql_binlog_fetch(mysql, &rpl))  {    fprintf(stderr, "mysql_binlog_fetch() failed\n");    fprintf(stderr, "Error %u: %s\n",             mysql_errno(mysql), mysql_error(mysql));    break;  }  if (rpl.size == 0)  /* EOF */  {    fprintf(stderr, "EOF event received\n");    break;  }  fprintf(stderr, "Event received of size %lu.\n", rpl.size);}mysql_binlog_close(mysql, &rpl);

For additional examples that show how to use these functions, look in a MySQL source distribution for these source files:

  • mysqlbinlog.cc in theclient directory

  • mysql_client_test.c in thetestclients directory