Documentation ¶
Index ¶
- Constants
- Variables
- func BinlogTransactionToProto(bt *BinlogTransaction) *pb.BinlogTransaction
- func BlpPositionListToProto(l *BlpPositionList) []*pbt.BlpPosition
- func BlpPositionToProto(b *BlpPosition) *pbt.BlpPosition
- func StatementToProto(s *Statement) *pb.BinlogTransaction_Statement
- func StreamEventToProto(s *StreamEvent) *pb.StreamEvent
- type BinlogEvent
- type BinlogFormat
- type BinlogTransaction
- type BlpPosition
- type BlpPositionList
- type KeyRangeRequest
- type Query
- type Statement
- type StreamEvent
- type TablesRequest
- type UpdateStream
- type UpdateStreamRequest
Constants ¶
const ( BL_UNRECOGNIZED = iota BL_BEGIN BL_COMMIT BL_ROLLBACK BL_DML BL_DDL BL_SET )
Valid statement types in the binlogs.
Variables ¶
var BL_CATEGORY_NAMES = map[int]string{ BL_UNRECOGNIZED: "BL_UNRECOGNIZED", BL_BEGIN: "BL_BEGIN", BL_COMMIT: "BL_COMMIT", BL_ROLLBACK: "BL_ROLLBACK", BL_DML: "BL_DML", BL_DDL: "BL_DDL", BL_SET: "BL_SET", }
Functions ¶
func BinlogTransactionToProto ¶
func BinlogTransactionToProto(bt *BinlogTransaction) *pb.BinlogTransaction
BinlogTransactionToProto converts a BinlogTransaction to a proto3
func BlpPositionListToProto ¶
func BlpPositionListToProto(l *BlpPositionList) []*pbt.BlpPosition
BlpPositionListToProto converts a BlpPositionList to a proto3
func BlpPositionToProto ¶
func BlpPositionToProto(b *BlpPosition) *pbt.BlpPosition
BlpPositionToProto converts a BlpPosition to a proto3
func StatementToProto ¶
func StatementToProto(s *Statement) *pb.BinlogTransaction_Statement
StatementToProto converts a Statement to a proto3
func StreamEventToProto ¶
func StreamEventToProto(s *StreamEvent) *pb.StreamEvent
StreamEventToProto converts a StreamEvent to a proto3
Types ¶
type BinlogEvent ¶
type BinlogEvent interface { // IsValid returns true if the underlying data buffer contains a valid event. // This should be called first on any BinlogEvent, and other methods should // only be called if this one returns true. This ensures you won't get panics // due to bounds checking on the byte array. IsValid() bool // IsFormatDescription returns true if this is a FORMAT_DESCRIPTION_EVENT. IsFormatDescription() bool // IsQuery returns true if this is a QUERY_EVENT, which encompasses all SQL // statements. IsQuery() bool // IsXID returns true if this is an XID_EVENT, which is an alternate form of // COMMIT. IsXID() bool // IsGTID returns true if this is a GTID_EVENT. IsGTID() bool // IsRotate returns true if this is a ROTATE_EVENT. IsRotate() bool // IsIntVar returns true if this is an INTVAR_EVENT. IsIntVar() bool // IsRand returns true if this is a RAND_EVENT. IsRand() bool // HasGTID returns true if this event contains a GTID. That could either be // because it's a GTID_EVENT (MariaDB, MySQL 5.6), or because it is some // arbitrary event type that has a GTID in the header (Google MySQL). HasGTID(BinlogFormat) bool // Timestamp returns the timestamp from the event header. Timestamp() uint32 // Format returns a BinlogFormat struct based on the event data. // This is only valid if IsFormatDescription() returns true. Format() (BinlogFormat, error) // GTID returns the GTID from the event. // This is only valid if HasGTID() returns true. GTID(BinlogFormat) (myproto.GTID, error) // IsBeginGTID returns true if this is a GTID_EVENT that also serves as a // BEGIN statement. Otherwise, the GTID_EVENT is just providing the GTID for // the following QUERY_EVENT. // This is only valid if IsGTID() returns true. IsBeginGTID(BinlogFormat) bool // Query returns a Query struct representing data from a QUERY_EVENT. // This is only valid if IsQuery() returns true. Query(BinlogFormat) (Query, error) // IntVar returns the name and value of the variable for an INTVAR_EVENT. // This is only valid if IsIntVar() returns true. IntVar(BinlogFormat) (string, uint64, error) // Rand returns the two seed values for a RAND_EVENT. // This is only valid if IsRand() returns true. Rand(BinlogFormat) (uint64, uint64, error) // StripChecksum returns the checksum and a modified event with the checksum // stripped off, if any. If there is no checksum, it returns the same event // and a nil checksum. StripChecksum(BinlogFormat) (ev BinlogEvent, checksum []byte, err error) }
BinlogEvent represents a single event from a raw MySQL binlog dump stream. The implementation is provided by each supported flavor in go/vt/mysqlctl.
BinlogStreamer receives these events through a mysqlctl.SlaveConnection and processes them, grouping statements into BinlogTransactions as appropriate.
Methods that only access header fields can't fail as long as IsValid() returns true, so they have a single return value. Methods that might fail even when IsValid() is true return an error value.
Methods that require information from the initial FORMAT_DESCRIPTION_EVENT will have a BinlogFormat parameter.
type BinlogFormat ¶
type BinlogFormat struct { // FormatVersion is the version number of the binlog file format. FormatVersion uint16 // ServerVersion is the name of the MySQL server version. ServerVersion string // HeaderLength is the size in bytes of event headers other than FORMAT_DESCRIPTION_EVENT. HeaderLength byte // ChecksumAlgorithm is the ID number of the binlog checksum algorithm. ChecksumAlgorithm byte }
BinlogFormat contains relevant data from the FORMAT_DESCRIPTION_EVENT. This structure is passed to subsequent event types to let them know how to parse themselves.
func (BinlogFormat) IsZero ¶
func (f BinlogFormat) IsZero() bool
IsZero returns true if the BinlogFormat has not been initialized.
type BinlogTransaction ¶
BinlogTransaction represents one transaction as read from the binlog. Timestamp is set if the first statement was something like 'SET TIMESTAMP=...'
func ProtoToBinlogTransaction ¶
func ProtoToBinlogTransaction(bt *pb.BinlogTransaction) *BinlogTransaction
ProtoToBinlogTransaction converts a proto to a BinlogTransaction
func (*BinlogTransaction) MarshalBson ¶
func (binlogTransaction *BinlogTransaction) MarshalBson(buf *bytes2.ChunkedWriter, key string)
MarshalBson bson-encodes BinlogTransaction.
func (*BinlogTransaction) UnmarshalBson ¶
func (binlogTransaction *BinlogTransaction) UnmarshalBson(buf *bytes.Buffer, kind byte)
UnmarshalBson bson-decodes into BinlogTransaction.
type BlpPosition ¶
type BlpPosition struct { Uid uint32 Position myproto.ReplicationPosition }
BlpPosition describes a binlog player position to start from.
func ProtoToBlpPosition ¶
func ProtoToBlpPosition(b *pbt.BlpPosition) *BlpPosition
ProtoToBlpPosition converts a proto to a BlpPosition
func (*BlpPosition) MarshalBson ¶
func (blpPosition *BlpPosition) MarshalBson(buf *bytes2.ChunkedWriter, key string)
MarshalBson bson-encodes BlpPosition.
func (*BlpPosition) UnmarshalBson ¶
func (blpPosition *BlpPosition) UnmarshalBson(buf *bytes.Buffer, kind byte)
UnmarshalBson bson-decodes into BlpPosition.
type BlpPositionList ¶
type BlpPositionList struct {
Entries []BlpPosition
}
BlpPositionList is a list of BlpPosition, not sorted.
func ProtoToBlpPositionList ¶
func ProtoToBlpPositionList(l []*pbt.BlpPosition) *BlpPositionList
ProtoToBlpPositionList converts a proto to a BlpPositionList
func (*BlpPositionList) FindBlpPositionById ¶
func (bpl *BlpPositionList) FindBlpPositionById(id uint32) (*BlpPosition, error)
FindBlpPositionById returns the BlpPosition with the given id, or error
func (*BlpPositionList) MarshalBson ¶
func (blpPositionList *BlpPositionList) MarshalBson(buf *bytes2.ChunkedWriter, key string)
MarshalBson bson-encodes BlpPositionList.
func (*BlpPositionList) UnmarshalBson ¶
func (blpPositionList *BlpPositionList) UnmarshalBson(buf *bytes.Buffer, kind byte)
UnmarshalBson bson-decodes into BlpPositionList.
type KeyRangeRequest ¶
type KeyRangeRequest struct { Position string KeyspaceIdType key.KeyspaceIdType KeyRange key.KeyRange Charset *mproto.Charset }
KeyRangeRequest is used to make a request for StreamKeyRange.
type Statement ¶
Statement represents one statement as read from the binlog.
func ProtoToStatement ¶
func ProtoToStatement(s *pb.BinlogTransaction_Statement) Statement
ProtoToStatement converts a proto to a Statement
func (*Statement) MarshalBson ¶
func (statement *Statement) MarshalBson(buf *bytes2.ChunkedWriter, key string)
MarshalBson bson-encodes Statement.
type StreamEvent ¶
type StreamEvent struct { // Category can be "DML", "DDL", "ERR" or "POS" Category string // TableName, PrimaryKeyFields and PrimaryKeyValues are set for DML TableName string PrimaryKeyFields []mproto.Field PrimaryKeyValues [][]sqltypes.Value // Sql is set for DDL or ERR Sql string // Timestamp is set for DML, DDL or ERR Timestamp int64 // TransactionID is set for POS TransactionID string }
StreamEvent represents one event for the update stream.
func ProtoToStreamEvent ¶
func ProtoToStreamEvent(s *pb.StreamEvent) *StreamEvent
ProtoToStreamEvent converts a proto to a StreamEvent
func (*StreamEvent) MarshalBson ¶
func (streamEvent *StreamEvent) MarshalBson(buf *bytes2.ChunkedWriter, key string)
MarshalBson bson-encodes StreamEvent.
func (*StreamEvent) UnmarshalBson ¶
func (streamEvent *StreamEvent) UnmarshalBson(buf *bytes.Buffer, kind byte)
UnmarshalBson bson-decodes into StreamEvent.
type TablesRequest ¶
TablesRequest is used to make a request for StreamTables.
type UpdateStream ¶
type UpdateStream interface { // ServeUpdateStream serves the query and streams the result // for the full update stream ServeUpdateStream(position string, sendReply func(reply *StreamEvent) error) error // StreamKeyRange streams events related to a KeyRange only StreamKeyRange(position string, keyspaceIdType key.KeyspaceIdType, keyRange *pb.KeyRange, charset *mproto.Charset, sendReply func(reply *BinlogTransaction) error) error // StreamTables streams events related to a set of Tables only StreamTables(position string, tables []string, charset *mproto.Charset, sendReply func(reply *BinlogTransaction) error) error // HandlePanic should be called in a defer, // first thing in the RPC implementation. HandlePanic(*error) }
UpdateStream is the interface for the server
type UpdateStreamRequest ¶
type UpdateStreamRequest struct {
Position string
}
UpdateStreamRequest is used to make a request for ServeUpdateStream.