mysqldump

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2019 License: MIT Imports: 12 Imported by: 0

README

Go MYSQL Dump

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

Simple Example
package main

import (
  "database/sql"
  "fmt"

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

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"  // you should create this directory
  dumpFilenameFormat := fmt.Sprintf("%s-20060102T150405", config.DBName)   // accepts time layout string and add .sql at the end of file

  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
  err := dumper.Dump()
  if err != nil {
    fmt.Println("Error dumping:", err)
    return
  }
  fmt.Printf("File is saved to %s", dumpFilenameFormat)

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

GoDoc Build Status

Documentation

Overview

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

Example

This example uses the mysql driver (https://github.com/go-sql-driver/mysql) to connect to a mysql instance.

package main

import (
    "database/sql"
    "fmt"

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

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"  // you should create this directory
    dumpFilenameFormat := fmt.Sprintf("%s-20060102T150405", dbname)   // accepts time layout string and add .sql at the end of file

    db, err := sql.Open("mysql", config.FormatDNS())
    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
    resultFilename, err := dumper.Dump()
    if err != nil {
        fmt.Println("Error dumping:", err)
        return
    }
    fmt.Printf("File is saved to %s", resultFilename)

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

Index

Constants

View Source
const (
	// Version of this plugin for easy reference
	Version = "0.5.0"
)

Variables

This section is empty.

Functions

func Dump added in v0.3.0

func Dump(db *sql.DB, out io.Writer) error

Dump Creates a MYSQL dump from the connection to the stream.

Types

type Data added in v0.3.3

type Data struct {
	Out              io.Writer
	Connection       *sql.DB
	IgnoreTables     []string
	MaxAllowedPacket int
	LockTables       bool
	// contains filtered or unexported fields
}

Data struct to configure dump behavior

Out:          Stream to wite to
Connection:   Database connection to dump
IgnoreTables: Mark sensitive tables to ignore
LockTables:   Lock all tables for the duration of the dump

func Register

func Register(db *sql.DB, dir, format string) (*Data, error)

Register a new dumper.

db: Database that will be dumped (https://golang.org/pkg/database/sql/#DB).
dir: Path to the directory where the dumps will be stored.
format: Format to be used to name each dump file. Uses time.Time.Format (https://golang.org/pkg/time/#Time.Format). format appended with '.sql'.

func (*Data) Close added in v0.3.3

func (d *Data) Close() error

Close the dumper. Will also close the database the dumper is connected to as well as the out stream if it has a Close method.

Not required.

func (*Data) Dump added in v0.3.3

func (data *Data) Dump() error

Dump data using struct

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL