From 10c65da3d2af7056f48d9301e83f53f102f76e18 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 30 十月 2023 14:52:11 +0800 Subject: [PATCH] fix --- serf/sync.go | 34 +++++++++++++++++++++++++++------- 1 files changed, 27 insertions(+), 7 deletions(-) diff --git a/serf/sync.go b/serf/sync.go index c6337cf..ce3c2fb 100644 --- a/serf/sync.go +++ b/serf/sync.go @@ -152,9 +152,9 @@ // 鍚姩鍚庢煡璇竴娆¢泦缇ょ姸鎬� ss.QueryClusterStat() - if ss.ClusterStatus != "" { - ss.sqlDB.LogMode(true) - } + //if ss.ClusterStatus != "" { + ss.sqlDB.LogMode(true) + //} initChan <- true <-q @@ -252,7 +252,7 @@ // 閫�鍑洪泦缇�, 寮�鍚棩蹇楄窡韪�, 璁剧疆瑙掕壊slave ss.clusterEventFn(EventLeaveCluster) ss.ClusterStatus = "" - ss.sqlDB.LogMode(false) + ss.sqlDB.LogMode(true) case "slave2master": ss.clusterEventFn(EventSlave2Master) ss.ClusterStatus = "master" @@ -371,7 +371,7 @@ } func (ss *SyncServer) handleClusterMessage(msg []byte) { - //fmt.Println("clusterMessage:", string(msg)) + logx.Infof("clusterMessage:", string(msg)) sql := string(msg) if len(sql) <= 0 { @@ -402,17 +402,37 @@ } } +// serf 鍚屾鏁版嵁鐨勯檺鍒朵负92160 byte func (ss *SyncServer) handleSyncTableMessage(msg []byte) error { + sizeLimit := 61440 targetId := string(msg) + //fmt.Println("鍚屾鍏ㄩ噺鏁版嵁缁欒妭鐐�:", targetId) sqls, err := DumpTables(ss.sqlDB, ss.syncTables) if err != nil { - fmt.Println("DumpTables error, ", err.Error()) + logx.Errorf("DumpTables error: %s", err.Error()) return err } + logx.Infof("DumpTables sql:%v", sqls) syncSql := strings.Join(sqls, ";") - err = ss.pubSyncSqlMessage([]byte(syncSql), targetId) + if len(syncSql) < sizeLimit { + err = ss.pubSyncSqlMessage([]byte(syncSql), targetId) + } else { + shard := "" + for _, sql := range sqls { + if len(shard)+len(sql) > sizeLimit { + err = ss.pubSyncSqlMessage([]byte(shard), targetId) + shard = "" + } + + shard = fmt.Sprintf("%s%s;", shard, sql) + } + + if len(shard) > 0 { + err = ss.pubSyncSqlMessage([]byte(shard), targetId) + } + } return err } -- Gitblit v1.8.0