🖴 تهیه نسخه پشتیبان و بازیابی پایگاه داده های ظروف PostgreSQL | کوبنتس

از قلب بیرون بروید و پرونده ها را به صورت محلی کپی کنید:

 $ kubectl cp xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-7twk7: /tmp/db.out ./92-db.out
$ kubectl cp xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-7twk7: /tmp/dball.out ./92-dball.outociation19659003† در حال حاضر ، ما یک نسخه پشتیبان فوری از بانک اطلاعاتی کانتینر داریم. 

] حذف را حذف کرده و بازیابی کنید.

این باید پایگاه داده را مجددا تنظیم کند ، و نسخه ما باید تا زمان بهبودی ما نگه داشته شود ...

 $ kubectl حذف pod xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-7twk7
غلاف "xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-7twk7" حذف شد
$ kubectl غلاف دریافت کنید | grep xxxxxxx-sonarqube-infra-postgresql
xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-dtq8l 0/1 ContainerCreating 0 1m
$ kubectl غلاف دریافت کنید | grep xxxxxxx-sonarqube-infra-postgresql
xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-dtq8l 1/1 Running 0 15m 

بیایید تأیید کنیم که می توانیم از نسخه پشتیبان تهیه کنیم.

آزمایش MUG

(گروه کاربر مخرب - مطمئنم نام های دیگری نیز وجود دارد برای این نوع آزمایش ، اما من می خواستم از این اصطلاح استفاده کنم)

Bad admin پروژه را حذف می کند

بازیابی بانک اطلاعاتی کانتینر

ابتدا نسخه پشتیبان را در یک غلاف جدید کپی می کنیم و سپس باید وارد شوید و اتصالات را خراب کنیم. ما می توانیم پایگاه داده موجود را حذف و بازیابی کنیم.

 $ kubectl cp ./92-db.out xxxxxxx-sonarqube-infra-postgresql -6f58d97bdc-dtq8l: /tmp/db.out
$ kubectl exec -it xxxxxxx-sonarqube-infra-postgresql-6f58d97bdc-dtq8l - / bin / sh
پوسترهای # psql
psql (9.6.2)
برای کمک ، "راهنما" را تایپ کنید.

postgres = # UPDATE pg_database SET datallowconn = 'false' WHAHE datname = 'sonarDB'؛
به روز رسانی 1

postgres = # SELECT pg_terminate_backend (pid) از pg_stat_activity WHERE datname = 'sonarDB'؛
 pg_terminate_backend
----------------------
 تی
 تی
 تی
 تی
(4 ردیف)

postgres = # DROP DATABASE "sonarDB"؛
DATP DATABASE
  ترک

# ایجاد شده sonarDB
# psql sonarDB </tmp/db.out [19659015-03سرانجام،مابایددوبارهاتصالاترافعالکنیم(درغیراینصورتSonarqubeقادربهاستفادهازآننخواهدبود):

 postgres = # UPDATE pg_database SET datallowconn = 'true' WHETE datname = 'sonarDB'؛
به روز رسانی 1
postgres = #  ترک 

اکنون شما ممکن است فکر کنید که راه اندازی مجدد ساده پایگاه داده را خراب می کند ؛

اما سرور داده های زیادی را برای عملکرد ذخیره می کند.

تنها راه مطمئن برای اطمینان از SonarQube استخراج داده های تازه از بانک اطلاعاتی ، برای کشتن غلاف SonarQube و به روزرسانی آن است:

 $ kubectl حذف غلاف xxxxxxx-sonarqube-infra-sonarqube-78cdf5f6fd-whbdc
غلاف "xxxxxxx-sonarqube-infra-sonarqube-78cdf5f6fd-whbdc" حذف شد
$ kubectl غلاف دریافت کنید | grep sonarqube-infra-sonarqube
xxxxxxx-sonarqube-infra-sonarqube-78cdf5f6fd-7tfmp 1/1 Running 0 3m

وقتی سرویس بالا می رود ، ما واقعاً می بینیم که پروژه حذف شده بازیابی شده است:

بارگیری پایگاه داده Azure برای PostgreSQL با داده هایی که از نسخه پشتیبان کانتینر استفاده می شود. قبل از بررسی نشده

 pg_dump -Fc -v --dbname = sonarDB> /tmp/mydump.dumpociation19659023-03 می توانید از SSH در غلاف بازیابی استفاده کنید (یا این کار را بصورت محلی انجام دهید). 

شما باید زور دهید. SSL را در صورت لزوم توسط پایگاه داده Azure

 $ PGSSLMODE = نیاز خود تنظیم کنید
$ pg_restore -v --no-сопственик --host = sonar.postgres.database.azure.com --port = 5432 --username = sonar @ sonar --dbname = sonarDB ./mydump.dumpociation19659030]