You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
4.4 KiB
185 lines
4.4 KiB
package replication |
|
|
|
const ( |
|
//we only support MySQL 5.0.0+ binlog format, maybe??? |
|
MinBinlogVersion = 4 |
|
) |
|
|
|
var ( |
|
//binlog header [ fe `bin` ] |
|
BinLogFileHeader []byte = []byte{0xfe, 0x62, 0x69, 0x6e} |
|
|
|
SemiSyncIndicator byte = 0xef |
|
) |
|
|
|
const ( |
|
LOG_EVENT_BINLOG_IN_USE_F uint16 = 0x0001 |
|
LOG_EVENT_FORCED_ROTATE_F uint16 = 0x0002 |
|
LOG_EVENT_THREAD_SPECIFIC_F uint16 = 0x0004 |
|
LOG_EVENT_SUPPRESS_USE_F uint16 = 0x0008 |
|
LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F uint16 = 0x0010 |
|
LOG_EVENT_ARTIFICIAL_F uint16 = 0x0020 |
|
LOG_EVENT_RELAY_LOG_F uint16 = 0x0040 |
|
LOG_EVENT_IGNORABLE_F uint16 = 0x0080 |
|
LOG_EVENT_NO_FILTER_F uint16 = 0x0100 |
|
LOG_EVENT_MTS_ISOLATE_F uint16 = 0x0200 |
|
) |
|
|
|
const ( |
|
BINLOG_DUMP_NEVER_STOP uint16 = 0x00 |
|
BINLOG_DUMP_NON_BLOCK uint16 = 0x01 |
|
BINLOG_THROUGH_POSITION uint16 = 0x02 |
|
BINLOG_THROUGH_GTID uint16 = 0x04 |
|
) |
|
|
|
const ( |
|
BINLOG_ROW_IMAGE_FULL = "FULL" |
|
BINLOG_ROW_IAMGE_MINIMAL = "MINIMAL" |
|
BINLOG_ROW_IMAGE_NOBLOB = "NOBLOB" |
|
) |
|
|
|
type EventType byte |
|
|
|
const ( |
|
UNKNOWN_EVENT EventType = iota |
|
START_EVENT_V3 |
|
QUERY_EVENT |
|
STOP_EVENT |
|
ROTATE_EVENT |
|
INTVAR_EVENT |
|
LOAD_EVENT |
|
SLAVE_EVENT |
|
CREATE_FILE_EVENT |
|
APPEND_BLOCK_EVENT |
|
EXEC_LOAD_EVENT |
|
DELETE_FILE_EVENT |
|
NEW_LOAD_EVENT |
|
RAND_EVENT |
|
USER_VAR_EVENT |
|
FORMAT_DESCRIPTION_EVENT |
|
XID_EVENT |
|
BEGIN_LOAD_QUERY_EVENT |
|
EXECUTE_LOAD_QUERY_EVENT |
|
TABLE_MAP_EVENT |
|
WRITE_ROWS_EVENTv0 |
|
UPDATE_ROWS_EVENTv0 |
|
DELETE_ROWS_EVENTv0 |
|
WRITE_ROWS_EVENTv1 |
|
UPDATE_ROWS_EVENTv1 |
|
DELETE_ROWS_EVENTv1 |
|
INCIDENT_EVENT |
|
HEARTBEAT_EVENT |
|
IGNORABLE_EVENT |
|
ROWS_QUERY_EVENT |
|
WRITE_ROWS_EVENTv2 |
|
UPDATE_ROWS_EVENTv2 |
|
DELETE_ROWS_EVENTv2 |
|
GTID_EVENT |
|
ANONYMOUS_GTID_EVENT |
|
PREVIOUS_GTIDS_EVENT |
|
) |
|
|
|
const ( |
|
// MariaDB event starts from 160 |
|
MARIADB_ANNOTATE_ROWS_EVENT EventType = 160 + iota |
|
MARIADB_BINLOG_CHECKPOINT_EVENT |
|
MARIADB_GTID_EVENT |
|
MARIADB_GTID_LIST_EVENT |
|
) |
|
|
|
func (e EventType) String() string { |
|
switch e { |
|
case UNKNOWN_EVENT: |
|
return "UnknownEvent" |
|
case START_EVENT_V3: |
|
return "StartEventV3" |
|
case QUERY_EVENT: |
|
return "QueryEvent" |
|
case STOP_EVENT: |
|
return "StopEvent" |
|
case ROTATE_EVENT: |
|
return "RotateEvent" |
|
case INTVAR_EVENT: |
|
return "IntVarEvent" |
|
case LOAD_EVENT: |
|
return "LoadEvent" |
|
case SLAVE_EVENT: |
|
return "SlaveEvent" |
|
case CREATE_FILE_EVENT: |
|
return "CreateFileEvent" |
|
case APPEND_BLOCK_EVENT: |
|
return "AppendBlockEvent" |
|
case EXEC_LOAD_EVENT: |
|
return "ExecLoadEvent" |
|
case DELETE_FILE_EVENT: |
|
return "DeleteFileEvent" |
|
case NEW_LOAD_EVENT: |
|
return "NewLoadEvent" |
|
case RAND_EVENT: |
|
return "RandEvent" |
|
case USER_VAR_EVENT: |
|
return "UserVarEvent" |
|
case FORMAT_DESCRIPTION_EVENT: |
|
return "FormatDescriptionEvent" |
|
case XID_EVENT: |
|
return "XIDEvent" |
|
case BEGIN_LOAD_QUERY_EVENT: |
|
return "BeginLoadQueryEvent" |
|
case EXECUTE_LOAD_QUERY_EVENT: |
|
return "ExectueLoadQueryEvent" |
|
case TABLE_MAP_EVENT: |
|
return "TableMapEvent" |
|
case WRITE_ROWS_EVENTv0: |
|
return "WriteRowsEventV0" |
|
case UPDATE_ROWS_EVENTv0: |
|
return "UpdateRowsEventV0" |
|
case DELETE_ROWS_EVENTv0: |
|
return "DeleteRowsEventV0" |
|
case WRITE_ROWS_EVENTv1: |
|
return "WriteRowsEventV1" |
|
case UPDATE_ROWS_EVENTv1: |
|
return "UpdateRowsEventV1" |
|
case DELETE_ROWS_EVENTv1: |
|
return "DeleteRowsEventV1" |
|
case INCIDENT_EVENT: |
|
return "IncidentEvent" |
|
case HEARTBEAT_EVENT: |
|
return "HeartbeatEvent" |
|
case IGNORABLE_EVENT: |
|
return "IgnorableEvent" |
|
case ROWS_QUERY_EVENT: |
|
return "RowsQueryEvent" |
|
case WRITE_ROWS_EVENTv2: |
|
return "WriteRowsEventV2" |
|
case UPDATE_ROWS_EVENTv2: |
|
return "UpdateRowsEventV2" |
|
case DELETE_ROWS_EVENTv2: |
|
return "DeleteRowsEventV2" |
|
case GTID_EVENT: |
|
return "GTIDEvent" |
|
case ANONYMOUS_GTID_EVENT: |
|
return "AnonymousGTIDEvent" |
|
case PREVIOUS_GTIDS_EVENT: |
|
return "PreviousGTIDsEvent" |
|
case MARIADB_ANNOTATE_ROWS_EVENT: |
|
return "MariadbAnnotateRowsEvent" |
|
case MARIADB_BINLOG_CHECKPOINT_EVENT: |
|
return "MariadbBinLogCheckPointEvent" |
|
case MARIADB_GTID_EVENT: |
|
return "MariadbGTIDEvent" |
|
case MARIADB_GTID_LIST_EVENT: |
|
return "MariadbGTIDListEvent" |
|
|
|
default: |
|
return "UnknownEvent" |
|
} |
|
} |
|
|
|
const ( |
|
BINLOG_CHECKSUM_ALG_OFF byte = 0 // Events are without checksum though its generator |
|
// is checksum-capable New Master (NM). |
|
BINLOG_CHECKSUM_ALG_CRC32 byte = 1 // CRC32 of zlib algorithm. |
|
// BINLOG_CHECKSUM_ALG_ENUM_END, // the cut line: valid alg range is [1, 0x7f]. |
|
BINLOG_CHECKSUM_ALG_UNDEF byte = 255 // special value to tag undetermined yet checksum |
|
// or events from checksum-unaware servers |
|
)
|
|
|