基于serf的数据库同步模块库
liuxiaolong
2020-09-16 0b8e441d4b176823255ed45f5156e71714ff3f27
dbself.go
@@ -6,7 +6,6 @@
   "os"
   "os/exec"
   "path/filepath"
   "strconv"
   "strings"
   "sync"
   "github.com/jinzhu/gorm"
@@ -120,43 +119,19 @@
         result := tx.Exec(sql)
         err = result.Error
         if err !=nil {
            return false,result.Error
            logger.Error("ExecuteSqlByGorm err:",err,",sql:",sql)
            return false,err
         }
         if result.RowsAffected == 0{
            logger.Error("ExecuteSqlByGorm fail")
            return false,errors.New("ExecuteSqlByGorm fail")
         if result.RowsAffected == 0 {
            logger.Debug("ExecuteSqlByGorm RowsAffected == 0",",sql:",sql)
            err = errors.New("ExecuteSqlByGorm RowsAffected == 0")
            return false,err
         }
      }
      tx.Commit()
      return true,nil
   }
   return false,errors.New("localDb is nil")
}
type SyncSerf struct {
   LamportTime string `json:"lamport_time"`
}
func QueryLTimeFromDbByGorm() uint64 {
   if localDb != nil {
      var syncSerf []SyncSerf
      err := localDb.Raw("select * from sync_serf").Scan(&syncSerf).Error
      if err == nil && len(syncSerf) > 0 {
         ltStr := syncSerf[0].LamportTime
         logger.Info("db.LamportTime str:", ltStr)
         t, e := strconv.ParseUint(ltStr, 10, 64)
         if e != nil {
            logger.Error("db.LamportTime parseUint err:", e)
         } else {
            curLTime = t
         }
         logger.Info("db.LamportTime:", ltStr)
      } else {
         logger.Error("get db.LamportTime err:", err)
      }
   }
   return 0
}
type TableDesc struct {
@@ -179,10 +154,12 @@
      var arr []string
      var dumpSql []DumpSql
      for _,table :=range tableNames {
         logger.Info("dump current tableName:", table)
         dumpSql = make([]DumpSql, 0)
         var tDescArr []TableDesc
         tSql := fmt.Sprintf(`PRAGMA table_info("%s")`, table)
         err := localDb.Raw(tSql).Scan(&tDescArr).Error
         logger.Debug("tDescArr err:", err, "len(tDescArr)=", len(tDescArr))
         if err !=nil {
            return nil,errors.New("tableDesc err")
         }
@@ -214,9 +191,9 @@
         logger.Info("tSql:",tSql)
         err = localDb.Raw(tSql).Scan(&dumpSql).Error
         logger.Debug("dump err:", err)
         if err !=nil {
            return nil,errors.New("dump err")
            continue
         }
         if len(dumpSql)>0 {
            for _,d :=range dumpSql {