|
2 | 2 | Create MYSQL dumps in Go without the `mysqldump` CLI as a dependancy.
|
3 | 3 |
|
4 | 4 | ### Simple Example
|
5 |
| -```go |
6 |
| -package main |
| 5 | +`package main |
7 | 6 |
|
8 | 7 | import (
|
9 |
| - "database/sql" |
10 |
| - "fmt" |
11 |
| - "os" |
| 8 | + "database/sql" |
| 9 | + "fmt" |
| 10 | + "os" |
12 | 11 |
|
13 |
| - "github.com/jamf/go-mysqldump" |
14 |
| - "github.com/go-sql-driver/mysql" |
| 12 | + "github.com/go-sql-driver/mysql" |
| 13 | + "github.com/jamf/go-mysqldump" |
15 | 14 | )
|
16 | 15 |
|
17 | 16 | func main() {
|
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() |
60 |
| -} |
| 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" |
| 26 | + dumpFilenameFormat := fmt.Sprintf("%s-20060102T150405", config.DBName) // accepts time layout string and add .sql at the end of file |
| 27 | + |
| 28 | + if err := os.MkdirAll(dumpDir, 0755); err != nil { |
| 29 | + fmt.Println("Error mkdir:", err) |
| 30 | + return |
| 31 | + } |
| 32 | + |
| 33 | + db, err := sql.Open("mysql", config.FormatDSN()) |
| 34 | + if err != nil { |
| 35 | + fmt.Println("Error opening database:", err) |
| 36 | + return |
| 37 | + } |
| 38 | + |
| 39 | + // Register database with mysqldump |
| 40 | + dumper, err := mysqldump.Register(db, dumpDir, dumpFilenameFormat) |
| 41 | + if err != nil { |
| 42 | + fmt.Println("Error registering databse:", err) |
| 43 | + return |
| 44 | + } |
| 45 | + |
| 46 | + // Dump database to file |
| 47 | + if err := dumper.Dump(); err != nil { |
| 48 | + fmt.Println("Error dumping:", err) |
| 49 | + return |
| 50 | + } |
| 51 | + if file, ok := dumper.Out.(*os.File); ok { |
| 52 | + fmt.Println("File is saved to", file.Name()) |
| 53 | + } else { |
| 54 | + fmt.Println("It's not part of *os.File, but dump is done") |
| 55 | + } |
| 56 | + |
| 57 | + // Close dumper, connected database and file stream. |
| 58 | + dumper.Close() |
| 59 | +}``go |
61 | 60 | ```
|
62 | 61 |
|
63 | 62 | [](https://godoc.org/github.com/jamf/go-mysqldump)
|
|
0 commit comments