Skip to content

Commit 04b9cbd

Browse files
fix: Fixed issue with recover postgres-cluster database failed (#9732)
1 parent 4565c5b commit 04b9cbd

File tree

3 files changed

+68
-61
lines changed

3 files changed

+68
-61
lines changed

agent/utils/postgresql/client/local.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,11 @@ func (r *Local) Backup(info BackupInfo) error {
136136
}
137137
defer outfile.Close()
138138
global.LOG.Infof("start to pg_dump | gzip > %s.gzip", info.TargetDir+"/"+info.FileName)
139-
cmd := exec.Command("docker", "exec", "-e", fmt.Sprintf("PGPASSWORD=%s", r.Password), r.ContainerName, "pg_dump", "-F", "c", "-U", r.Username, "-d", info.Name)
139+
cmd := exec.Command(
140+
"docker", "exec", "-i", r.ContainerName,
141+
"sh", "-c",
142+
fmt.Sprintf("PGPASSWORD=%s pg_dump -F c -U %s -d %s", r.Password, r.Username, info.Name),
143+
)
140144
var stderr bytes.Buffer
141145
cmd.Stderr = &stderr
142146

@@ -155,7 +159,9 @@ func (r *Local) Backup(info BackupInfo) error {
155159
func (r *Local) Recover(info RecoverInfo) error {
156160
fi, _ := os.Open(info.SourceFile)
157161
defer fi.Close()
158-
cmd := exec.Command("docker", "exec", "-i", r.ContainerName, "pg_restore", "-F", "c", "-c", "-U", r.Username, "-d", info.Name)
162+
cmd := exec.Command("docker", "exec", r.ContainerName, "sh", "-c",
163+
fmt.Sprintf("PGPASSWORD=%s pg_dump -F c -U %s -d %s", r.Password, r.Username, info.Name),
164+
)
159165
if strings.HasSuffix(info.SourceFile, ".gz") {
160166
gzipFile, err := os.Open(info.SourceFile)
161167
if err != nil {

frontend/src/components/drawer-pro/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
</template>
4949

5050
<script lang="ts" setup>
51-
import { computed, useSlots } from 'vue';
51+
import { computed, useSlots, ref } from 'vue';
5252
defineOptions({ name: 'DrawerPro' });
5353
import i18n from '@/lang';
5454
import { GlobalStore } from '@/store';

frontend/src/views/app-store/installed/upgrade/index.vue

Lines changed: 59 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -4,67 +4,68 @@
44
:header="$t('commons.button.' + operateReq.operate)"
55
:resource="resourceName"
66
@close="handleClose"
7-
v-loading="loading"
87
>
9-
<el-descriptions direction="vertical">
10-
<el-descriptions-item>
11-
<el-link @click="toLink(app.website)">
12-
<el-icon><OfficeBuilding /></el-icon>
13-
<span>{{ $t('app.appOfficeWebsite') }}</span>
14-
</el-link>
15-
</el-descriptions-item>
16-
<el-descriptions-item>
17-
<el-link @click="toLink(app.document)">
18-
<el-icon><Document /></el-icon>
19-
<span>{{ $t('app.document') }}</span>
20-
</el-link>
21-
</el-descriptions-item>
22-
<el-descriptions-item>
23-
<el-link @click="toLink(app.github)">
24-
<el-icon><Link /></el-icon>
25-
<span>{{ $t('app.github') }}</span>
26-
</el-link>
27-
</el-descriptions-item>
28-
</el-descriptions>
29-
<el-form @submit.prevent ref="updateRef" :rules="rules" label-position="top" :model="operateReq">
30-
<el-form-item :label="$t('app.versionSelect')" prop="detailId">
31-
<el-select v-model="operateReq.version" @change="getVersions(operateReq.version)">
32-
<el-option
33-
v-if="operateReq.operate == 'ignore'"
34-
:value="'all'"
35-
:label="$t('commons.table.all') + $t('app.version')"
36-
></el-option>
37-
<el-option
38-
v-for="(version, index) in versions"
39-
:key="index"
40-
:value="version.version"
41-
:label="version.version"
42-
></el-option>
43-
</el-select>
44-
</el-form-item>
45-
<el-form-item prop="backup" v-if="operateReq.operate === 'upgrade'">
46-
<el-checkbox v-model="operateReq.backup" :label="$t('app.backupApp')" />
47-
<span class="input-help">
48-
<el-text type="warning">{{ $t('app.backupAppHelper') }}</el-text>
49-
</span>
50-
</el-form-item>
51-
<el-form-item prop="pullImage" v-if="operateReq.operate === 'upgrade'">
52-
<el-checkbox v-model="operateReq.pullImage" :label="$t('app.pullImage')" size="large" />
53-
<span class="input-help">{{ $t('app.pullImageHelper') }}</span>
54-
</el-form-item>
55-
</el-form>
8+
<div v-loading="loading">
9+
<el-descriptions direction="vertical">
10+
<el-descriptions-item>
11+
<el-link @click="toLink(app.website)">
12+
<el-icon><OfficeBuilding /></el-icon>
13+
<span>{{ $t('app.appOfficeWebsite') }}</span>
14+
</el-link>
15+
</el-descriptions-item>
16+
<el-descriptions-item>
17+
<el-link @click="toLink(app.document)">
18+
<el-icon><Document /></el-icon>
19+
<span>{{ $t('app.document') }}</span>
20+
</el-link>
21+
</el-descriptions-item>
22+
<el-descriptions-item>
23+
<el-link @click="toLink(app.github)">
24+
<el-icon><Link /></el-icon>
25+
<span>{{ $t('app.github') }}</span>
26+
</el-link>
27+
</el-descriptions-item>
28+
</el-descriptions>
29+
<el-form @submit.prevent ref="updateRef" :rules="rules" label-position="top" :model="operateReq">
30+
<el-form-item :label="$t('app.versionSelect')" prop="detailId">
31+
<el-select v-model="operateReq.version" @change="getVersions(operateReq.version)">
32+
<el-option
33+
v-if="operateReq.operate == 'ignore'"
34+
:value="'all'"
35+
:label="$t('commons.table.all') + $t('app.version')"
36+
></el-option>
37+
<el-option
38+
v-for="(version, index) in versions"
39+
:key="index"
40+
:value="version.version"
41+
:label="version.version"
42+
></el-option>
43+
</el-select>
44+
</el-form-item>
45+
<el-form-item prop="backup" v-if="operateReq.operate === 'upgrade'">
46+
<el-checkbox v-model="operateReq.backup" :label="$t('app.backupApp')" />
47+
<span class="input-help">
48+
<el-text type="warning">{{ $t('app.backupAppHelper') }}</el-text>
49+
</span>
50+
</el-form-item>
51+
<el-form-item prop="pullImage" v-if="operateReq.operate === 'upgrade'">
52+
<el-checkbox v-model="operateReq.pullImage" :label="$t('app.pullImage')" size="large" />
53+
<span class="input-help">{{ $t('app.pullImageHelper') }}</span>
54+
</el-form-item>
55+
</el-form>
5656

57-
<div v-if="operateReq.operate === 'upgrade'">
58-
<el-text type="warning">{{ $t('app.upgradeWarn') }}</el-text>
59-
<br />
60-
<el-button @click="openDiff()" type="primary">{{ $t('app.showDiff') }}</el-button>
61-
<div>
62-
<el-checkbox v-model="useNewCompose" :label="$t('app.useCustom')" size="large" />
57+
<div v-if="operateReq.operate === 'upgrade'">
58+
<el-text type="warning">{{ $t('app.upgradeWarn') }}</el-text>
59+
<br />
60+
<el-button @click="openDiff()" type="primary">{{ $t('app.showDiff') }}</el-button>
61+
<div>
62+
<el-checkbox v-model="useNewCompose" :label="$t('app.useCustom')" size="large" />
63+
</div>
64+
<div v-if="useNewCompose">
65+
<el-text type="danger">{{ $t('app.useCustomHelper') }}</el-text>
66+
</div>
67+
<CodemirrorPro v-if="useNewCompose" v-model="newCompose" mode="yaml"></CodemirrorPro>
6368
</div>
64-
<div v-if="useNewCompose">
65-
<el-text type="danger">{{ $t('app.useCustomHelper') }}</el-text>
66-
</div>
67-
<CodemirrorPro v-if="useNewCompose" v-model="newCompose" mode="yaml"></CodemirrorPro>
6869
</div>
6970
<template #footer>
7071
<span class="dialog-footer">

0 commit comments

Comments
 (0)