Use binary store for postgres backups
This commit is contained in:
parent
fba08693cd
commit
fd0facf171
@ -46,7 +46,7 @@ func BackupPostgres(file string, hostname string, database string, username stri
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer os.Remove("/output/.pgpass")
|
defer os.Remove("/output/.pgpass")
|
||||||
cmd := exec.Command(pg_dumpExec, "--clean", "--create", "--file", file, "--host", hostname, "--dbname", database, "--username", username, "--no-password")
|
cmd := exec.Command(pg_dumpExec, "--format=custom", "--clean", "--create", "--file", file, "--host", hostname, "--dbname", database, "--username", username, "--no-password")
|
||||||
cmd.Env = append(os.Environ(), "PGPASSFILE=/output/.pgpass")
|
cmd.Env = append(os.Environ(), "PGPASSFILE=/output/.pgpass")
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
log.V(1).Info("postgres backup output", "output", string(output))
|
log.V(1).Info("postgres backup output", "output", string(output))
|
||||||
|
|||||||
@ -50,9 +50,7 @@ func (r *RestoreSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, err
|
|||||||
return ctrl.Result{}, client.IgnoreNotFound(err)
|
return ctrl.Result{}, client.IgnoreNotFound(err)
|
||||||
}
|
}
|
||||||
deploymentName := os.Getenv("POD_DEPLOYMENT")
|
deploymentName := os.Getenv("POD_DEPLOYMENT")
|
||||||
// we go reverse order compared to the backup session
|
for _, target := range r.BackupConf.Spec.Targets {
|
||||||
for i := len(r.BackupConf.Spec.Targets) - 1; i >= 0; i-- {
|
|
||||||
target := r.BackupConf.Spec.Targets[i]
|
|
||||||
switch target.Kind {
|
switch target.Kind {
|
||||||
case "Deployment":
|
case "Deployment":
|
||||||
if target.Name == deploymentName {
|
if target.Name == deploymentName {
|
||||||
@ -69,7 +67,7 @@ func (r *RestoreSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, err
|
|||||||
r.RestoreSession.Status.Targets[i].SessionState = result
|
r.RestoreSession.Status.Targets[i].SessionState = result
|
||||||
if err := r.Status().Update(ctx, r.RestoreSession); err != nil {
|
if err := r.Status().Update(ctx, r.RestoreSession); err != nil {
|
||||||
log.Error(err, " unable to update restoresession status")
|
log.Error(err, " unable to update restoresession status")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{RequeueAfter: 30 * time.Second}, err
|
||||||
}
|
}
|
||||||
case formolv1alpha1.Running:
|
case formolv1alpha1.Running:
|
||||||
log.V(0).Info("Running session. Do the restore")
|
log.V(0).Info("Running session. Do the restore")
|
||||||
@ -97,7 +95,7 @@ func (r *RestoreSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, err
|
|||||||
log.V(1).Info("current restoresession status", "status", result)
|
log.V(1).Info("current restoresession status", "status", result)
|
||||||
if err := r.Status().Update(ctx, r.RestoreSession); err != nil {
|
if err := r.Status().Update(ctx, r.RestoreSession); err != nil {
|
||||||
log.Error(err, "unable to update restoresession status")
|
log.Error(err, "unable to update restoresession status")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{RequeueAfter: 30 * time.Second}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
case formolv1alpha1.Failure, formolv1alpha1.Success:
|
case formolv1alpha1.Failure, formolv1alpha1.Success:
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
//psqlExec = "/usr/bin/psql"
|
||||||
pg_restoreExec = "/usr/bin/pg_restore"
|
pg_restoreExec = "/usr/bin/pg_restore"
|
||||||
logger logr.Logger
|
logger logr.Logger
|
||||||
)
|
)
|
||||||
@ -32,6 +33,7 @@ func RestoreVolume(snapshotId string) error {
|
|||||||
log.Error(err, "unable to restore volume", "output", string(output))
|
log.Error(err, "unable to restore volume", "output", string(output))
|
||||||
state = formolv1alpha1.Failure
|
state = formolv1alpha1.Failure
|
||||||
}
|
}
|
||||||
|
log.V(1).Info("restic restore output", "output", string(output))
|
||||||
session.RestoreSessionUpdateTargetStatus(state)
|
session.RestoreSessionUpdateTargetStatus(state)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -44,7 +46,8 @@ func RestorePostgres(file string, hostname string, database string, username str
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer os.Remove("/output/.pgpass")
|
defer os.Remove("/output/.pgpass")
|
||||||
cmd := exec.Command(pg_restoreExec, "--clean", "--create", "--file", file, "--host", hostname, "--dbname", database, "--username", username, "--no-password")
|
//cmd := exec.Command(psqlExec, "--file", file, "--host", hostname, "--dbname", database, "--username", username, "--no-password")
|
||||||
|
cmd := exec.Command(pg_restoreExec, "--format=custom", "--clean", "--host", hostname, "--dbname", database, "--username", username, "--no-password", file)
|
||||||
cmd.Env = append(os.Environ(), "PGPASSFILE=/output/.pgpass")
|
cmd.Env = append(os.Environ(), "PGPASSFILE=/output/.pgpass")
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
log.V(1).Info("postgres restore output", "output", string(output))
|
log.V(1).Info("postgres restore output", "output", string(output))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user