From 99c4b777e4d1d6fa12db1d9a40e307f8079f1f39 Mon Sep 17 00:00:00 2001 From: lance6716 Date: Fri, 17 Dec 2021 13:50:53 +0800 Subject: [PATCH 1/2] Set slave_uuid and replica_uuid --- replication/binlogsyncer.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/replication/binlogsyncer.go b/replication/binlogsyncer.go index 6d0111429..7c35362ae 100644 --- a/replication/binlogsyncer.go +++ b/replication/binlogsyncer.go @@ -10,11 +10,12 @@ import ( "sync" "time" - "github.com/go-mysql-org/go-mysql/client" - . "github.com/go-mysql-org/go-mysql/mysql" "github.com/pingcap/errors" uuid "github.com/satori/go.uuid" "github.com/siddontang/go-log/log" + + "github.com/go-mysql-org/go-mysql/client" + . "github.com/go-mysql-org/go-mysql/mysql" ) var ( @@ -311,6 +312,12 @@ func (b *BinlogSyncer) registerSlave() error { return errors.Trace(err) } + serverUUID := uuid.NewV1() + if _, err = b.c.Execute(fmt.Sprintf("SET @slave_uuid = '%s', @replica_uuid = '%s'", serverUUID, serverUUID)); err != nil { + log.Errorf("failed to set @slave_uuid = '%s', err: %v", serverUUID, err) + return errors.Trace(err) + } + return nil } From 169bae9578e09c692b0f5c15b3e2c390170af432 Mon Sep 17 00:00:00 2001 From: lance6716 Date: Fri, 17 Dec 2021 14:10:02 +0800 Subject: [PATCH 2/2] add test --- replication/replication_test.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/replication/replication_test.go b/replication/replication_test.go index 621d7236e..57513651a 100644 --- a/replication/replication_test.go +++ b/replication/replication_test.go @@ -10,10 +10,11 @@ import ( "testing" "time" - "github.com/go-mysql-org/go-mysql/client" - "github.com/go-mysql-org/go-mysql/mysql" . "github.com/pingcap/check" uuid "github.com/satori/go.uuid" + + "github.com/go-mysql-org/go-mysql/client" + "github.com/go-mysql-org/go-mysql/mysql" ) // Use docker mysql to test, mysql is 3306, mariadb is 3316 @@ -37,7 +38,6 @@ type testSyncerSuite struct { var _ = Suite(&testSyncerSuite{}) func (t *testSyncerSuite) SetUpSuite(c *C) { - } func (t *testSyncerSuite) TearDownSuite(c *C) { @@ -274,8 +274,8 @@ func (t *testSyncerSuite) setupTest(c *C, flavor string) { c.Skip(err.Error()) } - // _, err = t.c.Execute("CREATE DATABASE IF NOT EXISTS test") - // c.Assert(err, IsNil) + _, err = t.c.Execute("CREATE DATABASE IF NOT EXISTS test") + c.Assert(err, IsNil) _, err = t.c.Execute("USE test") c.Assert(err, IsNil) @@ -307,6 +307,12 @@ func (t *testSyncerSuite) testPositionSync(c *C) { s, err := t.b.StartSync(mysql.Position{Name: binFile, Pos: uint32(binPos)}) c.Assert(err, IsNil) + // check we have set Slave_UUID + r, err = t.c.Execute("SHOW SLAVE HOSTS") + c.Assert(err, IsNil) + slaveUUID, _ := r.GetString(0, 4) + c.Assert(slaveUUID, HasLen, 36) + // Test re-sync. time.Sleep(100 * time.Millisecond) _ = t.b.c.SetReadDeadline(time.Now().Add(time.Millisecond))