PostgreSQL 容器化部署重启后数据丢失问题记载

相关配置:

sts.yaml

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgresql
spec:
  updateStrategy:
    type: RollingUpdate
  serviceName: XXX
  replicas: XXX
  selector:
    matchLabels: XXX
  template:
    metadata:
      labels: XXX
      annotations:
        configmap-postgres-hash: XXX
    spec:
      affinity: XXX
      nodeSelector:
        XXX
      containers:
      - name: postgresql
        image: XXX
        imagePullPolicy: XXX
        ports:
        - containerPort: XXX
        livenessProbe:
          exec:
            command:
            - pg_isready
            - -U
            - postgres
          initialDelaySeconds: 20
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
            - pg_isready
            - -U
            - postgres
          initialDelaySeconds: 20
          timeoutSeconds: 5
        envFrom:
        - configMapRef:
            name: postgres
        volumeMounts:
        - name: postgresql-data
          mountPath: /var/lib/postgresql
  volumeClaimTemplates:
  - metadata:
      name: postgresql-data
      annotations:
        XXX: XXX
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: XXX

看到上面文件:

        volumeMounts:
        - name: postgresql-data
          mountPath: /var/lib/postgresql

中的配置是将存放数据目录挂在了 postgresql 的初始化工作目录 /var/lib/postgresql,此时如果 pod 发生重启的话,docker 每次都会清除工作目录中的内容,如果挂载在此处,数据就会丢失

根据 https://github.com/docker-library/postgres/issues/696

我们可以修改挂载目录来解决这个问题

        env:
        - name: PGDATA
          value: /pgdata/data
        volumeMounts:
        - name: postgresql-data
          mountPath: /pgdata

我们可以将 volumeMounts 字段修改为以上之后,数据可以保存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值