From 2c8901018f21bda81afe55ad361cad8e98ff986d Mon Sep 17 00:00:00 2001 From: Arun Sittampalam Date: Mon, 28 Oct 2019 14:49:05 +0100 Subject: [PATCH 1/2] Using mysqlpump with the --skip-definer flag so dumps of views can be restored in environments without super privileges. --- service/mysql/backup.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/service/mysql/backup.go b/service/mysql/backup.go index af26b918..297b3742 100644 --- a/service/mysql/backup.go +++ b/service/mysql/backup.go @@ -51,10 +51,11 @@ func Backup(ctx context.Context, s3 *s3.Client, service util.Service, binding *c // prepare mysqldump command var command []string - command = append(command, "mysqldump") + command = append(command, "mysqlpump") command = append(command, "--single-transaction") command = append(command, "--quick") command = append(command, "--skip-add-locks") + command = append(command, "--skip-definer") command = append(command, "-h") command = append(command, host) command = append(command, "-P") From 5472ba0f86ef7448891b6240a828fc57d2f858c5 Mon Sep 17 00:00:00 2001 From: Arun Sittampalam Date: Mon, 28 Oct 2019 18:33:38 +0100 Subject: [PATCH 2/2] Alternative fix to mysqlpump because mysqlpump requires at lest mysql 5.7 --- service/mysql/backup.go | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/service/mysql/backup.go b/service/mysql/backup.go index 297b3742..8581d5d3 100644 --- a/service/mysql/backup.go +++ b/service/mysql/backup.go @@ -51,23 +51,27 @@ func Backup(ctx context.Context, s3 *s3.Client, service util.Service, binding *c // prepare mysqldump command var command []string - command = append(command, "mysqlpump") - command = append(command, "--single-transaction") - command = append(command, "--quick") - command = append(command, "--skip-add-locks") - command = append(command, "--skip-definer") - command = append(command, "-h") - command = append(command, host) - command = append(command, "-P") - command = append(command, port) - command = append(command, "-u") - command = append(command, username) + command = append(command, "sh") + command = append(command, "-c") + var command_string_array []string + command_string_array = append(command_string_array, "mysqldump") + command_string_array = append(command_string_array, "--single-transaction") + command_string_array = append(command_string_array, "--quick") + command_string_array = append(command_string_array, "--skip-add-locks") + command_string_array = append(command_string_array, "-h") + command_string_array = append(command_string_array, host) + command_string_array = append(command_string_array, "-P") + command_string_array = append(command_string_array, port) + command_string_array = append(command_string_array, "-u") + command_string_array = append(command_string_array, username) if len(database) > 0 { - command = append(command, "--databases") - command = append(command, database) + command_string_array = append(command_string_array, "--databases") + command_string_array = append(command_string_array, database) } else { - command = append(command, "--all-databases") + command_string_array = append(command_string_array, "--all-databases") } + command_string_array = append(command_string_array, "| sed -e 's/DEFINER[ ]*=[ ]*[^*]*\\*/\\*/'") + command = append(command, strings.Join(command_string_array, " ")) log.Debugf("executing mysql backup command: %v", strings.Join(command, " ")) cmd := exec.CommandContext(ctx, command[0], command[1:]...)