liuxiaolong
2020-05-13 14f478ef3cc343e72f76e07b75ea6927b8f305f6
sync share data from cluster
3个文件已修改
365 ■■■■■ 已修改文件
.idea/workspace.xml 285 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cluster.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sync.go 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml
@@ -2,8 +2,7 @@
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="e3303c4d-ac69-4436-b80e-4e2521d4dcc3" name="Default Changelist" comment="">
      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/main.go" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cluster.go" beforeDir="false" afterPath="$PROJECT_DIR$/cluster.go" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/sync.go" beforeDir="false" afterPath="$PROJECT_DIR$/sync.go" afterDir="false" />
    </list>
@@ -30,25 +29,45 @@
  <component name="DefaultGradleProjectSettings">
    <option name="isMigrated" value="true" />
  </component>
  <component name="FUSProjectUsageTrigger">
    <session id="1086019791">
      <usages-collector id="statistics.lifecycle.project">
        <counts>
          <entry key="project.open.time.1" value="1" />
          <entry key="project.opened" value="1" />
        </counts>
      </usages-collector>
      <usages-collector id="statistics.file.extensions.edit">
        <counts>
          <entry key="go" value="611" />
        </counts>
      </usages-collector>
      <usages-collector id="statistics.file.types.edit">
        <counts>
          <entry key="Go" value="611" />
        </counts>
      </usages-collector>
    </session>
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file pinned="false" current-in-tab="false">
      <file pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/cluster.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="60">
              <caret line="2" selection-start-line="2" selection-end-line="2" />
              <folding>
                <element signature="e#35#177#0" expanded="true" />
              </folding>
            <state relative-caret-position="114">
              <caret line="6" column="37" selection-start-line="6" selection-start-column="37" selection-end-line="6" selection-end-column="37" />
            </state>
          </provider>
        </entry>
      </file>
      <file pinned="false" current-in-tab="true">
      <file pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="330">
              <caret line="26" lean-forward="true" selection-start-line="26" selection-end-line="26" />
            <state relative-caret-position="365">
              <caret line="24" column="9" lean-forward="true" selection-start-line="24" selection-start-column="9" selection-end-line="24" selection-end-column="9" />
              <folding>
                <element signature="e#36#97#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
@@ -56,8 +75,8 @@
      <file pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/sync.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="60">
              <caret line="2" selection-start-line="2" selection-end-line="2" />
            <state relative-caret-position="114">
              <caret line="6" column="19" lean-forward="true" selection-start-line="6" selection-start-column="19" selection-end-line="6" selection-end-column="19" />
            </state>
          </provider>
        </entry>
@@ -96,9 +115,12 @@
      <find>syncInit</find>
      <find>Error creating Serf</find>
      <find>aaa</find>
      <find>strconv</find>
      <find>time</find>
      <find>logger</find>
    </findStrings>
  </component>
  <component name="GOROOT" path="D:\program\go" />
  <component name="GOROOT" path="C:\Go" />
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
@@ -109,23 +131,30 @@
        <option value="$PROJECT_DIR$/db/db.go" />
        <option value="$PROJECT_DIR$/db/cluster.go" />
        <option value="$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go" />
        <option value="$PROJECT_DIR$/main.go" />
        <option value="$PROJECT_DIR$/sync.go" />
        <option value="$PROJECT_DIR$/cluster.go" />
        <option value="$PROJECT_DIR$/main.go" />
      </list>
    </option>
  </component>
  <component name="ProjectFrameBounds" extendedState="6">
    <option name="x" value="84" />
    <option name="y" value="64" />
  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
  <component name="JsGulpfileManager">
    <detection-done>true</detection-done>
    <sorting>DEFINITION_ORDER</sorting>
  </component>
  <component name="ProjectFrameBounds">
    <option name="x" value="5" />
    <option name="y" value="19" />
    <option name="width" value="1855" />
    <option name="height" value="939" />
    <option name="height" value="1027" />
  </component>
  <component name="ProjectView">
    <navigator proportions="" version="1">
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="Scope" />
      <pane id="ProjectPane">
        <subPane>
          <expand>
@@ -133,77 +162,11 @@
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="androidSync" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="runtime" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="runtime" type="462c0819:PsiDirectoryNode" />
              <item name="debug" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
              <item name="Android" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
              <item name="Android" type="462c0819:PsiDirectoryNode" />
              <item name="syncdb.git" type="462c0819:PsiDirectoryNode" />
            </path>
          </expand>
          <select />
        </subPane>
      </pane>
      <pane id="PackagesPane" />
      <pane id="Scope" />
    </panes>
  </component>
  <component name="PropertiesComponent">
@@ -282,6 +245,7 @@
      <workItem from="1570592385068" duration="519000" />
      <workItem from="1576559914307" duration="5390000" />
      <workItem from="1576636227327" duration="2169000" />
      <workItem from="1589351689010" duration="8475000" />
    </task>
    <task id="LOCAL-00001" summary="首次提交">
      <created>1567763026206</created>
@@ -294,12 +258,13 @@
    <servers />
  </component>
  <component name="TimeTrackingManager">
    <option name="totallyTimeSpent" value="68953000" />
    <option name="totallyTimeSpent" value="77428000" />
  </component>
  <component name="ToolWindowManager">
    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
    <frame x="5" y="19" width="1855" height="1027" extended-state="0" />
    <editor active="true" />
    <layout>
      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.22965738" />
      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24233983" />
      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
      <window_info id="Image Layers" order="2" />
      <window_info id="Designer" order="3" />
@@ -315,9 +280,10 @@
      <window_info anchor="bottom" id="TODO" order="6" />
      <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
      <window_info anchor="bottom" id="Version Control" order="8" weight="0.3293023" />
      <window_info anchor="bottom" id="Database Changes" order="9" />
      <window_info anchor="bottom" id="Terminal" order="10" weight="0.3248337" />
      <window_info anchor="bottom" id="Database Changes" order="9" show_stripe_button="false" />
      <window_info anchor="bottom" id="Terminal" order="10" visible="true" weight="0.33986175" />
      <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
      <window_info anchor="right" id="Maven Projects" />
      <window_info anchor="right" id="SciView" order="0" />
      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
      <window_info anchor="right" id="Ant Build" order="2" weight="0.25" />
@@ -334,6 +300,9 @@
  <component name="TypeScriptGeneratedFilesManager">
    <option name="version" value="1" />
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="VcsManagerConfiguration">
    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
    <option name="CHECK_NEW_TODO" value="false" />
@@ -348,41 +317,6 @@
          <line>98</line>
          <option name="timeStamp" value="1" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>11</line>
          <option name="timeStamp" value="2" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>12</line>
          <option name="timeStamp" value="3" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>13</line>
          <option name="timeStamp" value="4" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>16</line>
          <option name="timeStamp" value="5" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>17</line>
          <option name="timeStamp" value="6" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>18</line>
          <option name="timeStamp" value="7" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>10</line>
          <option name="timeStamp" value="8" />
        </line-breakpoint>
      </breakpoints>
    </breakpoint-manager>
  </component>
@@ -392,42 +326,12 @@
    <entry file="file://$PROJECT_DIR$/db/dbTablePersons.go" />
    <entry file="file://$PROJECT_DIR$/db/db.go" />
    <entry file="file://$PROJECT_DIR$/db/dbLogger.go" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/searcher.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1547">
          <caret line="97" column="5" selection-start-line="97" selection-start-column="5" selection-end-line="97" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/dbself.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="391">
          <caret line="31" column="5" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/valib/logger.git/logger.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="170">
          <caret line="17" column="4" selection-start-line="17" selection-start-column="4" selection-end-line="17" selection-end-column="4" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/searcher.go" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/dbself.go" />
    <entry file="file://$PROJECT_DIR$/../basic.com/valib/logger.git/logger.go" />
    <entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/a3bd5e95-52ff-4668-b73d-db976a28f634/console.sql" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/db.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="17">
          <caret line="94" selection-start-line="94" selection-end-line="94" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../github.com/jinzhu/gorm/main.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="331">
          <caret line="659" column="1" selection-start-line="659" selection-start-column="1" selection-end-line="659" selection-end-column="1" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/db.go" />
    <entry file="file://$PROJECT_DIR$/../github.com/jinzhu/gorm/main.go" />
    <entry file="file://$PROJECT_DIR$/androidSync/AndroidSync.java" />
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
@@ -439,65 +343,32 @@
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/proc.go">
    <entry file="file://D:/program/go/src/runtime/proc.go" />
    <entry file="file://D:/program/go/src/runtime/asm_amd64.s" />
    <entry file="file://D:/program/go/src/os/file.go" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go" />
    <entry file="file://D:/program/go/src/runtime/debug/stack.go" />
    <entry file="file://$PROJECT_DIR$/main.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="30">
          <caret line="199" selection-start-line="199" selection-end-line="199" />
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/asm_amd64.s">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="168">
          <caret line="1336" selection-start-line="1336" selection-end-line="1336" />
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/os/file.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="78">
          <caret line="140" column="15" selection-start-line="140" selection-start-column="15" selection-end-line="140" selection-end-column="15" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1230">
          <caret line="98" column="37" selection-start-line="98" selection-start-column="37" selection-end-line="98" selection-end-column="37" />
        <state relative-caret-position="365">
          <caret line="24" column="9" lean-forward="true" selection-start-line="24" selection-start-column="9" selection-end-line="24" selection-end-column="9" />
          <folding>
            <element signature="e#818#1135#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/debug/stack.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="150">
          <caret line="20" column="5" selection-start-line="20" selection-start-column="5" selection-end-line="20" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/cluster.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="60">
          <caret line="2" selection-start-line="2" selection-end-line="2" />
          <folding>
            <element signature="e#35#177#0" expanded="true" />
            <element signature="e#36#97#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/sync.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="60">
          <caret line="2" selection-start-line="2" selection-end-line="2" />
        <state relative-caret-position="114">
          <caret line="6" column="19" lean-forward="true" selection-start-line="6" selection-start-column="19" selection-end-line="6" selection-end-column="19" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main.go">
    <entry file="file://$PROJECT_DIR$/cluster.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="330">
          <caret line="26" lean-forward="true" selection-start-line="26" selection-end-line="26" />
        <state relative-caret-position="114">
          <caret line="6" column="37" selection-start-line="6" selection-start-column="37" selection-end-line="6" selection-end-column="37" />
        </state>
      </provider>
    </entry>
cluster.go
@@ -19,9 +19,13 @@
    dBNameClusterNode  = "cluster_node"
    dBNameTables       = "dbTables"
    dBNameTablePersons = "dbtablepersons"
    dbNameOrg = "org"
    dbNamePerson = "person"
    dbNamePersonCameraImagePath = "person_camera_image_path"
    dbNamePersonIdentity = "person_identity"
)
var syncTables = []string{dBNameCluster, dBNameClusterNode, dBNameTables, dBNameTablePersons}
var syncTables = []string{ dBNameClusterNode, dBNameCluster, dBNameTablePersons, dBNameTables, dbNameOrg, dbNamePersonCameraImagePath, dbNamePersonIdentity, dbNamePerson }
var agent *sdb.Agent
var members *memberlist.Memberlist
var sqliteDBPath string = defaultSqliteDBPath
sync.go
@@ -5,9 +5,7 @@
    sdb "basic.com/Android/syncdb.git"
    "basic.com/valib/logger.git"
    "encoding/json"
    "strconv"
    "strings"
    "time"
)
type ReceiveSqlInterface2 interface {
    sdb.ReceiveSqlInterface
@@ -65,6 +63,14 @@
    return true
}
func RegisterDbHandler(h sdb.DbHandler) {
    sdb.RegisterDbHandler(h)
}
func RegisterDbDumpHandler(h sdb.DbDumpHandler) {
    sdb.RegisterDbDumpHandler(h)
}
func JoinByNodeAddrs(strAddrs string) bool {
    if strAddrs == "" {
        logger.Error("strAddrs == \"\"")
@@ -87,13 +93,21 @@
    if isOk { 
        logger.Debug("dbSync.Init success")
        if ! syncTableDataFromCluster(clusterID, devID, devIP, devName) {
        if !syncTableDataFromCluster(clusterID, devID, devIP, devName) {
            logger.Error("加入集群失败!!!")
            if agent != nil {
                agent.Leave()
                err := agent.Shutdown()
                if err != nil {
                    logger.Error("syncTableDataFromCluster err,shutdown err:", err)
                }
            }
            return false
        }
    } else {
        logger.Error("dbSync.Init error")
        if agent != nil {
            agent.Leave()
            err := agent.Shutdown()
            if err != nil {
                logger.Error("dbSync.Init err,shutdown err:", err)
@@ -116,21 +130,13 @@
}
func syncTableDataFromCluster(clusterID, devID, devIP, devName string) bool {
    var err error
    foreignSql := string("PRAGMA foreign_keys=OFF")
    _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false)
    if err != nil {
        return false
    }
    var sqls []string
    var sqls = []string{"PRAGMA foreign_keys=OFF"}
    var delSql string
    for _, t := range syncTables {
        if t == dBNameTables {
            delSql = "delete from " + t + " where (analyServerId='' or analyServerId=NULL)"
        } else if t == dBNameTablePersons {
        if t == dBNameTablePersons {
            delSql = "delete from " + t + " where tableId in (select id from dbtables where (analyServerId='' or analyServerId=NULL))"
        } else if t == dBNameTables {
            delSql = "delete from " + t + " where (analyServerId='' or analyServerId=NULL)"
        } else {
            delSql = "delete from " + t
        }
@@ -145,29 +151,31 @@
        }
    }
    logger.Debug("成功添加当前节点到集群节点中")
    logger.Debug("成功获取集群中数据")
    timeUnix := time.Now().Unix()
    fmtTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
    sqlSync := "insert into cluster_node(id,cluster_id,node_name,node_id,node_ip,create_time) values ('" +
        devID + "','" + clusterID + "','" + devName + "','" + devID + "','" +
        (devIP + ":" + strconv.Itoa(sdb.DefaultBindPort)) + "','" + fmtTimeStr + "')"
    sqls = append(sqls, sqlSync)
    _, err = sdb.ExecuteWriteSql(sqls, true)
    if err != nil {
        logger.Debug("sdb.ExecuteWriteSql ERROR:", err)
    //timeUnix := time.Now().Unix()
    //fmtTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
    //
    //sqlSync := "insert into cluster_node(id,cluster_id,node_name,node_id,node_ip,create_time) values ('" +
    //    devID + "','" + clusterID + "','" + devName + "','" + devID + "','" +
    //    (devIP + ":" + strconv.Itoa(sdb.DefaultBindPort)) + "','" + fmtTimeStr + "')"
    //sqls = append(sqls, sqlSync)
    sqls = append(sqls, "PRAGMA foreign_keys=ON")
    sqlDump := strings.Join(sqls, ";")
    if !sdb.DbHandle.Execute(sqlDump) {
        logger.Debug("sdb.DbHandle.Execute ret: false")
        return false
    } else {
        logger.Debug("sdb.DbHandle.Execute ret: true")
    }
    agent.SyncSql([]string{sqlSync})
    //agent.SyncSql([]string{sqlSync})
    foreignSql = string("PRAGMA foreign_keys=ON")
    _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false)
    if err != nil {
        return false
    }
    //foreignSql = string("PRAGMA foreign_keys=ON")
    //_, err = sdb.ExecuteWriteSql([]string{foreignSql}, false)
    //if err != nil {
    //    return false
    //}
    return true
}