Zaxira, tiklash va WAL
terminal
Amaliy lablar
Ushbu darsga biriktirilgan interaktiv topshiriqlar — real Kubernetes muhitida bajaring va natijani tekshiring.
terminal
PostgreSQL: pg_dump bilan mantiqiy zaxira olish
Osonbolt+20 XP
Zaxira nusxasiz baza — vaqt bombasi. Eng oddiy va eng ko'p ishlatiladigan vosita — pg dump: bazani QAYTA TIKLASH uchun yetarli SQL matnini yozadi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa hn bazasining to'liq mantiqiy zaxirasini /root/db/zaxira/full.sql fayliga oling. ⚠Matnli (plain SQL) formatda — ya'ni oddiy pg dump -f bilan. ⚠postgres nomidan: su postgres -c "/usr/lib/postgresql/16/bin/pg dump -h /tmp -p 5432 -d hn -f /root/db/zaxira/full.sql" Muvaffaqiyat mezoni (jonli) Fayl mavjud va bo'sh emas; ichida IKKI CREATE TABLE va IKKI COPY bloki bor; mijoz va buyurtma jadvallari ham, ma'lumot qatorlari ham bor
terminal
PostgreSQL: zaxirani YANGI bazaga tiklash va tekshirish
Osonbolt+20 XP
Zaxira fayli bor — lekin u ishlaydimi? Buni bilishning yagona yo'li: tiklab ko'rish. Tekshirilmagan zaxira zaxira hisoblanmaydi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa SEED /root/db/zaxira/full.sql zaxirasini allaqachon olgan. tiklangan nomli YANGI baza yarating (createdb) Zaxirani unga tiklang (psql -f) ⚠Tiklangan bazada qatorlar, FK va ketma-ketlik holati asl bazadagi kabi bo'lishi kerak. Muvaffaqiyat mezoni (jonli) tiklangan bazasi mavjud; unda mijoz 3 qator, buyurtma 2 qator; balans yig'indisi 600; FK constraint saqlangan; mijoz id seq qiymati 3
terminal
PostgreSQL: COPY bilan CSV eksport va import
Osonbolt+20 XP
Ma'lumotni Excel'ga, BI vositasiga yoki boshqa bazaga berish kerak. COPY — PostgreSQL ning eng tez import/eksport vositasi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa mijoz jadvalidan id, ism, balans ustunlarini /tmp/mijoz.csv fayliga eksport qiling — CSV formatda, SARLAVHA qatori bilan, id bo'yicha tartiblangan mijoz import(id int, ism text, balans int) jadvalini yaratib, shu CSV ni unga import qiling ⚠COPY ... TO/FROM '/tmp/...' server tomonda ishlaydi va postgres huquqi bilan yoziladi — shuning uchun /tmp ishlatiladi. Muvaffaqiyat mezoni (jonli) CSV fayl 4 qatordan iborat (sarlavha + 3 qator); sarlavha id,ism,balans; mijoz import jadvalida 3 qator va balans yig'indisi 600
terminal
PostgreSQL: halokatdan tiklash — jadvallar o'chirib yuborilgan
Murakkabbolt+30 XP
Kimdir ishlab chiqarish bazasida drop table bajardi. Zaxira bor. Vazifa — ma'lumotni tiklash. Bu — zaxira strategiyasining haqiqiy sinovi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa SEED holat: /root/db/zaxira/full.dump (custom format) zaxirasi olingan, keyin mijoz va buyurtma jadvallari O'CHIRILGAN. Zaxiradan ikki jadvalni ham to'liq tiklang: tuzilma, ma'lumot, FK va ketma-ketlik holati joyida bo'lsin. ⚠pg restore ishlatilsin (-Fc formati psql -f ni qabul qilmaydi). Muvaffaqiyat mezoni (jonli) mijoz 3 qator va balans yig'indisi 600; buyurtma 2 qator; FK constraint tiklangan; mijoz id seq qiymati 3; yangi insert kalit ziddiyatisiz ishlaydi
terminal
PostgreSQL: WAL arxivlashni yoqish (PITR uchun asos)
Murakkabbolt+30 XP
Mantiqiy zaxira kechada olinadi. Halokat tushdan keyin bo'lsa — yarim kunlik ma'lumot yo'qoladi. Nol yo'qotish uchun WAL (tranzaksiya jurnali) ARXIVLANISHI kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa archive mode ni on qiling archive command ni sozlang: WAL faylini /var/lib/wal arxiv/ ga nusxalasin (cp %%p /var/lib/wal arxiv/%%f) Serverni QAYTA ISHGA TUSHIRING (pg ctl restart) — archive mode faqat restart bilan qo'llanadi select pg switch wal() bilan WAL faylini almashtirib, arxivga fayl tushganini tekshiring ⚠alter system set ... ishlatilsin — sozlama postgresql.auto.conf ga yoziladi. Muvaffaqiyat mezoni (jonli) archive mode jonli qiymati on; archive command sozlangan; postgresql.auto.conf da yozuv bor; /var/lib/wal arxiv/ da kamida BITTA arxivlangan WAL fayli bor; server ishlab turadi
terminal
PostgreSQL: fizik zaxira (pg_basebackup) va uni tekshirish (H temasi yakuni)
Murakkabbolt+30 XP
Katta bazada mantiqiy zaxira soatlab davom etadi. Fizik zaxira — ma'lumot fayllarining izchil nusxasi — ancha tez va PITR ning asosi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa pg basebackup bilan klasterning FIZIK zaxirasini /var/lib/zaxira/base katalogiga oling — katalog (plain) formatda (-Fp), WAL fayllari bilan (-Xs) Zaxirani pg verifybackup bilan TEKSHIRING va natijani /root/db/zaxira/verify.txt fayliga yozing ⚠Zaxira ichida PG VERSION, backup label va backup manifest fayllari bo'lishi kerak. Muvaffaqiyat mezoni (jonli) Zaxira katalogida PG VERSION, backup label, backup manifest bor; pg verifybackup natijasi backup successfully verified; asl baza hamon ishlab turadi
terminal
PostgreSQL: custom format zaxira va pg_restore bilan tiklash
Murakkabbolt+30 XP
Matnli dump — hammasi yoki hech narsa. Custom format esa ICHIDAN tanlab tiklash, parallel tiklash va siqishni beradi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa hn bazasining zaxirasini custom formatda /root/db/zaxira/full.dump fayliga oling (-Fc) Zaxira ICHIDAGILAR ro'yxatini /root/db/zaxira/toc.txt fayliga yozing (pg restore -l) tiklangan2 bazasini yaratib, zaxirani pg restore bilan tiklang Muvaffaqiyat mezoni (jonli) full.dump mavjud (ikkilik format); toc.txt da IKKI TABLE DATA yozuvi bor; tiklangan2 bazasida mijoz 3 qator va buyurtma 2 qator
terminal
PostgreSQL: sxemani va ma'lumotni alohida zaxiralash
Osonbolt+20 XP
Ba'zan faqat SXEMA kerak (yangi muhit qurish uchun), ba'zan faqat MA'LUMOT (mavjud sxemaga yuklash uchun). Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa Ikki alohida zaxira oling: /root/db/zaxira/sxema.sql — FAQAT sxema (--schema-only) /root/db/zaxira/data.sql — FAQAT ma'lumot (--data-only) Muvaffaqiyat mezoni (jonli) sxema.sql da CREATE TABLE bor, lekin COPY ma'lumot bloki YO'Q; data.sql da COPY bor, lekin CREATE TABLE YO'Q
terminal
PostgreSQL: bitta jadvalni tanlab zaxiralash va chiqarib tashlash
Osonbolt+20 XP
Katta bazada bitta jadvalning zaxirasi kerak bo'ladi (masalan migratsiya oldidan). Butun bazani zaxiralash — vaqt va joy isrofi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa Ikki zaxira oling: /root/db/zaxira/mijoz.sql — FAQAT mijoz jadvali (-t) /root/db/zaxira/nobuyurtma.sql — buyurtma jadvalidan TASHQARI hammasi (--exclude-table) Muvaffaqiyat mezoni (jonli) mijoz.sql da faqat mijoz jadvali bor, buyurtma YO'Q; nobuyurtma.sql da mijoz bor, buyurtma YO'Q
terminal
PostgreSQL: rollarni zaxiralash — pg_dumpall globals
Murakkabbolt+30 XP
pg dump FAQAT bir bazani oladi — rollar, parollar va klaster darajasidagi sozlamalar KIRMAYDI. Halokatdan keyin tiklashda bu esdan chiqadi va GRANT buyruqlari xato bera boshlaydi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hn bazasida ikki jadval: mijoz (3 qator, balans yig'indisi 600) va buyurtma (2 qator, mijoz id orqali FK bilan bog'langan). Zaxira katalogi: /root/db/zaxira/ (postgres uchun yozishga tayyor). ⚠pg dump, pg restore, createdb — hammasi postgres nomidan chaqiriladi: su postgres -c "pg dump -h /tmp -d hn ...". Vazifa Klaster darajasidagi obyektlarni (rollar) /root/db/zaxira/globals.sql fayliga zaxiralang. ⚠pg dumpall --globals-only ishlatilsin — ma'lumot va jadvallar KIRMASIN. ⚠SEED zaxira roli nomli rolni allaqachon yaratgan. Muvaffaqiyat mezoni (jonli) Fayl mavjud; ichida zaxira roli bor; CREATE ROLE buyrug'i bor; CREATE TABLE va COPY bloklari YO'Q (faqat globals)
