Skip to content
This repository has been archived by the owner on Nov 24, 2023. It is now read-only.

Commit

Permalink
source: check whether GTID is ON in the upstream ealier (#946) (#957)
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-srebot authored Aug 29, 2020
1 parent bd4ab6a commit 7f7a501
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions _utils/terror_gen/errors_release.txt
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ ErrTaskCheckGenTableRouter,[code=26003:class=task-check:scope=internal:level=med
ErrTaskCheckGenColumnMapping,[code=26004:class=task-check:scope=internal:level=medium], "Message: generate column mapping error, Workaround: Please check the `column-mappings` config in task configuration file."
ErrTaskCheckSyncConfigError,[code=26005:class=task-check:scope=internal:level=medium], "Message: %s: %v\n detail: %v"
ErrTaskCheckGenBAList,[code=26006:class=task-check:scope=internal:level=medium], "Message: generate block allow list error, Workaround: Please check the `block-allow-list` config in task configuration file."
ErrSourceCheckGTID,[code=26007:class=task-check:scope=internal:level=medium], "Message: %s has GTID_MODE = %s instead of ON, Workaround: Please check the `enable-gtid` config in source configuration file."
ErrRelayParseUUIDIndex,[code=28001:class=relay-event-lib:scope=internal:level=high], "Message: parse server-uuid.index"
ErrRelayParseUUIDSuffix,[code=28002:class=relay-event-lib:scope=internal:level=high], "Message: UUID (with suffix) %s not valid"
ErrRelayUUIDWithSuffixNotFound,[code=28003:class=relay-event-lib:scope=internal:level=high], "Message: no UUID (with suffix) matched %s found in %s, all UUIDs are %v"
Expand Down
10 changes: 10 additions & 0 deletions dm/config/source_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,16 @@ func (c *SourceConfig) Adjust(db *sql.DB) (err error) {
}
}

if c.EnableGTID {
val, err := utils.GetGTID(db)
if err != nil {
return err
}
if val != "ON" {
return terror.ErrSourceCheckGTID.Generate(c.SourceID, val)
}
}

return nil
}

Expand Down
1 change: 1 addition & 0 deletions dm/master/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -1351,6 +1351,7 @@ func parseAndAdjustSourceConfig(contents []string) ([]*config.SourceConfig, erro
if _, err = cfg.Yaml(); err != nil {
return cfgs, err
}

cfgs[i] = cfg
}
return cfgs, nil
Expand Down
6 changes: 6 additions & 0 deletions errors.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1048,6 +1048,12 @@ description = ""
workaround = "Please check the `block-allow-list` config in task configuration file."
tags = ["internal", "medium"]

[error.DM-task-check-26007]
message = "%s has GTID_MODE = %s instead of ON"
description = ""
workaround = "Please check the `enable-gtid` config in source configuration file."
tags = ["internal", "medium"]

[error.DM-relay-event-lib-28001]
message = "parse server-uuid.index"
description = ""
Expand Down
2 changes: 2 additions & 0 deletions pkg/terror/error_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ const (
codeTaskCheckGenColumnMapping
codeTaskCheckSyncConfigError
codeTaskCheckGenBAList
codeSourceCheckGTID
)

// Relay log utils error code
Expand Down Expand Up @@ -811,6 +812,7 @@ var (
ErrTaskCheckGenColumnMapping = New(codeTaskCheckGenColumnMapping, ClassTaskCheck, ScopeInternal, LevelMedium, "generate column mapping error", "Please check the `column-mappings` config in task configuration file.")
ErrTaskCheckSyncConfigError = New(codeTaskCheckSyncConfigError, ClassTaskCheck, ScopeInternal, LevelMedium, "%s: %v\n detail: %v", "")
ErrTaskCheckGenBAList = New(codeTaskCheckGenBAList, ClassTaskCheck, ScopeInternal, LevelMedium, "generate block allow list error", "Please check the `block-allow-list` config in task configuration file.")
ErrSourceCheckGTID = New(codeSourceCheckGTID, ClassTaskCheck, ScopeInternal, LevelMedium, "%s has GTID_MODE = %s instead of ON", "Please check the `enable-gtid` config in source configuration file.")

// Relay log basic API error
ErrRelayParseUUIDIndex = New(codeRelayParseUUIDIndex, ClassRelayEventLib, ScopeInternal, LevelHigh, "parse server-uuid.index", "")
Expand Down
2 changes: 2 additions & 0 deletions pkg/terror/terror.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const (
ClassBinlogOp
ClassCheckpoint
ClassTaskCheck
ClassSourceCheck
ClassRelayEventLib
ClassRelayUnit
ClassDumpUnit
Expand All @@ -59,6 +60,7 @@ var errClass2Str = map[ErrClass]string{
ClassBinlogOp: "binlog-op",
ClassCheckpoint: "checkpoint",
ClassTaskCheck: "task-check",
ClassSourceCheck: "source-check",
ClassRelayEventLib: "relay-event-lib",
ClassRelayUnit: "relay-unit",
ClassDumpUnit: "dump-unit",
Expand Down
6 changes: 6 additions & 0 deletions pkg/utils/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -403,3 +403,9 @@ func IsErrBinlogPurged(err error) bool {
func IsNoSuchThreadError(err error) bool {
return IsMySQLError(err, tmysql.ErrNoSuchThread)
}

// GetGTID return GTID_MODE
func GetGTID(db *sql.DB) (string, error) {
val, err := GetGlobalVariable(db, "GTID_MODE")
return val, err
}

0 comments on commit 7f7a501

Please sign in to comment.