ืืืชืจ ืืืืชืจ, ืืงืืืืช ืืงืืืื ืืช ืืืงืฉืืช ืืืืืช: "ืื ืื ื ืจืืฆืื ืืช ืื ืืื Amazon RDS, ืืื ืืื ืืืชืจ"; "ืื ืื ื ืจืืฆืื ืืช ืื ืืื RDS, ืืื ืืื ืืงืื, ืืื ืชืฉืชืืช." ืืื ืืืืฉื ืคืชืจืื ืื ืืื ืืื ืขื Kubernetes, ืืืงื ื ืืช ืืืฆื ืื ืืืื ืฉื ืืืคืขืืืื ืืคืืคืืืจืืื ืืืืชืจ ืขืืืจ PostgreSQL (Solon, ืืคืขืืืื ื-Crunchy Data ื-Zalando) ืืืืจื ื.
ืืืืจ ืื ืืื ืื ืืกืืื ืฉืฆืืจื ื ืื ืื ืงืืืช ืืื ืชืืืืจืืืช (ืกืงืืจืช ืคืชืจืื ืืช) ืืื ืืืฆื ืืืขืฉื (ืื ื ืืืจ ืืื ืืฆื ืืื). ืืื ืจืืฉืืช, ืืืื ื ืงืืข ืืื ืืืจืืฉืืช ืืืืืืืช ืืชืืืืฃ ืคืืื ืฆืืืื ื-RDS...
ืื ืื RDS
ืืฉืื ืฉืื ืืืืจืื ืขื RDS, ืื ืืกืืื ื ื, ืื ืืชืืืื ืื ืืฉืืจืืช DBMS ืื ืืื ืฉ:
- ืงื ืืืืืจื;
- ืืฉ ืืช ืืืืืืช ืืขืืื ืขื ืฆืืืืื ืืฆื ืืืืชืืืฉืฉ ืืื (ืจืฆืื ืขื ืชืืืื
PITR ); - ืืืคืฉืจ ืื ืืืฆืืจ ืืืคืืืืืืืช ืืืกืืจ-ืขืื;
- ืืฉ ืจืฉืืื ืขืฉืืจื ืฉื ืืจืืืืช;
- ืืกืคืง ืืืงืืจืช ืื ืืืื ืืฉืชืืฉืื/ืืืฉื.
ืืืืคื ืืืื, ืืืืฉืืช ืืืืฉืื ืืืฉืืื ืฉืขื ืืคืจืง ืขืฉืืืืช ืืืืืช ืฉืื ืืช ืืืื, ืืื ืืืจื ืขื Ansible ืืืชื ืืช ืืื ื ืงืจืืื ืืืื ื. (ืขืืืชืื ื-2GIS ืืืืขื ืืืกืงื ื ืืืื ืืชืืฆืื ืืื
ืืคืขืืืื ืื ืืืฉื ื ืคืืฆื ืืคืชืจืื ืืขืืืช ืืืืืช ืืืขืจืืช ืืืงืืืืืืช ืฉื Kubernetes. ืืื ืื ืืืื ื ืฉื "ืคืื ืื" ืืืจ ืืืืจ ืขืืืื ืืืชืจ ืคืืจืื ืืืืก ืืืืืจื ืืืืข ืฉืืืฉืงื ืืชืื Kubernetes.
NB: ืืื ืืืฆืืจ ืืืืืจืืช ืืืคืจืืืจืื ืคืฉืืืื, ืื ื ืืืืืฆืื ืืฉืื ืื ืืืื ืืฉืืจืืช ืฉืื ื ืืงืื ืคืชืื
ืืฉื ื ืืกืคืจ ืืคืขืืื K8s ืคืืคืืืจืืื ืขืืืจ PostgreSQL:
- ืกืืืืื;
- ืืืคืจืืืจ PostgreSQL ื ืชืื ืื ืคืจืืืื;
- ืืคืขืื Zalando Postgres.
ืืืื ื ืกืชืื ืขืืืื ืืืชืจ ืืงืจืื.
ืืืืจืช ืืืคืขืื
ืื ืืกืฃ ืืชืืื ืืช ืืืฉืืืืช ืฉืืืจ ืฆืืื ื ืืขืื, ืื ื - ืืืื ืืกื ืชืคืขืื ืชืฉืชืืืช Kubernetes - ืฆืืคืื ื ืื ืืืืคืขืืืื ืืืืื:
- ืคืจืืกื ื-Git ืืขื
ืืฉืืืื ืืืชืืืื ืืืฉืืช ; - ืชืืืื ื ืื ืืืงื ืชืจืืื;
- ืืชืงื ืช ืืืงื ืืฆืืืช ืื ืืืจืจ ืืฆืืืช;
- ืืชืงื ื ืฉื ืกืืืื ืืช;
- ืืืื ืืช ืืืืืืช ืืืื ืื;
- ืืื ืืืืืืืช ืืืื ืืช ืืืคืืื ืคืงืืืืช.
ืืืื ืืืืื ืก ืืคืจืืื ืขื ืื ืืืช ืืื ืงืืืืช (ืฉืืื ืืืขืจืืช ืื ืขืืืื ืืฉ ืืื ืฉืืืืช ืืืืืื ืืืืจ ืงืจืืืช ืืืืืจ ืืืื), ืืฆืืื ืืืืคื ืืืื ืื ืืฉ ืฆืืจื ืืคืจืืืจืื ืืื ืขื ืื ืช ืืชืืจ ืืฆืืจื ืืืืืงืช ืืืชืจ ืืช ืืืชืืืืช ืฉื ืฆืืชื ืืฉืืืืืช ืขื ืื ืช ืืืคืฉืจ ืืืืืื ืืืชื ืขืืืจ ืืืฉืืืื ืกืคืฆืืคืืื. ืื ื ืืื ืืืืืข ืืืืืื ืืืืคืืืืื ืืืืื ืช ืืืฆืืขืื ืืขืืืช.
ืืขืช ื ืขืืืจ ืืืืคืจืืืจืื ืฉื PostgreSQL ืขืฆืื.
1. ืกืืืืื
ืืืื, ืกืืืืื ืืื ืืืืื ืืฆืืื ืช ืืืจืืืืงืืืจื ืืืืจืืจืช:
ื ืืชื ืืืฆืื ืืช ืืืืฉืืจ ืฉื ืืคืขืื ืื ืืคืืจืื ืืืื ืื
ืขื ืืืช, ืกืืืืื stolonctl
, ืืคืจืืกื ื ืขืฉืืช ืืืืฆืขืืช ืชืจืฉืื Helm, ืืืื ืืืชืืืื ืืืฉืืช ืืืืืจืื ืืืฆืืื ืื ื-ConfigMap.
ืืฆื ืืื, ืืกืชืืจ ืฉืืืคืขืื ืืื ืื ืืืืช ืืืคืจืืืจ (ืืจื ืืื ืื ืืฉืชืืฉ ื-CRD). ืืื ืืฆื ืฉื ื, ืื ืืขืจืืช ืืืืฉื ืฉืืืคืฉืจืช ืื ืืืืืืจ ืืฉืืืื ื-K8s ืืจืืืช ืขืื ืื.
ืืกืืืื, ืื ื ืืืืคื ืืืฉื ืื ืื ื ืจืื ืืืคืืืืื ืืืฆืืจ ืชืจืฉืื ื ืคืจื ืืื ืืกืืก ื ืชืื ืื. ืืื, ืืชืืื ื ืืืคืฉ ืืืืคืืช.
2. ืืคืขืื ื ืชืื ืื ืคืจืื PostgreSQL
ืืืจืืืืงืืืจื ืฉื Crunchy Data PostgreSQL Operator ืขืืืืช ืื ืืืจืืฉืืช ืืืืฆืืจืืช:
ืื ืืืื ืืชืจืืฉ ืืืืฆืขืืช ืืื ืืฉืืจืืช pgo
ืขื ืืืช, ืื ืืชืืจื ืืืืฆืจ ืืฉืืืื ืืืชืืืื ืืืฉืืช ืขืืืจ Kubernetes. ืืื, ืืืคืขืื ืฉืืื ืืืชื ื ืืืฉืชืืฉืื ืคืืื ืฆืืืืืื:
- ืืฉ ืฉืืืื ืืืืฆืขืืช CRD;
- ื ืืืื ื ืื ืฉื ืืฉืชืืฉืื (ืื ืืืืฆืขืืช CRD);
- ืืื ืืืจืฆืื ืขื ืจืืืืื ืืืจืื
ืืืืืช ืืืื ื ืชืื ืื ืคืจืื - ืืืกืฃ ืืืืื ืฉื ืชืืื ืืช ืืืื ืขืืืจ PostgreSQL ืืืื ืขืืจ ืืขืืืื ืืืชื (ืืืื pgBackRest, pgAudit, ืืจืืืืช ื-contrib ืืื').
ืขื ืืืช, ื ืืกืืื ืืช ืืืชืืื ืืืฉืชืืฉ ืืืคืขืื ื-Crunchy Data ืืฉืคื ืืกืคืจ ืืขืืืช:
- ืื ืืืืชื ืืคืฉืจืืช ืืกืืืืืช - ืจืง nodeSelector ืืกืืคืง.
- ืืชืจืืืืื ืฉื ืืฆืจื ืืื ืืืง ื-Deployment, ืืืจืืช ืืขืืืื ืฉืคืจืกื ื ืืืฉืื ืกืืืืกืื. ืฉืื ืืื StatefulSets, Deployments ืื ืืืื ืืืฆืืจ ืืืกืงืื.
ืืืืกืจืื ืืืืจืื ืืืืื ืืจืืขืื ืืฆืืืงืื: ืืกืืืืช ืืืืืงื ืืฆืืื ื ืืืจืืฅ 3 ืืขืชืงืื ืขื ืืืกืง ืืื ืืืกืื ืืงืืื, ืื ืฉืืืจื ืืืคืขืื ืืืืื ืฉ-3 ืืขืชืงืื ืคืืขืืื (ืืืจืืช ืฉืื ืืื).
ืชืืื ื ื ืืกืคืช ืฉื ืืคืขืื ืื ืืื ืืฉืืืื ืืืืื ืฉืื ืขื ืืขืจืืืช ืขืืจ ืฉืื ืืช. ืืืืืื, ืงื ืืืชืงืื ืืช pgAdmin ื-pgBounce, ืืื ื
ืขื ืืืช, ืืืืืจื ืืืืืจื ืฉื ืืฉืืืื ืฉื ืืฆืจื ืขื ืืื Kubernetes ืืืืืื ืืืชื ื ืืฆืืจื ืืืฆืื ืคืชืจืื ืืืจ.
3. ืืคืขืื Zalando Postgres
ืื ืื ื ืืืืจืื ืืช ืืืฆืจื Zalando ืืืจ ืืื ืจื: ืืฉ ืื ื ื ืืกืืื ืืฉืืืืฉ ื-Zelenium ืืืืืื ืฉื ืืกืื ื
ืืื ืืคืชืจืื ืืฆืขืืจ ืืืืชืจ ืฉื ืืื ืืืืืจ: ืืฉืืจืืจ ืืจืืฉืื ืืชืจืืฉ ืืืืืืกื 2018. ืขื ืืืช, ืืืจืืช ืืืกืคืจ ืืงืื ืฉื ืืืืืจืืช ืจืฉืืืืช, ืืคืจืืืงื ืขืืจ ืืืจืช ืืจื, ืืืืจ ืขืืจ ืืคืืคืืืจืืืช ืืช ืืคืชืจืื ืฉื Crunchy Data ืขื 1300+ ืืืืืื ื- GitHub ืืืกืคืจ ืืชืืจืืื ืืืงืกืืืื (70+).
"ืืชืืช ืืืืกื ืืื ืืข" ืืคืขืื ืื ืืฉืชืืฉ ืืคืชืจืื ืืช ืฉื ืืืงื ืืืื:
- ืคืืจืื ื ื
ืกืคืืื ืื ืืืื, -
WAL-E - ืืืืืืืื, -
PgBouncer - ืืืจืืืช ืืืืืจ.
ืื ืืืฆืืช ืืจืืืืงืืืจืช ืืืคืขืื ื- Zalando:
ืืืคืขืื ืื ืืื ืืืืืื ืืืืฆืขืืช ืืฉืืืื ืืืชืืืื ืืืฉืืช, ืืืฆืจ ืืืืืืืืช StatefulSet ืืืืืืืช, ืฉืืืชื ื ืืชื ืืืชืืื ืืืฉืืช ืขื ืืื ืืืกืคืช ืงืจืื ืืช ืฆื ืฉืื ืื ืืชืจืืื. ืื ืื ืืืืื ืืชืจืื ืืฉืืขืืชื ืืืฉืืืื ืืืคืขืื ืืืืช Crunchy Data.
ืืืืืื ืฉืืืจื ื ืืคืชืจืื ืฉื Zalando ืืื 3 ืืืคืฉืจืืืืช ืื ืืืงืืช, ืชืืืืจ ื ืืกืฃ ืฉื ืืืืืืชืื ืืืฆื ืืืื, ืืื ืืื ืขื ืชืจืืื ืืืืฉืื.
ืชืจืืื ืขื Postgres Operator ื- Zalando
ืคืจืืกืช ืืืคืขืื ืืื ืคืฉืืื ืืืื: ืคืฉืื ืืืจื ืืช ืืืืืืจื ืื ืืืืืช ื-GitHub ืืืื ืืช ืงืืฆื ื-YAML ืืืกืคืจืืื
ืืืืจ ืืืชืงื ื, ืืชื ืฆืจืื ืืืืื ืืืื ืืืืืจื postgres-operator
ืืืจืื ืืฉืืืช ืฉืื ืืชืงื ืช ืืช ืืืคืขืื. ืืืืจ ืืืืจืช ืืืืืจืื, ืชืืื ืืคืจืืก ืืช ืืฉืืื PostgreSQL ืืจืืฉืื ืฉืื.
ืืืืืื, ืืคืจืืกื ืืกืื ืืจืืืช ืฉืื ื ื ืจืืืช ืื:
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
name: staging-db
spec:
numberOfInstances: 3
patroni:
synchronous_mode: true
postgresql:
version: "12"
resources:
limits:
cpu: 100m
memory: 1Gi
requests:
cpu: 100m
memory: 1Gi
sidecars:
- env:
- name: DATA_SOURCE_URI
value: 127.0.0.1:5432
- name: DATA_SOURCE_PASS
valueFrom:
secretKeyRef:
key: password
name: postgres.staging-db.credentials
- name: DATA_SOURCE_USER
value: postgres
image: wrouesnel/postgres_exporter
name: prometheus-exporter
resources:
limits:
cpu: 500m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
teamId: staging
volume:
size: 2Gi
ืื ืืคืกื ืื ืคืืจืก ืืฉืืื ืฉื 3 ืืืคืขืื ืขื ืืืื ืฆื ืืืืคืก
ืืืื ืืฉืื ืื ืืืื ืคืื ื ื ืืืื ืืื ืืจื ื -
ืจืฉืืื ืฉื ืืฉืืืืืช PostgreSQL
ื ืืืื ืืืืืืื
ืชืืื ื ืืขื ืืื ืช ื ืืกืคืช ืืื ืืชืืืื
ืืขืืืช ืืคืชืจืื ืืช
ืขื ืืืช, ืืฉืืืืฉ ืืืคืขืื ืืฉืฃ ืืืืจื ืืื ืืกืจืื ืืช ืืฉืืขืืชืืื:
- ืืืขืืจ ืชืืืื ื-nodeSelector;
- ืืืกืจ ืืืืืช ืืืฉืืืช ืืืืืืื;
- ืืขืช ืฉืืืืฉ ืืคืื ืงืฆืืืช ืืฆืืจืช ืืกื ืื ืชืื ืื, ืืจืฉืืืช ืืจืืจืช ืืืืื ืืื ื ืืืคืืขืืช;
- ืืคืขืืื ืชืืขืื ืืกืจ ืื ืื ืืขืืืื.
ืืืจืื ืืืื, ืจืืื ืืื ื ืืชื ืื ืืคืชืจืื. ื ืชืืื ืืืกืืฃ - ืืขืืืช ืขื ืชืืขืื.
ืกืืืจ ืืื ืื ืฉืชืชืงืื ืืขืืืื ืฉืื ืชืืื ืืจืืจ ืืืฆื ืืจืฉืื ืืืืื ืืืืฆื ืืืืจ ืืช ืืื ืืืืืื ื-Operator UI. ืืชืืขืื ืืืืจ ืขื ืื ืืืขืืช, ืืื ืืชืืืืจ ืืืืืชื ื ืืฆื ืืคื ืื
- ืฆืจืื ืืขืฉืืช ืกืื;
- ืืืขืืืจ ืืืชื ืืืคืขืื ืืคืจืืืจ
pod_environment_secret_name
ื-CRD ืขื ืืืืจืืช ืืคืขืื ืื ื-ConfigMap (ืชืืื ืืื ืชืืืื ืืืชืงืื ืืช ืืืคืขืื).
ืขื ืืืช, ืืคื ืฉืืชืืจืจ, ืื ืืจืืข ืืืชื ืืคืฉืจื. ืืืื ืื ืืกืคื ื
ืื ืชืขืืืจ ืืช ืืคืจืืืจืื ืืืืืื ืืืคืขืื, ืืืืืจ - wal_s3_bucket
ืืืคืชืืืช ืืืฉื ื-AWS S3, ืืื ืื ืืืื ืืื: ืื ืจืง ืืกืืกืื ืืืคืงื, ืืื ืื ืืืืื. ืื ืื ืืชืืื ืื ื.
ืืชืืืืจ ืืคืจืืืจืื ืฉื Spilo, ืฉืืื ื-Docker Wrapper ืืืกืืกื ืขืืืจ PgSQL ืืขืช ืฉืืืืฉ ืืืืคืจืืืจ, ืืชืืจืจ: ื ืืชื ืืืขืืืจ ืคืจืืืจ WAL_S3_BUCKET
ืจืืง, ืืืื ืืฉืืืช ืืืืืืื. ืืชืจ ืขื ืื, ืืฉืืื ืจืื, ืืฆืืชื enableWALArchiving: false
ืืืฉืื ืืฉืืื PostgreSQL.
ืื, ืืืืชื ืืืืื ืืช ืืขืฉืืช ืืช ืื ืืืจืช ืขื ืืื ืืคืขืืช 2 ืืืคืจืืืจืื: ืืื ืืกืืื ื (ืืื ืืืืืืื), ืืืฉื ื ืืืืฆืืจ. ืืื ืืฆืืื ื ืืืกืชืคืง ืืืื.
ืืืงื, ืืืื ื ืืืฆื ืืืขืืืจ ืืืฉื ืืืกืืกื ืื ืชืื ืื ืขืืืจ S3 ืืืืืืืืื ืืืื ืืืืื ืก ืืืืกืื. ืืืฆื ืืืจืื ืืืคื ืืืืื ืืขืืื ืืืืฉืง ืืืฉืชืืฉ ืฉื ืืืคืขืื?
ืชืฆืืจื ืืืืกืืฃ 3 ืืฉืชื ืื ืืืืฉืง ืืืฉืชืืฉ ืฉื ืืืคืขืื:
-
SPILO_S3_BACKUP_BUCKET
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
ืืืืจ ืืื, ืืชืืคืฉืจ ื ืืืื ืืืืืืื, ืื ืฉืืืงืจื ืฉืื ื ืืคืฉื ืืช ืืขืืืื ืขื ืืืื, ืืืืคืฉืจ ืื ื ืืืขืืืจ ืฉื ืคืจืืกืืช ืืืืคืงื ืืื ืกืงืจืืคืืื ื ืืกืคืื.
ืืชืจืื ื ืืกืฃ ืืื ืืขืืืื ืขื ื-API ืฉื Teams ืืืืืื ืืืืช ืจืืืช ืืืฆืืจืช ืืกืื ื ืชืื ืื ืืชืคืงืืืื ืืืืฆืขืืช ืืื ืืคืขืื. ืขื ืืืช, ื ืืฆืจ ืืชืคืงืืืื ืื ืืื ืืืืืืช ืืืจืืจืช ืืืื. ืืืชืื ืืื, ืืฉืชืืฉ ืืขื ืืืืืืช ืงืจืืื ืื ืืืื ืืื ืืงืจืื ืืืืืืช ืืืฉืืช.
ืืื? ืืืจืืช ืืขืืืื ืฉืืงืื GRANT
, ืื ืชืืื ืืฉืชืืฉืื ืืื. ืืฉ 2 ืฉืืืืช: syncPreparedDatabases
ะธ syncDatabases
. ืืชืื syncPreparedDatabases
- ืืืจืืช ืืขืืืื ืฉืืกืขืืฃ preparedDatabases
defaultRoles
ะธ defaultUsers
ืืื ืืืฆืืจ ืชืคืงืืืื, ืืืืืืช ืืจืืจืช ืืืื ืืื ื ืืืืืืช. ืื ื ื ืืฆืืื ืืชืืืื ืฉื ืืื ืช ืชืืงืื ืื ืฉืืืืืืืช ืืืื ืืืืื ืืืืืืืืช.
ืืื ืงืืื ืืืืจืื ื ืืฉืืคืืจืื ืืจืืืื ืืืื ืื ื -
ืื ืงืจื?
ืืืชืืกืก ืขื ืืชืืฆืืืช ืฉื ืคืชืจืื ืืืขืืืช ืืขืื, ืืืืงื ื ืืช Postgres Operator ื- Zalando
ืจืฉืืืช ืื ืฉื ืืืกื ืืฆืืืืจ ืฉืืชืงืืื ืืืืื:
ืื ืืืช ืชืืื ื ืงืืช ืืฉืงื ืืืืืืืช ืืืคืขืื ื-Docker ;ืืฉืืชืช ืืืืืืื ;ืขืืืื ืืจืกืืืช ืืฉืืืื ืขืืืจ ืืจืกืืืช ื ืืืืืืช ืฉื k8s ;ืืืฉืื ืฉื Node Affinity .
ืื ืืืื ื ืืืจ ืื ืืงืืืื ืชืชืืื ื-PRs ืืื ืืื ืฉืืืืขื ืืืขืื ืืืจื ืขื ืืืจืกื ืืืื ืฉื ืืืคืขืื (1.6).
ืึทืขึฒื ึธืง! ืกืืคืืจ ืืฆืืื ืฉื ืืขืืจืช ืืืฆืืจ
ืื ืืชื ืืฉืชืืฉ ืืคืืจืื ื, ื ืืชื ืืืขืืืจ ืืืฆืืจ ืื ืืืคืขืื ืขื ืืื ืืฉืืชื ืืื ืืืื.
Spilo ืืืคืฉืจ ืื ืืืฆืืจ ืืฉืืืืืช ืืืชื ื ืืืืฆืขืืช ืืืกืื S3 ืขื
ืฉืืคืื ืืืื PostgreSQL ืื ืืืฆืื. ืขื ืืืช, ืื ื ืคืจื ืืืฆื ืืืฆืืจ ืคืจืกืืืื ืืื ืืืื, ืื... ืืชืืื ืืช ืฉืื ื ืืืืชื ืคืืืกืงื.
ืืขืืืื ืืื ืฉืืืกืืก ืื ืชืื ืื ืืื ืืื ืืืืืืช ืืขืื ืืช ืขื ืืืืืื ื ืฉืืจืืช, ืืฉืจ ืืชืจ ืขื ืื, ืืชืืืฉื ืื ืืืงื ืื ืืืื. copy_data
, ืืืฉืจ ืืขืชืง ืืืืฉ ืืขืชืืง ืืช ืื ืืชืืื ืืืืืกืืจ, ืืื ืคืฉืื ืื ืืืื ืืขืืื ืืงืฆื ืฉื ืืืืกืืจ. ืืขืชืงืช ืืชืืื ืขืืื ืืืฉื ืฉืืืข, ืื ืืขืืื ืื ืืืืืงื ืืช ืืืืกืืจ. ืืกืืคื ืฉื ืืืจ, ืื ืขืืจ ืื ืืคืชืืจ ืืช ืืืขืื pg_dump
. ืื ื ืืชืืจ ืืช ืืืจืกื (ืืฉืชืื ืชื ืืขื) ืฉื ืืืืืืจืืชื ืืื.
ืืจืขืืื ืืื ืฉืืชื ืืืื ืืืฆืืจ ืื ืื ืืืฉืืช ืืงืฉืืจ ืืืฉืืฆืช ืฉืืคืื ืกืคืฆืืคืืช, ืืืืืจ ืืื ืืชืงื ืืช ืืกืคืจ ืืขืกืงื. ืืื ืืขืชืงืื ืืืื ืื ืืขืืืืืช ืืืฆืืจ. ืื ืืฉืื ืื ืืขืชืง ืืขืืืจ ืืืฆืืจ dump ืขืงืื ืืืืืฉืื ืืงืื ืฉืื ืืืื ืืืืืกืืจ.
ืคืงืืืืช ืขืืงืืืช ืืืชืืจืืช ืืช ืชืืืื ืืืืืจื ืืฉืชืืฉื ืืชืืื ืืืืจืืื ืืืืื:
- ืื - ืฉืจืช ืืงืืจ;
- ืืขืชืง 1 - ืืขืชืง ืกืืจืืืื ื ืขื ืืืคืงื ืืืฉื ื;
- ืืขืชืง 2 - ืืขืชืง ืืืื ืืืฉ.
ืชืืื ืืช ืืืืจื
1. ืฆืืจ ืื ืื ืืืืกืืจ ืขืืืจ ืื ืืืืืืืช ืืกืืืื public
ืืกืืกืื dbname
:
psql -h master -d dbname -c "CREATE PUBLICATION dbname FOR ALL TABLES;"
2. ืฆืืจ ืืจืืฅ ืฉืืคืื ืืืืกืืจ:
psql -h master -c "select pg_create_logical_replication_slot('repl', 'pgoutput');"
3. ืืคืกืง ืืช ืืฉืืคืื ืขื ืืขืชืง ืืืฉื:
psql -h replica1 -c "select pg_wal_replay_pause();"
4. ืงืื ืืช ืืกืคืจ ืืขืกืงื ืืืืืกืืจ:
psql -h master -c "select replay_lsn from pg_stat_replication where client_addr = 'replica1';"
5. ืืกืจ ืืช ืืืืืื ืืืขืืชืง ืืืฉื. ื ืขืฉื ืืืช ืืืกืคืจ ืฉืจืฉืืจืื, ืฉืืขืืจื ืืืืืฅ ืืช ืืชืืืื:
pg_dump -h replica1 --no-publications --no-subscriptions -O -C -F d -j 8 -f dump/ dbname
6. ืืขืื ืืช ื-dump ืืฉืจืช ืืืืฉ:
pg_restore -h replica2 -F d -j 8 -d dbname dump/
7. ืืืืจ ืืืจืืช ื-dump, ืืชื ืืืื ืืืชืืื ืจืคืืืงืฆืื ืขื ืืขืชืง ืืกืืจืืืื ื:
psql -h replica1 -c "select pg_wal_replay_resume();"
7. ืืืื ื ืืฆืืจ ืื ืื ืขื ืขืืชืง ืืืื ืืืฉ:
psql -h replica2 -c "create subscription oldprod connection 'host=replica1 port=5432 user=postgres password=secret dbname=dbname' publication dbname with (enabled = false, create_slot = false, copy_data = false, slot_name='repl');"
8. ืืืื ื ืงืื oid
ืื ืืืื:
psql -h replica2 -d dbname -c "select oid, * from pg_subscription;"
9. ื ื ืื ืฉืื ืืชืงืื oid=1000
. ืืืื ื ืืื ืืช ืืกืคืจ ืืขืกืงื ืขื ืืื ืื:
psql -h replica2 -d dbname -c "select pg_replication_origin_advance('pg_1000', 'AA/AAAAAAAA');"
10. ืืืื ื ืชืืื ืฉืืคืื:
psql -h replica2 -d dbname -c "alter subscription oldprod enable;"
11. ืืืืง ืืช ืืฆื ืืื ืื, ืฉืืคืื ืืืืจ ืืขืืื:
psql -h replica2 -d dbname -c "select * from pg_replication_origin_status;"
psql -h master -d dbname -c "select slot_name, restart_lsn, confirmed_flush_lsn from pg_replication_slots;"
12. ืืืืจ ืชืืืืช ืืฉืืคืื ืืืกืื ืื ืชืื ืื ืืกืื ืืจื ืื, ื ืืชื ืืขืืืจ.
13. ืืืืจ ืืฉืืชืช ืืฉืืคืื, ืขืืื ืืชืงื ืืช ืืจืฆืคืื. ืื ืืชืืืจ ืืืื
ืืืืืช ืืชืืื ืืช ืื, ืืืขืืจ ืืชืจืืฉ ืืขืืืืืื ืืื ืืืืืื.
ืืกืงื ื
ืืคืขืืื Kubernetes ืืืคืฉืจืื ืื ืืคืฉื ืคืขืืืืช ืฉืื ืืช ืขื ืืื ืฆืืฆืื ืืืฆืืจืช ืืฉืืื K8s. ืขื ืืืช, ืืืืจ ืฉืืฉืื ืืืืืืฆืื ืืืฆืืช ืืืคื ืืขืืจืชื, ืืืื ืืืืืจ ืฉืื ืืืื ืืืืื ืื ืืกืคืจ ื ืืืื ืกืื ืืืชื ืฆืคืืืื, ืื ืืืจ ืืช ืืืคืขืืืื ืฉืื ืืืืืื.
ืืืืจ ืฉืงืืื ื ืืช ืฉืืืฉืช ืืืคืขืืืื ืืคืืคืืืจืืื ืืืืชืจ ืฉื Kubernetes ืขืืืจ PostgreSQL, ืืืจื ื ืืคืจืืืงื ื- Zalando. ืืืืื ื ืฆืจืืืื ืืืชืืืจ ืขื ืงืฉืืื ืืกืืืืื ืขื ืื, ืืื ืืชืืฆืื ืืืืชื ืืืฉ ืืขื ืืช, ืื ืื ืื ื ืืชืื ื ืื ืืืจืืื ืืช ืืืืืื ืืื ืืืื ืืชืงื ืืช PgSQL ืืืจืืช. ืื ืืฉ ืื ื ืืกืืื ืืฉืืืืฉ ืืคืชืจืื ืืช ืืืืื, ื ืฉืื ืืจืืืช ืืช ืืคืจืืื ืืืขืจืืช!
ื .ื.
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืืกืื ื ืชืื ืื ื-Kubernetes (ืกืงืืจื ืืืื ืืืืื) "; - ยซ
Postgres ืืื ืฉืืืฉื ืืก' 5: PostgreSQL ื-Kubernetes. CI/CD. ืืืืงืช ืืืืืืฆืื "; - ยซ
ืกืืคืืจ ืืื ืขื ืืคืขืื Redis ื-K8s ืืืื ื ืกืงืืจื ืฉื ืืื ืขืืจ ืื ืืชืื ื ืชืื ืื ืืืกื ื ืชืื ืื ืื ".
ืืงืืจ: www.habr.com