ααΆααααααααΆααα‘αΎα α’αα·αα·αααααα»αααα½αααΆαααααΎααΌα
ααΆααααααα "ααΎαα
ααααΆαααΆααΌα
ααΆ Amazon RDS ααα»αααααααααΆα"; "ααΎαα
ααααΆαααΆααΌα
RDS ααα»αααααα
αααααααΈαααααααααα»αα αααααΆαα
ααΆααααααααααΆαα½αα" ααΎααααΈα’αα»αααααααααααααΆααααααΆαααααααααααααααααα
ααΎ Kubernetes ααΎαααΆααα·αα·αααααΎαααααΆαααΆααα
αα
α»ααααααααααααα·ααααα·ααααααα·αααααα»ααααααΆαα PostgreSQL (Stolon ααααα·ααααα·ααααααΈ Crunchy Data αα·α Zalando) α αΎαααΆαααααΎαααΎαααααααΎαα
α’ααααααααααΊααΆαααα·ααααααααααΎαααα½αααΆαααΆααααΈααααααααααΉααααΈ (ααΆααα·αα·αααα‘αΎααα·ααααααααααααΆα) αα·αααΈαααααααΆααααααα (α’αααΈαααααααΌαααΆαααααΎαααΎα αα·αα’αααΈαααααΆαααααΈααΆ)α ααα»ααααααΆααααΌα α
αΌαααΎααααααααΌαα’αααΈαααααΆαααααΌαααΆαααΌαα
αααααΆααααΆααααα½ααααααΆαα»αααααααΆαα RDS...
ααΎ RDS ααΊααΆα’αααΈ
αα ααααααααα»ααααα·ααΆαα’αααΈ RDS αα αααα»ααααα·αααααααααααΎα αα½αααααΆααααααΆααααΆαααα DBMS αααααααααααααααα
- ααΆααααα½ααααα»αααΆαααααααα ααΆαααααααα;
- ααΆααααααααΆααααα»αααΆαααααΎααΆαααΆαα½αααΌααααα·αααααΆαα‘αΎααα·αααΈαα½ααα (αα·ααααΆαα½αααΆαααΆαααα
PITR ); - α’αα»ααααΆαα±ααα’ααααααααΎα master-slave topologies;
- ααΆααααααΈααααααααααααααααααα;
- αααααααααααα αα·αααΆααααααααααα’αααααααΎααααΆαα/ααΆαα αΌαααααΎα
αα·ααΆαααΆααΌαα
αα·ααΈααΆααααααααα»αααΆαα’αα»αααααα·α
αα
ααΆααα
ααΉαααα’αΆα
ααΆαααΆααα»αααααΆααααΆαα ααα»ααααααααΌααααααΆααααααααα Ansible αα·ααα
αα·αααΎαααα (αα αααα·αααααΈ 2GIS ααΆαααααα·ααααΆαααααααααααΆααΆαααααα
ααααα·ααααα·ααααΊααΆαα·ααΈααΆαααααααΌαα
αααααΆααααΆααααααααΆααααα αΆααααααααααΆαα
αααα»αααααααααα’αααΌ Kubernetes α ααΆαααα
αα
ααααααα "Flanta" ααΆααα·ααΆααααα’α·ααααααααααα’αααΈαα½ααααα½α
α αΎα ααΆααααααΉαααΌαααααΆααα·αααααααααααΆαααΎαααααΎαααΆααα
ααΆααααα»α Kubernetes α
NBα ααΎααααΈαααααΎαααααα·ααααα·ααααΆααααααΆααααΆαααΆαααα αα ααΎαααΌαααααΆαα±ααααα
α·ααααα»αααΆααα
ααααα§αααααααααΎααααΆαααααααααΎαα
αα ααααααΎαα
ααΆαααααα·ααααα·αα K8s ααααααα·αααα½αα ααα½ααααααΆαα PostgreSQLα
- ααααΌα‘α»α;
- ααααα·ααααα·αα PostgreSQL αα·αααααα Crunchy;
- ααααα·ααααα·αα Zalando Postgres α
ααΌααααα‘ααααΎααα½αααα±ααααΆααααα αααΆααα
ααΆαααααΎαααΎαααααα·ααααα·αα
ααααααααΈααΎααααααααααΆααααααααΆααααααΆααααΆαααΎ ααΎα - αααα»αααΆαααΆαα·αααααααααα·ααααα·ααΆαα αααααΆαα ααΆαααααααα Kubernetes - ααααααΉααα»αααΌα ααΆααααααααΈααααα·ααααα·αααααααα
- ααΆαααΆαααααααΆαααΈ Git αα·αααΆαα½α
ααααΆαααααΆαααααα½α ; - ααΆαααΆαααα pod αααααΆααααΉαααΆααααα·αααααααΆα;
- ααΆαααα‘αΎα affinity node α¬ node selector;
- ααΆαααα‘αΎαααααΆαα’ααααααα;
- ααααααΆαααααΆααααααααΌα;
- αα αα αααα·ααααΆαααα’αΆα αααααΆα αα·αααΌααααΈααααΆααααααααΆα
ααααα·αα αΌααα αααα»αααααααΆααααα’α·αααΎα ααα»α ααΈαα½αα (αα½ααα αααα»αααα·ααααα ααααα·αααΎα’ααααα ααααΆααααα½αα’αααΈαα½ααααααααΆααααΈα’αΆαα’αααααααΆααααΌα) αααα»αααΉαααααααααΆααααΆααΌαα ααΆαααΆαααΆααααααααΆαααααααΊα αΆαααΆα αααΎααααΈαααααΆα±ααααΆααααα αααΆααα’αααΈα―ααααααααααΆααα ααααα ααΎααααΈ αααααΆα±αααα½ααααααααΆαααααααα·ααΈααΆααααΆααα αα·ααΈαααααΎαα’αΆα αααααα ααΆαααΌααααα»αααααααα’αααααΎααααα»αααααααααααααΆαα’αα»αααα αα·αααΆαα αααΆαα
α₯α‘αΌααααααΌααααααα ααααα·ααααα·αα PostgreSQL ααααααα½αα―αα
1. αααα»α
ααΆααΆααα·α Stolon ααΊααΆα§ααΆα αααααααα’ααααααΆαααααααααα·αααΌαα
α§αααααααααααααα·ααααα·αααααα’αΆα
ααααΌαααΆαααααΎααααα’α·ααα
αααα»ααααΆαααΆαααα¬
ααααααΆαααΆ Stolon stolonctl
ααΆαααΆαααααααΆαααααΌαααΆαααααΎα‘αΎαααΆααααααααΌαααΆα Helm α αΎαααΆααααααααααΆαααααα½αααααΌαααΆαααααα αα·ααααααΆαααα
αααα»α ConfigMap α
αα ααΎαααα½αααΆααααααΆααααα·ααααα·αααα·ααααααΆααααα·ααααα·αααα (αααααΆααααΈααΆααα’ααααΆαα·αααααΎ CRD) α ααα»αααααααααΆααα·αααα ααΆααΊααΆαααααααααααα’αΆα ααααααααΆααααα’αα»ααααΆαα±ααα’αααααααααα ααΆααααααααααααΆααα αααα»α K8s ααΌα αααα’αααααΎαααα
ααΎααααΈαααααα αααααΆααααΎαααααΆαα ααΆα αΆααααΌα ααΆαα·αααα ααα»αααααα»αααΆααααααΎαααααΌαααΆαααΆα ααααα‘αααααααΆααααΌαααααΆααα·ααααααααΈαα½ααα ααΌα ααααβα αΎα ααΎαβα αΆααβααααΎαβαααααααβαααααΎαα
2. ααααα·ααααα·αα PostgreSQL αα·αααααα Crunchy
ααααΆαααααααααα Crunchy Data PostgreSQL Operator αααααααααΆααααααΌαααΆααααααΆαα αααααααα
ααΆααααααααααααΎαα‘αΎαααΆααααα§αααααααααΎααααΆαα pgo
ααααααΆαααΆααααα ααΆαααααΎαααααΆαααααΆαααααα½ααααααΆαα Kubernetes α ααΌα
αααα ααααα·ααααα·αααααα
α·αααααΎαααΆα’αααααααΎααααΆαααααααΆαα»ααα
- ααΆαααΆααααα½ααα·αα·αααααΆαααα CRD;
- ααΆααααααααααα’αααααααΎααααΆααααΆααααα½α (ααΆαααα CRD);
- ααΆααα½ααααα
αΌαααΆαα½ααααΆαααΆαα»ααααααααα
Crunchy Data Container Suite - ααΆααααααΌαα―ααααααααΌαααΆααα»αααΊααααααααΆαα PostgreSQL αα·αα§αααααααααΎααααΆαααααααΆααααααΎααΆαααΆαα½αααΆ (αα½αααΆαα pgBackRest, pgAudit, αααααααααααααΈααΆααα½αα ααααααα)α
αααααΆαααΆαααΆααααα ααΆαααααΆααΆαα αΆααααααΎαααααΎααααΆααααααα·ααααα·ααααΈ Crunchy Data ααΆααααα αΆαααΈαααα αΆαα½αα ααα½αα
- αα·αααΆαααααααΆαααααΆαα’ααα±ααα - ααΆααα nodeSelector ααα»ααααααααααααΌαααΆααααααααΌαα
- ααααααααααΆααααααΎαααΊααΆααααααα½αααααΆαααΆαααααααΆα αααααΈααΆααΎαααΆαααΆαααααααΆααααααα·ααΈαααααΆααααααααααααααααα αα·αααΌα StatefulSets ααΆαααΆαααααααΆααα·αα’αΆα αααααΎαααΆαααΆαααα
αα»ααα·ααααα·α α»ααααααααΆαα±ααααΆααααααααΆαα½αα±ααα’ααααααΎα α αα ααΎααα·ααΆααΆαααΆααααα ααΎαααΆααααααααααααααΎαααΆαα αααα 3 ααΆαα½αααΆααα½α ααΆααααα»ααααα»ααααα»ααααααΆαα±ααααααα·ααααα·ααααΆαααΆαααααΆααΆαα ααααα ααα½α 3 αααα»αααααΎαααΆα (αααααΈααΆααΆαα·αααΆαααααα) α
αααααααα·ααααα½ααααααααααααα·ααααα·αααααααΊααΆααα½ααααα
αΌααααααααααα½α
ααΆααααα
ααΆαα½αααΉααααααααααααα½αααααααα α§ααΆα ααα ααΆααΆααααα½ααααα»αααΆαααα‘αΎα pgAdmin αα·α pgBounce α αΎααα
αααα»α
αααααΆαααΆαααΆααααα αααααΎαα αααααααααααΆαααααααααΎαααα Kubernetes ααΆαααΆαα±ααααΎααα αααααααΌαααΆααααα»αααΆαααααααααααααααααΆααααααα
3. ααααα·ααααα·αα Zalando Postgres
ααΎαααΆαααααΆααααα·ααα Zalando ααΆααΌαααα αΎαα ααΎαααΆααααα·αααααααααΎααααΆαα Zalenium α αΎαααΆααΆααα·αααΆαα ααΎαααΆαααααΆααΆα
αααααΊααΆαααααααααΆαααααααααααα»ααααααΆααα·ααΆααααΆαα αααα»αα’αααααα ααΆαα ααααααΆαααΎαααααΌαααΆαααΎαα‘αΎααα αααα»αααααΈα αΆ ααααΆα 2018 α αααααΈααΆαααΆαααΆααααα αααααΈααΆααΆαααΆαα ααααααΆαααααΌαααΆααα·α αα½α ααααα αααααααααααΆαααΆααα αααααααΌααααααααααΆα ααααααααααααΆαααΈ Crunchy Data αααααΆαααΆααΆ 1300+ αα ααΎ GitHub αα·αα ααα½αα’ααααα½αα ααααα’αα·ααααΆ (70+) αα½α αα α αΎαα
"αα ααααααααααΆαα" ααααα·ααααα·αααααααααΎαααααααααΆααααααΆαααΆααααααααααααΆα
- Patroni αα·α
ααααΌα‘αΌ αααααΆααααΆαααΎααα, -
WAL-E - αααααΆααααΆαααααα»ααα»α, -
PgBouncer - ααΆα’αΆααααααΆααα
αααααΆαααααααααααΆααααααααααααα·ααααα·ααααΈ Zalando ααααΌαααΆααααα αΆα:
ααααα·ααααα·ααααααΌαααΆαααααααααααααΆαααααααααΆαααα Custom Resources αααααΎα StatefulSet αααααααααααααααα·ααΈαα»αααΊααα ααααααααΆααααα’αΆα
ααααΌαααΆαααααΌαααΆαααααααααααααα sidecars αααααααα
pod α ααΆααα’αααααααΊααΆα’αααααααααααααααααΆαααααα»αααΆαααααααααααΆαα½αααααα·ααααα·ααααΈ Crunchy Data α
αααααΆαααΎαααΆαααααΎαααΎααααααααααΆαααΈ Zalando αααα»αα αααααααααΎαααΆαα 3 ααααααα»αααααΌαααΆααα·α αΆαααΆ ααΆααα·αααααΆααααααα’αααΈαααααααΆαααααααΆααΉαααααΌαααΆααααα αΆαααΆααααααααααΆαα αα½αααΆαα½αααΉαααΆαα’αα»αααααααααα·ααΈα
α’αα»ααααααΆαα½αααααα·ααααα·αα Postgres ααΈ Zalando
ααΆαααΆαααααααΆαααααα·ααααα·ααααΊααΆααααααΆααα ααααΆααααααΆαααααΆαα
ααααααΆααα
αα
α»ααααααααΈ GitHub α αΎαα’αα»ααααα―αααΆα YAML ααΈαα
αααααΆααααΈααα‘αΎααα½α
α’ααααα½ααααα½αααΆααααα’αααΈααΆαααα‘αΎα postgres-operator
αα
αααα»α namespace αααα’αααααΆαααα‘αΎα 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;
- α’αααααααΆααααα»αααΆααα·αααΆαααααα»ααα»α;
- αα αααααααΎαα»αααΆααααααΎαααΌαααααΆααα·αααααα αα·αααα·ααααΆαααΎααα·αααα α‘αΎαααα
- αααααααα―αααΆαααΆαα α¬α α½αααααα
ααΆααααΆαααα’αα½αααααΆα αααΎαα’αΆα ααααΌαααΆααααααααΆαα α αΌαα αΆααααααΎαααΈααΈαααα αα - αααα αΆααΆαα½α α―αααΆα.
ααΆαα
αααΎα α’αααααΉααα½ααααααααΆααα·ααααααΆααΆαα·ααααααα
αααΆααα’αααΈααααα
α»ααααααααΆαααααα»ααα»α αα·αααααααααΆαααα»αααααα»ααα»ααα
UI ααααααααα·ααααα·αααααααα α―αααΆααα·ααΆαα’αααΈααΏαααααααα»αααΆαααααααΆαα ααα»ααααααΆααα·αααααΆαα·αααααΆααααΊαα
αααα»α
- ααααΌαααΆαααΎααααΈααααΎα±ααα’αΆααααααΆαααα½α;
- αααααΌαααΆαα
ααααα·ααααα·ααααΆαααΆαααΆαααααα
pod_environment_secret_name
αα αααα»α CRD ααΆαα½αααΉαααΆααααααααααα·ααααα·αα α¬αα αααα»α ConfigMap (α’αΆαααααααΎαααααααα’ααααααααα α α·αααααα‘αΎαααααα·ααααα·αα)α
ααααααΆαααΆαααααααΌα
αααααΆααααααΆααααα·αα’αΆα
αα
αα½α
ααααΆααααα
αα
α»αααααααααα αααα αΎαααΆααΌαα ααα»αααααΎααααααΌαααΆαα
ααααα·αααΎα’αααααααααΆαααααΆαααΆαααααααααααΆααααΆαααααα»ααα»ααα
ααααα·ααααα·αα αααααΊ - wal_s3_bucket
αα·αα
αΌαααααΎααααΆααα
α»α
αα
αααα»α AWS S3 αααααΆααααααΆα ααΉαααααα»ααα»αα’αααΈααααααααΆαα αα·αβααααΉαβααβααΆαβααΌαααααΆαβαααα»αβααΆαβααα·αβααα»αααααβαα ααα»ααααβααβααΆαβααΆαβαααα
αβααβαααα ααααα·αααααΉαααΎαααα
αα
αααα»αααΆααα·αααααΆα’αααΈαααΆαααΆαααααααααααΆαα Spilo αααααΆαααα
αα Docker ααΌαααααΆααααααΆαα PgSQL αα
αααααααΎααααα·ααααα·ααααΆααΆαααααααααΆαα α’αααα’αΆα
ααααααΆαααααΆαααΆαααααα WAL_S3_BUCKET
ααα αααα ααα»ααααα·αααΆαααααα»ααα»αα ααΆαααααα
ααα αααα»αααΆαααααΎαααΆ ααΎααααΈααΆαααΈαααΆαααα’ααα
αΆααα enableWALArchiving: false
αα
ααΆααααααΆαα
ααααα PostgreSQL α
ααΆα ααΆαα±ααΆαααΎααααΈααααΎααΆαα»αααααΆαααααααΎαααΆαααααα·ααααα·ααα ααα½α 2α αα½ααααααΆααααααΆααααΆα (αααααααΆαααΆαααααα»ααα»α) αα·αααΈααΈααααααΆααααΆαααα·αα ααα»ααααααΎαα’αΆα ααααΎααΆααΆαααΆαα½ααα½αα
ααααααα ααΎαααΆααααααΈααααααααααα·αααα·α αΌαααααΎααΌαααααΆααα·αααααααααααΆαα S3 α αΎαααΆαααααα»ααα»αααΆαα αΆααααααΎαα αΌααα αααα»ααααααααααα»αα ααΎααααΎααΌα ααααα ααΎααααΈααααΎα±αααααααααααα»ααα»αααααΎαααΆααα αααα»α Operator UI?
α’αααααΉαααααΌαααααααα’ααα 3 αα
Operator UIα
-
SPILO_S3_BACKUP_BUCKET
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
αααααΆααααΈααα ααΆααααααααααααΆαααααα»ααα»αααΉαα’αΆα ααααΎααΆα ααααααα»αααααΈααααααΎαααΉαααααΎα±ααααΆαααΆαααΆαααΆαααΆααααααΆαα½αααΉαααααΆααααΆααααα’αα»ααααΆαα±ααααΎαα ααα αΆααααααααΈααα·ααααααα ααΈαααααααα·αα αΆαααΆα αααΆαααααααΈαααααααα
α’ααααααααααααα½ααααααΊααΆαααΆαααΆαα½α Teams API αα·αα±ααΆαα αααΎααααααΆαααααααΎαααΌαααααΆααα·αααααα αα·ααα½ααΆααΈαααααααΎα§αααααααααα·ααααα·ααα ααααααΆαααΆαααααααΆααααααΎα αα½ααΆααΈαα·αααΆααα·αααα·ααΆαααααΆαααΎαααα. ααΌα ααααα αΎα α’αααααααΎααααΆαααααααΆααα·αααα·α’αΆααα·αα’αΆα α’αΆαααΆααΆαααααΈααΆαααα
α ααα»α’αααΈααΆαααΆβα’ααα
αΉα? ααΎαααααΈααΆααΆααα·ααααααΆαα
αααα»αααΌα GRANT
αα½αααΆαα·ααααααααααΎααα ααΆααα·ααΈ α’αααΆαα syncPreparedDatabases
ΠΈ syncDatabases
α ααα syncPreparedDatabases
- αααααΈααΆααΆααα·ααααααΆαα
αααα»αααααα preparedDatabases
defaultRoles
ΠΈ defaultUsers
ααΎααααΈαααααΎααα½ααΆααΈ αα·αααα·ααααΆαααΎααα·αααααΌαααΆαα’αα»ααααααα ααΎααααα»ααααα·ααααα»αααααΎαααΆααααα
ααααα ααΎααααΈα±αααα·αααα·ααΆαααααααααΌαααΆαα’αα»αααααααααααααααααααα·α
α αΎαα
ααα»α
α
α»αααααααα
αααα»αααΆααααααα’αααααΆααααααΉαααΎα -
ααΎααΆαα’αααΈααΎαα‘αΎα?
αααααα’ααααΎααααααααααΆααααααααΆααααα αΆααΆαααΎ ααΎαααΆαααααααααα»αα αα»α Postgres Operator ααΈ Zalando α
αΌααα
αααα»α
αααααΈαα PRs αααααααΌαααΆαααα½ααααα αααα»ααα:
ααΆααααΆαααΌαααΆαααααααααααΆααααααΆααα»ααααα·ααΆααααααΆααααααα·ααααα·αααα αααα»α Docker ;αα·αααΆαααααα»ααα»α ;ααΆαααααΎαα αα α»ααααααααΆαααααααααΆααααααΆαααααααα αα α»αααααααα k8s ;ααΆαα’αα»αααα Node Affinity .
ααΆααΉαααα’ααααα·αααΎαα ααααααΆαααα PRs ααΆαααααααΎααααΈα±αααα½αααααα½αααΆαα ααααααΆαα½αααΉααααααααααΆααααααααα·ααααα·αα (1.6) α
ααααΆαααααααΆαα! ααΏαααααααααααΆαααααΆααααααΌαααα·ααααα
ααααα·αααΎα’αααααααΎ Patroni ααΆαααα·αααααααααΆααα’αΆα ααααΌαααΆαααααααα ααααα·ααααα·αααααααΆααααααααΆααα αΆααα·α αα½α αααα»αα
Spilo α’αα»ααααΆαα±ααα’ααααααααΎαααααα»ααααα
αΆαααΆααααα§ααααααααα»α S3 ααΆαα½α
ααΆαα ααααααΆαα‘αΌααΈαα PostgreSQL αααα½αααααααααα αααααΆαααΆαααΆααααα ααΎαααΉααα·ααααα’α·αα’αααΈαααααααααΎαααΆαααααα»αααααααΆα αα·αααΆαααΆααα ααΈααααα... αααααΆαααααααΎαααΊαα»αα
ααΆααα·αααΊααΆααΌαααααΆααα·ααααααααΆαααΆααΆααααα»αααΆα
αααΎααααααΆααα½αααΆααααΆα αααααΎαααΈααααα
αααααααΌαααΆαααααααααααα αα·ααα»αααΆαααααααααΆααα copy_data
αα
ααααααααΆαα
ααααααααΈα
ααααααΆαα·ααΆααΆααα’ααααΈαα ααΆαα·αα’αΆα
ααααααΆαα½αααααΆαααα ααΆαβα
ααααβααΆαα·ααΆβααΆαβααααΎβααΆαβαα½αβαααααΆα αβααα»ααααβαα·αβαααβα
αΆααβααΆαβααΆαα½αβααβα αα
ααΈαααα
ααααΆααΆααα½ααααα»ααααααααΆααααα αΆ pg_dump
. αααα»αααΉααααααΆααα’αααΈααααααααααΎα (ααααααααααα·α
) αααααα½ααααααααΆααααα
αααα·ααααααΊααΆα’αααα’αΆα ααααΎααΆαααΆααααααΆααα·αααααΆαααα ααΉαααααα ααααααΆααααΆαααα½α α αΎααααααΆαααααααααααΌααααααααα·ααααα·ααΆαα ααΆαααΆαα αααααααααΆααααΆαααΆαααα·αααααα αααααααΆαααααααααΆαα ααααααΉααα½ααααααΎαααΆααααα ααααααααααΆ α αΎαααααααα½αααΆαααααΆααααααΌαααΈααα
ααΆαααβαααααΆβαααααΆααβαααβαααααΆβα’αααΈβααααΎαβααΆαβααααΆααβααααΌαβααΉαβααααΎβαααααΆαβαααΆαααΈαβααΌα βααΆαβαααααα
- αα - αααΆαααΈαααααααα;
- α αααα α¨.α¦α©α α’α‘ - ααααααΈαα αααααα ααΎααα·αααααα αΆαα;
- α αααα α¨.α¦α©α α’α‘ - ααΆαα ααααα‘αΌααΈααααααΈα
αααααΆαα αααΆααααα»α
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. αααα»αα―αααΆαα αΆααααααΆααα αααΆαααΈαααααααΈα
pg_restore -h replica2 -F d -j 8 -d dbname dump/
7. αααααΆααβααΈβααΆαβααΆαβααβααΆαβαααα ααβααα α’αααβα’αΆα βα αΆααβααααΎβαβααΆαβα ααααβαα βααΎβααΆαβα ααααβααααααΈαβ:
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 α αααααΆαααΆαααΆααααααααααΆαααααα ααΆαααΌαααααααααααααα·αααααααα½αα±ααααααααααΆααααΆαα½αααΉααααα½ααααααα½ααα ααΆααΊααΆαααααα αα αΆαααΆααΆααα’αΆα ααΆαααααΌαα ααα½αααααΆα nuances ααααα·αααΆαααααΉααα»αααΌα ααααααΌαααααΎαααΎαααααα·ααααα·ααααααα’ααααααααααΆααααΆα
αααααΆααα·α αΆαααΆααΎααααα·ααααα·αα Kubernetes ααααααα·αααααα»αα ααα½αααΈαααααΆαα PostgreSQL ααΎαααΆαααααΎαααΎαααααααααΈ Zalando α α αΎαααΎαααααΌααααααααΆαααααΆααα½αα ααα½αααΆαα½αααΆ ααα»αααααααααααα·αααΆαααα α·ααα ααΌα ααααα αΎαααΎαααΆααααααααααααΈααααα·αααααααααα ααΆααααΆαααα‘αΎα PgSQL ααααααααα ααααα·αααΎα’αααααΆααααα·αααααααααΎααααΆαααααααααααΆαααααααααααΆααα ααΎαααΉαααΈαααΆααααα»αααΆαααΎαααααααΆααααα’α·ααα αααα»αααα·ααααα!
PS
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
ααΌαααααΆααα·αααααα αα·α Kubernetes (ααΆααα·αα·αααα‘αΎααα·α αα·ααααΆαααΆαααααΈααα’αΌ) Β» - Β«
Postgres ααααα’ααααΆα #5: PostgreSQL αα·α Kubernetes α CI/CD ααααααααααααα·ααααααΆααααα Β» - Β«
ααΏααα½αααΆαα½αααααα·ααααα·αα Redis αα αααα»α K8s αα·αααΆααα·αα·αααα‘αΎααα·αααααΆαααΌα α’αααΈα§αααααααααΎααααΆαααααααΆααααΆααα·ααΆααα·ααααααααΈααΌαααααΆααα·ααααααααα "α
ααααα: www.habr.com