diff --git a/cmd/root.go b/cmd/root.go index 64ab1b5..d9079bd 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -30,9 +30,6 @@ func Execute() { } func init() { - // Here you will define your flags and configuration settings. - // Cobra supports persistent flags, which, if defined here, - // will be global for your application. // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.mysql-bkup.yaml)") diff --git a/cmd/version.go b/cmd/version.go index 3bcf97e..f9f7e23 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -16,6 +16,7 @@ var VersionCmd = &cobra.Command{ }, } +// Version display application version func Version() { fmt.Printf("Version: %s \n", appVersion) fmt.Print() diff --git a/main.go b/main.go index 62fa9eb..cb47aba 100644 --- a/main.go +++ b/main.go @@ -155,6 +155,7 @@ func start() { utils.Info("Restore database from local") pkg.RestoreDatabase(file) } else { + //Restore from S3 utils.Info("Restore database from s3") s3Restore() } @@ -163,6 +164,7 @@ func start() { utils.Info("Backup database to local storage") pkg.BackupDatabase(disableCompression) } else { + //Backup to S3 utils.Info("Backup database to s3 storage") s3Backup() } diff --git a/pkg/backup.go b/pkg/backup.go index 04550dd..fdb09a9 100644 --- a/pkg/backup.go +++ b/pkg/backup.go @@ -37,10 +37,14 @@ func BackupDatabase(disableCompression bool) { utils.TestDatabaseConnection() // Backup Database database utils.Info("Backing up database...") + //Generate file name bkFileName := fmt.Sprintf("%s_%s.sql.gz", dbName, time.Now().Format("20060102_150405")) + // Verify is compression is disabled if disableCompression { + //Generate file name bkFileName = fmt.Sprintf("%s_%s.sql", dbName, time.Now().Format("20060102_150405")) + // Execute mysqldump cmd := exec.Command("mysqldump", "-h", dbHost, "-P", dbPort, @@ -53,6 +57,7 @@ func BackupDatabase(disableCompression bool) { log.Fatal(err) } + // save output file, err := os.Create(fmt.Sprintf("%s/%s", storagePath, bkFileName)) if err != nil { log.Fatal(err) @@ -66,6 +71,7 @@ func BackupDatabase(disableCompression bool) { utils.Done("Database has been backed up") } else { + // Execute mysqldump cmd := exec.Command("mysqldump", "-h", dbHost, "-P", dbPort, "-u", dbUserName, "--password="+dbPassword, dbName) stdout, err := cmd.StdoutPipe() if err != nil { diff --git a/pkg/restore.go b/pkg/restore.go index cb19035..28fd6a4 100644 --- a/pkg/restore.go +++ b/pkg/restore.go @@ -25,7 +25,7 @@ func RestoreDatabase(file string) { utils.TestDatabaseConnection() extension := filepath.Ext(fmt.Sprintf("%s/%s", storagePath, file)) - // GZ compressed file + // Restore from compressed file / .sql.gz if extension == ".gz" { str := "zcat " + fmt.Sprintf("%s/%s", storagePath, file) + " | mysql -h " + os.Getenv("DB_HOST") + " -P " + os.Getenv("DB_PORT") + " -u " + os.Getenv("DB_USERNAME") + " --password=" + os.Getenv("DB_PASSWORD") + " " + os.Getenv("DB_NAME") _, err := exec.Command("bash", "-c", str).Output() @@ -36,7 +36,7 @@ func RestoreDatabase(file string) { utils.Done("Database has been restored") } else if extension == ".sql" { - //SQL file + //Restore from sql file str := "cat " + fmt.Sprintf("%s/%s", storagePath, file) + " | mysql -h " + os.Getenv("DB_HOST") + " -P " + os.Getenv("DB_PORT") + " -u " + os.Getenv("DB_USERNAME") + " --password=" + os.Getenv("DB_PASSWORD") + " " + os.Getenv("DB_NAME") _, err := exec.Command("bash", "-c", str).Output() if err != nil { diff --git a/pkg/s3fs.go b/pkg/s3fs.go index 1ba529c..8472fc7 100644 --- a/pkg/s3fs.go +++ b/pkg/s3fs.go @@ -44,6 +44,8 @@ func MountS3Storage(s3Path string) { } //Change file permission utils.ChangePermission(s3fsPasswdFile, 0600) + + //Mount object storage utils.Info("Mounting Object storage in", s3MountPath) if isEmpty, _ := utils.IsDirEmpty(s3MountPath); isEmpty { cmd := exec.Command("s3fs", bucketName, s3MountPath, diff --git a/utils/utils.go b/utils/utils.go index 7a5d7af..a6fc8cf 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -19,10 +19,6 @@ func Info(v ...any) { func Done(v ...any) { fmt.Println("✔ ", fmt.Sprint(v...)) } -func Warning(v ...any) { - fmt.Println("[Warning: ] ", fmt.Sprint(v...)) -} - func Fatal(v ...any) { fmt.Println("✘ ", fmt.Sprint(v...)) os.Exit(1)