Skip to content

Commit 61e45f1

Browse files
committed
Using tmp file for storing db in sync
1 parent af4ef63 commit 61e45f1

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

logger/logger.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const (
1212
prefixMain = ":: "
1313
prefixSub = " -> "
1414
prefixCmd = " $ "
15-
prefixErr = " [ERROR] "
15+
prefixErr = "[ERROR] "
1616
)
1717

1818
type SyncLogger struct {

sync/server_sync_database.go

+23-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package sync
33
import (
44
"github.com/webdevops/go-shell"
55
"fmt"
6+
"io/ioutil"
7+
"os"
68
)
79

810
func (database *Database) Sync(server *Server) {
@@ -23,7 +25,6 @@ func (database *Database) syncClearDatabase(server *Server) {
2325
schema := database.Local.Schema
2426
database.Local.Schema = ""
2527

26-
2728
Logger.Step("dropping local database \"%s\"", schema)
2829
dropStmt := fmt.Sprintf("DROP DATABASE IF EXISTS `%s`", schema)
2930
dropCmd := shell.Cmd("echo", shell.Quote(dropStmt)).Pipe(database.localMysqlCmdBuilder()...)
@@ -41,22 +42,36 @@ func (database *Database) syncClearDatabase(server *Server) {
4142
func (database *Database) syncStructure(server *Server) {
4243
Logger.Step("syncing database structure")
4344

45+
tmpfile, err := ioutil.TempFile("", "dump")
46+
if err != nil {
47+
panic(err)
48+
}
49+
defer os.Remove(tmpfile.Name())
50+
4451
// Sync structure only
4552
dumpCmd := database.remoteMysqldumpCmdBuilder([]string{"--no-data"}, false)
46-
restoreCmd := database.localMysqlCmdBuilder()
53+
shell.Cmd(dumpCmd...).Pipe("cat", ">", tmpfile.Name()).Run()
4754

48-
cmd := shell.Cmd(dumpCmd...).Pipe("gunzip", "--stdout").Pipe(restoreCmd...)
49-
cmd.Run()
55+
// Restore structure only
56+
restoreCmd := database.localMysqlCmdBuilder()
57+
shell.Cmd("cat", tmpfile.Name()).Pipe("gunzip", "--stdout").Pipe(restoreCmd...).Run()
5058
}
5159

5260
// Sync database data
5361
func (database *Database) syncData(server *Server) {
5462
Logger.Step("syncing database data")
5563

64+
tmpfile, err := ioutil.TempFile("", "dump")
65+
if err != nil {
66+
panic(err)
67+
}
68+
defer os.Remove(tmpfile.Name())
69+
5670
// Sync data only
57-
dumpCmd := database.remoteMysqldumpCmdBuilder([]string{"--no-create-info"}, true)
58-
restoreCmd := database.localMysqlCmdBuilder()
71+
dumpCmd := database.remoteMysqldumpCmdBuilder([]string{"--no-create-info"}, false)
72+
shell.Cmd(dumpCmd...).Pipe("cat", ">", tmpfile.Name()).Run()
5973

60-
cmd := shell.Cmd(dumpCmd...).Pipe("gunzip", "--stdout").Pipe(restoreCmd...)
61-
cmd.Run()
74+
// Restore data only
75+
restoreCmd := database.localMysqlCmdBuilder()
76+
shell.Cmd("cat", tmpfile.Name()).Pipe("gunzip", "--stdout").Pipe(restoreCmd...).Run()
6277
}

0 commit comments

Comments
 (0)