Postgres не может начать выдавать ошибку:
PANIC could not locate a valid checkpoint record
В Google есть много решений, но все они должны подключить модуль для выполнения некоторых команд pg.
Но, поскольку я использую K8S, мой модуль переходит в состояние: CrashLoopBackOff
, поэтому я больше не могу подключиться к нему.
Как мне сделать, чтобы исправить мою postgres DB?
РЕДАКТИРОВАТЬ:
Я пытался запустить команду:
pg_resetwal /var/lib/postgresql/data
с:
...
spec:
containers:
- args:
- pg_resetwal
- /var/lib/postgresql/data
Но я получаю:
pg_resetwal: cannot be executed by "root"
You must run pg_resetwal as the PostgreSQL superuser.
Может go дальше ...
EDIT2:
Я попытался запустить новый модуль с теми же прикрепленными томами и тем же контейнером postgres, но меняя команда для: pg_resetwal /var/lib/postgresql/data
Я также добавил:
securityContext:
runAsUser: 0
Вот yaml для развертывания:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
reloader.stakater.com/auto: "true"
labels:
app: metadata-postgres-fix
name: metadata-postgres-fix
namespace: metadata
spec:
selector:
matchLabels:
app: metadata-postgres-fix
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: metadata-postgres-fix
spec:
containers:
- args:
- pg_resetwal
- /var/lib/postgresql/data
envFrom:
- secretRef:
name: metadata-env
image: postgres:11.3
name: metadata-postgres-fix
securityContext:
runAsUser: 0
ports:
- containerPort: 5432
imagePullPolicy: Always
volumeMounts:
- mountPath: /etc/postgresql/postgresql.conf
name: metadata-postgres-data
subPath: postgres.conf
- mountPath: /docker-entrypoint-initdb.d/init.sh
name: metadata-postgres-data
subPath: init.sh
- mountPath: /var/lib/postgresql/data
name: metadata-postgres-claim
subPath: postgres
restartPolicy: Always
volumes:
- name: metadata-postgres-data
configMap:
name: cfgmap-metadata-postgres
- name: metadata-postgres-claim
persistentVolumeClaim:
claimName: metadata-postgres-claim
nodeSelector:
kops.k8s.io/instancegroup: nodes