PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb
以下简单示例程序演示了二进制日志 C API 函数。程序说明
mysql
假定为有效的连接处理程序。-
初始
SET
语句设置@source_binlog_checksum
用户定义变量,服务器将其作为客户端支持校验和的指示。此客户端不对校验和执行任何操作,但如果没有此语句,则在二进制日志事件中包含校验和的服务器将为首次尝试读取包含校验和的事件返回错误。分配给变量的值无关紧要;重要的是变量存在。
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);
有关演示如何使用这些函数的其他示例,请在 MySQL 源代码发行版中查找以下源文件
mysqlbinlog.cc
在client
目录中mysql_client_test.c
在testclients
目录中