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
目錄中