binlog.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package binlog
  2. import "fmt"
  3. func (c *Conn) registerAsSlave() error {
  4. brsc := &RegisterSlaveCommand{
  5. Status: CommandRegisterSlave,
  6. ServerId: c.Config.ServerID,
  7. Hostname: "",
  8. User: "",
  9. Password: "",
  10. Port: 0,
  11. ReplRank: 0,
  12. MasterId: 0,
  13. }
  14. return c.writeBinlogRegisterSlaveCommand(brsc)
  15. }
  16. func (c *Conn) startBinlogStream() error {
  17. bldc := &DumpCommand{
  18. Status: CommandBinLogDump,
  19. Position: 120,
  20. Flags: DumpNonBlock,
  21. ServerId: c.Config.ServerID,
  22. Filename: c.Config.BinlogFile,
  23. }
  24. return c.writeBinlogDumpCommand(bldc)
  25. }
  26. func (c *Conn) listenForBinlog() error {
  27. for {
  28. p, err := c.readPacket()
  29. fmt.Printf("p = %+v\n", p)
  30. fmt.Printf("err = %+v\n", err)
  31. if err != nil || p == nil {
  32. return err
  33. }
  34. kp := p.(*OKPacket)
  35. c.getEventHeader(kp)
  36. }
  37. }
  38. func (c *Conn) getEventHeader(p *OKPacket) {
  39. /*
  40. 4 timestamp
  41. 1 event type
  42. 4 server-id
  43. 4 event-size
  44. if binlog-version > 1:
  45. 4 log pos
  46. 2 flags
  47. */
  48. _ = c.getInt(TypeFixedInt, 4)
  49. }