Skip to content

Commit 0c0c5e0

Browse files
author
ffffwh
committed
use UTC timestamp #957
1 parent 6f20972 commit 0c0c5e0

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

driver/mysql/binlog/binlog_reader.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ func NewBinlogReader(
253253
HeartbeatPeriod: 3 * time.Second,
254254
ReadTimeout: 12 * time.Second,
255255

256-
ParseTime: false, // must be false, or gencode will complain.
256+
ParseTime: false, // must be false, or gencode will complain.
257+
TimestampStringLocation: time.UTC,
257258

258259
MemLimitSize: int64(g.MemAvailable / 5),
259260
MemLimitSeconds: 2,
@@ -322,10 +323,9 @@ func (b *BinlogReader) ConnectBinlogStreamer(coordinates common.MySQLCoordinates
322323
ctx, b.relayCancelF = context.WithCancel(b.ctx)
323324

324325
{
325-
loc, _ := time.LoadLocation("Local") // TODO
326326
brConfig := &dmstreamer.BinlogReaderConfig{
327327
RelayDir: b.getBinlogDir(),
328-
Timezone: loc,
328+
Timezone: time.UTC,
329329
}
330330
b.binlogReader = dmstreamer.NewBinlogReader(dmlog.L(), brConfig)
331331
}

driver/mysql/extractor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ func (e *Extractor) initDBConnections() (err error) {
737737
}
738738
}
739739
// https://github.com/go-sql-driver/mysql#system-variables
740-
dumpUri := fmt.Sprintf("%s&%s='REPEATABLE-READ'", e.mysqlContext.SrcConnectionConfig.GetSingletonDBUri(),
740+
dumpUri := fmt.Sprintf("%s&%s='REPEATABLE-READ'", e.mysqlContext.SrcConnectionConfig.GetDBUri(),
741741
getTxIsolationVarName(e.mysqlVersionDigit))
742742
if e.singletonDB, err = sql.CreateDB(dumpUri); err != nil {
743743
return err

driver/mysql/mysqlconfig/connection.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ package mysqlconfig
88

99
import (
1010
"fmt"
11+
"net/url"
1112
)
1213

14+
// insert TIMESTAMP in UTC
15+
var utcTimeZoneQueryStr = fmt.Sprintf("time_zone=%v", url.QueryEscape("'+00:00'"))
16+
1317
// ConnectionConfig is the minimal configuration required to connect to a MySQL server
1418
type ConnectionConfig struct {
1519
Host string
@@ -19,19 +23,14 @@ type ConnectionConfig struct {
1923
Charset string
2024
}
2125

22-
func (c *ConnectionConfig) GetDBUriByDbName(databaseName string) string {
23-
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%v&maxAllowedPacket=0", c.User, c.Password, c.Host, c.Port, databaseName, c.Charset)
24-
}
25-
2626
func (c *ConnectionConfig) GetDBUri() string {
27-
if "" == c.Charset {
27+
if c.Charset == "" {
2828
c.Charset = "utf8mb4"
2929
}
30-
return fmt.Sprintf("%s:%s@tcp(%s:%d)/?timeout=5s&tls=false&autocommit=true&charset=%v&multiStatements=true&maxAllowedPacket=0", c.User, c.Password, c.Host, c.Port, c.Charset)
31-
}
3230

33-
func (c *ConnectionConfig) GetSingletonDBUri() string {
34-
return fmt.Sprintf("%s:%s@tcp(%s:%d)/?timeout=5s&tls=false&autocommit=false&charset=%v&multiStatements=true&maxAllowedPacket=0", c.User, c.Password, c.Host, c.Port, c.Charset)
31+
return fmt.Sprintf("%s:%s@tcp(%s:%d)/?timeout=5s&tls=false&autocommit=true&charset=%v&%v&%v&%v",
32+
c.User, c.Password, c.Host, c.Port, c.Charset, utcTimeZoneQueryStr,
33+
"multiStatements=true", "maxAllowedPacket=0")
3534
}
3635

3736
func (c *ConnectionConfig) GetAddr() string {

0 commit comments

Comments
 (0)