Update docs
This commit is contained in:
parent
c0582f3c96
commit
f86864db3f
|
@ -50,9 +50,9 @@ just like feature contributions.
|
||||||
|
|
||||||
Modified copy of [go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
|
Modified copy of [go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
|
||||||
is included with this project. It was changed in order to expose certain low
|
is included with this project. It was changed in order to expose certain low
|
||||||
level functions that are used to establish a slave connection and to remove
|
level functions that allow to establish a connection manually and register as a
|
||||||
automatic driver registration because it will likely conflict with the original
|
replica server and to remove automatic driver registration because it will
|
||||||
code when imported as a dependency.
|
likely conflict with the original code when imported as a dependency.
|
||||||
|
|
||||||
### Licence
|
### Licence
|
||||||
|
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -5,3 +5,5 @@ require (
|
||||||
github.com/google/go-cmp v0.3.1
|
github.com/google/go-cmp v0.3.1
|
||||||
github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9
|
github.com/juju/errors v0.0.0-20190930114154-d42613fe1ab9
|
||||||
)
|
)
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
|
@ -9,18 +9,24 @@ import (
|
||||||
"github.com/localhots/bocadillo/mysql/driver/internal/mysql"
|
"github.com/localhots/bocadillo/mysql/driver/internal/mysql"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Conn is a slave connection used to issue a binlog dump command.
|
// Conn is a connection used to issue a binlog dump command.
|
||||||
type Conn struct {
|
type Conn struct {
|
||||||
conn *mysql.ExtendedConn
|
conn *mysql.ExtendedConn
|
||||||
conf Config
|
conf Config
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config contains slave connection configuration. It is passed to master upon
|
// Config contains all the details necessary to establish a replica connection.
|
||||||
// registration.
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
ServerID uint32
|
// File and offset describe current state.
|
||||||
|
// File is the name of the binary log file.
|
||||||
File string
|
File string
|
||||||
|
// Offset is the binary offset of the first event in the binary log file,
|
||||||
|
// a starting point at which processing should begin.
|
||||||
Offset uint32
|
Offset uint32
|
||||||
|
// ServerID should be a unique replica server identifier (i guess).
|
||||||
|
ServerID uint32
|
||||||
|
// Hostname along with server ID is used to identify the replica server
|
||||||
|
// connection.
|
||||||
Hostname string
|
Hostname string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,13 +35,16 @@ const (
|
||||||
comRegisterSlave byte = 21
|
comRegisterSlave byte = 21
|
||||||
comBinlogDump byte = 18
|
comBinlogDump byte = 18
|
||||||
|
|
||||||
// Bytes
|
// Result codes
|
||||||
resultOK byte = 0x00
|
resultOK byte = 0x00
|
||||||
resultEOF byte = 0xFE
|
resultEOF byte = 0xFE
|
||||||
resultERR byte = 0xFF
|
resultERR byte = 0xFF
|
||||||
)
|
)
|
||||||
|
|
||||||
// Connect esablishes a new slave connection.
|
// Connect esablishes a new database connection. It is a go-sql-driver
|
||||||
|
// connection with a few low level functions exposed and with a high level
|
||||||
|
// wrapper that allows to execute just a few commands that are required for
|
||||||
|
// operation.
|
||||||
func Connect(dsn string, conf Config) (*Conn, error) {
|
func Connect(dsn string, conf Config) (*Conn, error) {
|
||||||
if conf.Hostname == "" {
|
if conf.Hostname == "" {
|
||||||
name, err := os.Hostname()
|
name, err := os.Hostname()
|
||||||
|
@ -62,8 +71,7 @@ func Connect(dsn string, conf Config) (*Conn, error) {
|
||||||
return &Conn{conn: extconn, conf: conf}, nil
|
return &Conn{conn: extconn, conf: conf}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadPacket reads next packet from the server and processes the first status
|
// ReadPacket reads next packet from the server and peeks at the status byte.
|
||||||
// byte.
|
|
||||||
func (c *Conn) ReadPacket(ctx context.Context) ([]byte, error) {
|
func (c *Conn) ReadPacket(ctx context.Context) ([]byte, error) {
|
||||||
data, err := c.conn.ReadPacket(ctx)
|
data, err := c.conn.ReadPacket(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -36,7 +36,7 @@ func (c *ExtendedConn) Exec(query string) error {
|
||||||
return c.exec(query)
|
return c.exec(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadPacket reads a packet from a given connection.
|
// ReadPacket reads a packet from the connection.
|
||||||
func (c *ExtendedConn) ReadPacket(ctx context.Context) ([]byte, error) {
|
func (c *ExtendedConn) ReadPacket(ctx context.Context) ([]byte, error) {
|
||||||
if dl, ok := ctx.Deadline(); ok {
|
if dl, ok := ctx.Deadline(); ok {
|
||||||
dur := dl.Sub(time.Now())
|
dur := dl.Sub(time.Now())
|
||||||
|
@ -51,7 +51,7 @@ func (c *ExtendedConn) ReadPacket(ctx context.Context) ([]byte, error) {
|
||||||
return c.readPacket()
|
return c.readPacket()
|
||||||
}
|
}
|
||||||
|
|
||||||
// WritePacket writes a packet to a given connection.
|
// WritePacket writes a packet to the connection.
|
||||||
func (c *ExtendedConn) WritePacket(p []byte) error {
|
func (c *ExtendedConn) WritePacket(p []byte) error {
|
||||||
return c.writePacket(p)
|
return c.writePacket(p)
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ var (
|
||||||
func New(dsn string, sc driver.Config) (*Reader, error) {
|
func New(dsn string, sc driver.Config) (*Reader, error) {
|
||||||
conn, err := driver.Connect(dsn, sc)
|
conn, err := driver.Connect(dsn, sc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "establish slave connection")
|
return nil, errors.Annotate(err, "establish connection")
|
||||||
}
|
}
|
||||||
|
|
||||||
r := &Reader{
|
r := &Reader{
|
||||||
|
@ -53,7 +53,7 @@ func New(dsn string, sc driver.Config) (*Reader, error) {
|
||||||
return nil, errors.Annotate(err, "disable binlog checksum")
|
return nil, errors.Annotate(err, "disable binlog checksum")
|
||||||
}
|
}
|
||||||
if err := conn.RegisterSlave(); err != nil {
|
if err := conn.RegisterSlave(); err != nil {
|
||||||
return nil, errors.Annotate(err, "register slave server")
|
return nil, errors.Annotate(err, "register replica server")
|
||||||
}
|
}
|
||||||
if err := conn.StartBinlogDump(); err != nil {
|
if err := conn.StartBinlogDump(); err != nil {
|
||||||
return nil, errors.Annotate(err, "start binlog dump")
|
return nil, errors.Annotate(err, "start binlog dump")
|
||||||
|
|
Loading…
Reference in New Issue