@@ -6,48 +6,57 @@ Create MYSQL dumps in Go without the `mysqldump` CLI as a dependancy.
6
6
package main
7
7
8
8
import (
9
- " database/sql"
10
- " fmt"
9
+ " database/sql"
10
+ " fmt"
11
+ " os"
11
12
12
- " github.com/jamf/ go-mysqldump "
13
- " github.com/go-sql-driver/mysql "
13
+ " github.com/go-sql-driver/mysql "
14
+ " github.com/jamf/ go-mysqldump "
14
15
)
15
16
16
17
func main () {
17
- // Open connection to database
18
- config := mysql.NewConfig ()
19
- config.User = " your-user"
20
- config.Passwd = " your-pw"
21
- config.DBName = " your-db"
22
- config.Net = " tcp"
23
- config.Addr = " your-hostname:your-port"
24
-
25
- dumpDir := " dumps" // you should create this directory
26
- dumpFilenameFormat := fmt.Sprintf (" %s -20060102T150405" , config.DBName ) // accepts time layout string and add .sql at the end of file
27
-
28
- db , err := sql.Open (" mysql" , config.FormatDSN ())
29
- if err != nil {
30
- fmt.Println (" Error opening database: " , err)
31
- return
32
- }
33
-
34
- // Register database with mysqldump
35
- dumper , err := mysqldump.Register (db, dumpDir, dumpFilenameFormat)
36
- if err != nil {
37
- fmt.Println (" Error registering databse:" , err)
38
- return
39
- }
40
-
41
- // Dump database to file
42
- err := dumper.Dump ()
43
- if err != nil {
44
- fmt.Println (" Error dumping:" , err)
45
- return
46
- }
47
- fmt.Printf (" File is saved to %s " , dumpFilenameFormat)
48
-
49
- // Close dumper, connected database and file stream.
50
- dumper.Close ()
18
+ // Open connection to database
19
+ config := mysql.NewConfig ()
20
+ config.User = " your-user"
21
+ config.Passwd = " your-pw"
22
+ config.DBName = " your-db"
23
+ config.Net = " tcp"
24
+ config.Addr = " your-hostname:your-port"
25
+
26
+ dumpDir := " dumps"
27
+ dumpFilenameFormat := fmt.Sprintf (" %s -20060102T150405" , config.DBName ) // accepts time layout string and add .sql at the end of file
28
+
29
+ if err := os.MkdirAll (dumpDir, 0755 ); err != nil {
30
+ fmt.Println (" Error mkdir:" , err)
31
+ return
32
+ }
33
+
34
+ db , err := sql.Open (" mysql" , config.FormatDSN ())
35
+ if err != nil {
36
+ fmt.Println (" Error opening database:" , err)
37
+ return
38
+ }
39
+
40
+ // Register database with mysqldump
41
+ dumper , err := mysqldump.Register (db, dumpDir, dumpFilenameFormat)
42
+ if err != nil {
43
+ fmt.Println (" Error registering databse:" , err)
44
+ return
45
+ }
46
+
47
+ // Dump database to file
48
+ if err := dumper.Dump (); err != nil {
49
+ fmt.Println (" Error dumping:" , err)
50
+ return
51
+ }
52
+ if file , ok := dumper.Out .(*os.File ); ok {
53
+ fmt.Println (" File is saved to" , file.Name ())
54
+ } else {
55
+ fmt.Println (" It's not part of *os.File, but dump is done" )
56
+ }
57
+
58
+ // Close dumper, connected database and file stream.
59
+ dumper.Close ()
51
60
}
52
61
```
53
62
0 commit comments