Git Product home page Git Product logo

go-mysqldump's Introduction

Go MYSQL Dump

Create MYSQL dumps in Go without the mysqldump CLI as a dependancy.

Simple Example

package main

import (
	"database/sql"
	"fmt"
	"os"

	"github.com/go-sql-driver/mysql"
	"github.com/jamf/go-mysqldump"
)

func main() {
	// Open connection to database
	config := mysql.NewConfig()
	config.User = "your-user"
	config.Passwd = "your-pw"
	config.DBName = "your-db"
	config.Net = "tcp"
	config.Addr = "your-hostname:your-port"

	dumpDir := "dumps"
	dumpFilenameFormat := fmt.Sprintf("%s-20060102T150405", config.DBName) // accepts time layout string and add .sql at the end of file

	if err := os.MkdirAll(dumpDir, 0755); err != nil {
		fmt.Println("Error mkdir:", err)
		return
	}

	db, err := sql.Open("mysql", config.FormatDSN())
	if err != nil {
		fmt.Println("Error opening database:", err)
		return
	}

	// Register database with mysqldump
	dumper, err := mysqldump.Register(db, dumpDir, dumpFilenameFormat)
	if err != nil {
		fmt.Println("Error registering databse:", err)
		return
	}

	// Dump database to file
	if err := dumper.Dump(); err != nil {
		fmt.Println("Error dumping:", err)
		return
	}
	if file, ok := dumper.Out.(*os.File); ok {
		fmt.Println("File is saved to", file.Name())
	} else {
		fmt.Println("It's not part of *os.File, but dump is done")
	}

	// Close dumper, connected database and file stream.
	dumper.Close()
}

GoDoc Build Status

go-mysqldump's People

Contributors

brandonroehl avatar brazeaudavid avatar christianruhstaller avatar greg0 avatar jamesstewy avatar kesuskim avatar ryan-brown-jamf avatar taraan03 avatar zachcheung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-mysqldump's Issues

Have context as input to the dump operation

The current implementation of the code creates context.Background in data.Connection.BeginTx. We can have this value come as input parameter to have more control on the operation. This will enable to run this process in go routines where we would want the operation to fail fast or timeout in case of error in other routines.

Date value is not correct in sql dump file

For some reasons, the sql file is not having correct date time for the date field .

The resulting sql file shows date time as '&{2021-08-05 00:00:00 +0000 UTC %!s(bool=true)}'

Do I need to do any specific setting for this behaviour. When I restore, it sets date time as 0000-00-00.

Kindly suggest what is the fix for this.

Neeraj

How to add a Where a clause ?

Hello,

When using the mysqldump command on CLI, there's the ability to pass a condition to the -w option to act like a WHERE clause.
How can I achieve this with go-mysqldump ?
Thanks.

Databases with Views produce errors and fail to backup

Steps to recreate

  1. Create the view
  2. Backup the database

Example view

CREATE VIEW testview AS SELECT 'test' as c1, 'other as c2;

Error with line number. This happends in the CreateSQL function in dump.go

template:mysqldumpTable:9.3: executing "mysqldumpTable" at <.CreateSQL>:error calling CreateSQL: sql: expected 4 destination arguments in Scan, not 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.