mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-09-05 22:25:49 +08:00
fix: Fixed issue with recover postgres-cluster database failed (#9732)
This commit is contained in:
parent
4565c5b300
commit
04b9cbd87a
3 changed files with 68 additions and 61 deletions
|
@ -136,7 +136,11 @@ func (r *Local) Backup(info BackupInfo) error {
|
|||
}
|
||||
defer outfile.Close()
|
||||
global.LOG.Infof("start to pg_dump | gzip > %s.gzip", info.TargetDir+"/"+info.FileName)
|
||||
cmd := exec.Command("docker", "exec", "-e", fmt.Sprintf("PGPASSWORD=%s", r.Password), r.ContainerName, "pg_dump", "-F", "c", "-U", r.Username, "-d", info.Name)
|
||||
cmd := exec.Command(
|
||||
"docker", "exec", "-i", r.ContainerName,
|
||||
"sh", "-c",
|
||||
fmt.Sprintf("PGPASSWORD=%s pg_dump -F c -U %s -d %s", r.Password, r.Username, info.Name),
|
||||
)
|
||||
var stderr bytes.Buffer
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
|
@ -155,7 +159,9 @@ func (r *Local) Backup(info BackupInfo) error {
|
|||
func (r *Local) Recover(info RecoverInfo) error {
|
||||
fi, _ := os.Open(info.SourceFile)
|
||||
defer fi.Close()
|
||||
cmd := exec.Command("docker", "exec", "-i", r.ContainerName, "pg_restore", "-F", "c", "-c", "-U", r.Username, "-d", info.Name)
|
||||
cmd := exec.Command("docker", "exec", r.ContainerName, "sh", "-c",
|
||||
fmt.Sprintf("PGPASSWORD=%s pg_dump -F c -U %s -d %s", r.Password, r.Username, info.Name),
|
||||
)
|
||||
if strings.HasSuffix(info.SourceFile, ".gz") {
|
||||
gzipFile, err := os.Open(info.SourceFile)
|
||||
if err != nil {
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, useSlots } from 'vue';
|
||||
import { computed, useSlots, ref } from 'vue';
|
||||
defineOptions({ name: 'DrawerPro' });
|
||||
import i18n from '@/lang';
|
||||
import { GlobalStore } from '@/store';
|
||||
|
|
|
@ -4,67 +4,68 @@
|
|||
:header="$t('commons.button.' + operateReq.operate)"
|
||||
:resource="resourceName"
|
||||
@close="handleClose"
|
||||
v-loading="loading"
|
||||
>
|
||||
<el-descriptions direction="vertical">
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.website)">
|
||||
<el-icon><OfficeBuilding /></el-icon>
|
||||
<span>{{ $t('app.appOfficeWebsite') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.document)">
|
||||
<el-icon><Document /></el-icon>
|
||||
<span>{{ $t('app.document') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.github)">
|
||||
<el-icon><Link /></el-icon>
|
||||
<span>{{ $t('app.github') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-form @submit.prevent ref="updateRef" :rules="rules" label-position="top" :model="operateReq">
|
||||
<el-form-item :label="$t('app.versionSelect')" prop="detailId">
|
||||
<el-select v-model="operateReq.version" @change="getVersions(operateReq.version)">
|
||||
<el-option
|
||||
v-if="operateReq.operate == 'ignore'"
|
||||
:value="'all'"
|
||||
:label="$t('commons.table.all') + $t('app.version')"
|
||||
></el-option>
|
||||
<el-option
|
||||
v-for="(version, index) in versions"
|
||||
:key="index"
|
||||
:value="version.version"
|
||||
:label="version.version"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="backup" v-if="operateReq.operate === 'upgrade'">
|
||||
<el-checkbox v-model="operateReq.backup" :label="$t('app.backupApp')" />
|
||||
<span class="input-help">
|
||||
<el-text type="warning">{{ $t('app.backupAppHelper') }}</el-text>
|
||||
</span>
|
||||
</el-form-item>
|
||||
<el-form-item prop="pullImage" v-if="operateReq.operate === 'upgrade'">
|
||||
<el-checkbox v-model="operateReq.pullImage" :label="$t('app.pullImage')" size="large" />
|
||||
<span class="input-help">{{ $t('app.pullImageHelper') }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div v-loading="loading">
|
||||
<el-descriptions direction="vertical">
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.website)">
|
||||
<el-icon><OfficeBuilding /></el-icon>
|
||||
<span>{{ $t('app.appOfficeWebsite') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.document)">
|
||||
<el-icon><Document /></el-icon>
|
||||
<span>{{ $t('app.document') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<el-link @click="toLink(app.github)">
|
||||
<el-icon><Link /></el-icon>
|
||||
<span>{{ $t('app.github') }}</span>
|
||||
</el-link>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-form @submit.prevent ref="updateRef" :rules="rules" label-position="top" :model="operateReq">
|
||||
<el-form-item :label="$t('app.versionSelect')" prop="detailId">
|
||||
<el-select v-model="operateReq.version" @change="getVersions(operateReq.version)">
|
||||
<el-option
|
||||
v-if="operateReq.operate == 'ignore'"
|
||||
:value="'all'"
|
||||
:label="$t('commons.table.all') + $t('app.version')"
|
||||
></el-option>
|
||||
<el-option
|
||||
v-for="(version, index) in versions"
|
||||
:key="index"
|
||||
:value="version.version"
|
||||
:label="version.version"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="backup" v-if="operateReq.operate === 'upgrade'">
|
||||
<el-checkbox v-model="operateReq.backup" :label="$t('app.backupApp')" />
|
||||
<span class="input-help">
|
||||
<el-text type="warning">{{ $t('app.backupAppHelper') }}</el-text>
|
||||
</span>
|
||||
</el-form-item>
|
||||
<el-form-item prop="pullImage" v-if="operateReq.operate === 'upgrade'">
|
||||
<el-checkbox v-model="operateReq.pullImage" :label="$t('app.pullImage')" size="large" />
|
||||
<span class="input-help">{{ $t('app.pullImageHelper') }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div v-if="operateReq.operate === 'upgrade'">
|
||||
<el-text type="warning">{{ $t('app.upgradeWarn') }}</el-text>
|
||||
<br />
|
||||
<el-button @click="openDiff()" type="primary">{{ $t('app.showDiff') }}</el-button>
|
||||
<div>
|
||||
<el-checkbox v-model="useNewCompose" :label="$t('app.useCustom')" size="large" />
|
||||
<div v-if="operateReq.operate === 'upgrade'">
|
||||
<el-text type="warning">{{ $t('app.upgradeWarn') }}</el-text>
|
||||
<br />
|
||||
<el-button @click="openDiff()" type="primary">{{ $t('app.showDiff') }}</el-button>
|
||||
<div>
|
||||
<el-checkbox v-model="useNewCompose" :label="$t('app.useCustom')" size="large" />
|
||||
</div>
|
||||
<div v-if="useNewCompose">
|
||||
<el-text type="danger">{{ $t('app.useCustomHelper') }}</el-text>
|
||||
</div>
|
||||
<CodemirrorPro v-if="useNewCompose" v-model="newCompose" mode="yaml"></CodemirrorPro>
|
||||
</div>
|
||||
<div v-if="useNewCompose">
|
||||
<el-text type="danger">{{ $t('app.useCustomHelper') }}</el-text>
|
||||
</div>
|
||||
<CodemirrorPro v-if="useNewCompose" v-model="newCompose" mode="yaml"></CodemirrorPro>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
|
|
Loading…
Add table
Reference in a new issue