Ukuphela Kokukhiqiza Ngengozi, Okhiye Abavuzayo be-API, noma Ingqalasizinda Yefu Esusiwe¶
Wonke unjiniyela we-software, umlawuli wezinhlelo, kanye nesisebenzi esikude sobuchwepheshe ekugcineni babhekana nesikhathi sokwehla lapho umyalo uhloselwe localhost noma staging ikhiphe ngokumelene production: okungakhonjwanga DELETE ngaphandle a WHERE isigatshana, a DROP TABLE noma terraform destroy, a git push --force esula igatsha eliyinhloko, noma isibopho somphakathi esiqukethe i-AWS ebukhoma noma okhiye abayimfihlo be-Stripe. Okuhlukanisa i-hiccup yemizuzu engu-15 kusuka enhlekeleleni yedatha eqeda umsebenzi ukumisa izandla zakho ngokushesha, ukuqandisa kwethrafikhi yokubhala ngaphambi kokuba amabhulokhi esitoreji abhalwe ngaphezulu, kanye nokusebenzisa umthetho olandelwayo wokutakula.
Yenza lokhu manje¶
- Misa izandla zakho futhi UNGAgijimi imiyalo "yokulungisa" ngokuxhamazela, qala kabusha iseva egciniwe, noma vala iwindi letheminali yakho. Ibhafa yakho yamanje yokuskrola, umlando wegobolondo, kanye nendawo
.git/logsi-reflog iqukethe izitembu zesikhathi eziqondile zokwenziwe, ama-SHA hash, nama-ID wensiza adingekayo ukuze kuhlehliswe umonakalo. Kopisha konke ukuskrola emuva kwetheminali yakho kufayela lombhalo eliphephile kuqala. - Memezela Isigameko Esibucayi-1 (SEV-1) esehlakalweni sethimba lakho lesiteshi se-Slack/Teams phakathi nemizuzu emi-2. Ungalokothi uchithe imizuzu engu-45 uzama ukulungisa ngokuyimfihlo isizindalwazi sokukhiqiza esiphukile sisodwa kuyilapho amakhasimende enza amaphutha angu-500 futhi imisebenzi engemuva ezenzakalelayo yonakalisa amathebula asele. Cacisa i-on-call Database Administrator (DBA) noma i-Site Reliability Engineer (SRE) ngokushesha.
- Uma uvuze ukhiye we-API,
.envifayela, noma imfihlo yefu ku-repo yasesidlangalaleni ye-GitHub, HOXA ukhiye kudeshibhodi yomhlinzeki KUQALA (ngaphambi kokuzama ukubhala kabusha umlando we-Git). Amabhothithi azenzakalelayo aklwebha i-GitHub Firehose API yomphakathi futhi asebenzise okhiye abantshontshiwe be-AWS, i-OpenAI, Stripe, ne-GCP phakathi nesekhondi3 lika-1git push. Ukususa ifayela ekubopheni kwesibili noma ukuphusha ngenkani akuvimbi umhlaseli osevele enze ukhiye. - Uma ugijime ngephutha
DELETE,UPDATE, nomaDROPkusizindalwazi sokukhiqiza, sika isicelo BHALA ithrafikhi ngokushesha. Faka uhlelo lokusebenza lwewebhu Kumodi Yokulungisa noma uhoxise izimvume zokubhala zomsebenzisi wohlelo lokusebenza ukuze okwenziwayo okusha okungenayo kungasusi amakhophi afile angavaliwe noma enze kube nzima Ukutholwa Kwephoyinti Lokusebenza (PITR). - Ungalokothi ugijime
VACUUM,OPTIMIZE TABLE, nomagit gc --prune=nowngemva kokususwa ngephutha. Kokubili isizindalwazi esihlobene (i-PostgreSQL MVCC, MySQL InnoDB) kanye ne-Git zigcina imigqa esusiwe futhi izintandane ziyazibophezela kudiski kuze kube yilapho iphasi yokuqoqwa kukadoti/i-vacuum ifuna kabusha amakhasi. - Uma a
terraform destroynoma umbhalo wokususa ifu usasebenza kutheminali yakho, cindezelaCtrl + CKANYE (hhayi kabili) noma bulala ithokheni yeseshini ye-IAM. IyacindezelaCtrl + Ckanye nokucupha ukuguquguquka kwezwe okuhle ukuze i-Terraform ilondoloze ingxenye.tfstatengalokho okusekhona; ngokucindezelaCtrl + Ciphoqa kabili ukukhipha isisu okungenamusa okungase konakalise noma kulahlekelwe ifayela lakho lendawo.
Danger
Iphutha Eliyingozi elingu-#1 Ngemva Kokuvuza Imfihlo ku-Git: Ungalokothi ucabange ukuthi uphephile ngoba ugijime git rm .env && git commit -m "remove secret" && git push. Konke ukuzinikela okungokomlando ku-Git kuhlala kufundeka esidlangalaleni kuze kube phakade kugrafu yokuzibophezela, futhi noma ubhala phezu kwegatsha nge git push --force, umsebenzi wezintandane we-SHA uhlala ufinyeleleka nge-GitHub API kanye neziseshi zengobo yomlando yomphakathi (GHArchive). Noma iyiphi imfihlo ethinta ikhosombe elikude ngisho nangesekhondi elingu-1 kufanele ithathwe njengeyonakala engamaphesenti angu-100 futhi ihoxiswe/ezungeziswe kumhlinzeki okhiphayo ngokushesha.
Ukugeleza komsebenzi we-Emergency triage: ukwehla kwesizindalwazi, i-git force-push, noma ukuvuza okuyimfihlo¶
Landela lesi sihlahla sesinqumo ukuze uhambise imizuzu yakho yokuqala emi-5 yokuqukatha kobuchwepheshe.
flowchart TD
A["Isimo Esiphuthumayo Sobunjiniyela Bokukhiqiza"] --> B{"Yikuphi ukwehluleka okusanda kwenzeka?"}
B -->|"I-SQL DROP / DELETE / UPDATE ngengozi ku-Prod"| C["Misa Uhlelo Lokubhala / Imodi Yokulungisa; Ungasebenzisi i-VACUUM"]
B -->|"Ukhiye we-API oputshuziwe / .env / Ukhiye Oyimfihlo ku-Git"| D["Hoxisa futhi Zungezisa Imfihlo Kudeshibhodi Yamafu Ngaphakathi kwamasekhondi angu-60"]
B -->|"Ngengozi git push --force / Igatsha elisusiwe"| E["Qalisa i-git reflog Endaweni; Kopisha Ukuzinikela Okuhle Kokugcina kwe-SHA"]
B -->|"I-terraform ngengozi ibhubhisa / Isusiwe i-S3 noma i-VM"| F["Bulala Iseshini ye-IAM noma Cindezela u-Ctrl+C Kanye; Gcina i-.tfstate"]
C --> G["Rekhoda Isitembu sesikhathi se-UTC Esinembile; Qalisa i-Cloud PITR Clone noma i-Binlog Flashback"]
D --> H["Audit CloudTrail / Finyelela Izingodo ze-Spin-Ups Engagunyaziwe; Hlanza i-Repo nge-git-filter-repo"]
E --> I["Imibuzo ye-GitHub Events / Reflog & Buyisela Igatsha nge-git push --force-with-lease"]
F --> J["Bheka i-S3 Versioning Delete Markers, i-EBS Snapshots, noma i-Cloud Recycle Bin"]
Ingxenye 1: Isizindalwazi sokukhiqiza ngengozi DROP, TRUNCATE, noma DELETE ngaphandle WHERE¶
Uma umbuzo olimazayo we-SQL ufika kusizindalwazi sokukhiqiza bukhoma, indlela yokuphinda ithole incike enjinini yakho yesizindalwazi (i-PostgreSQL, MySQL/MariaDB, SQL Server, MongoDB, noma DynamoDB) kanye nokuthi isitatimende besiyi DML (DELETE / UPDATE) noma DDL (DROP TABLE / TRUNCATE) ukusebenza.
Isinyathelo 1: Rekhoda ngqo isitembu sesikhathi se-UTC wehle uye kwesesibili¶
Ngaphambi kokuthinta noma iyiphi ikhonsoli eyisipele, bhala phansi isikhathi esiqondile samanje se-UTC (date -u ku-terminal ye-Linux/macOS, noma SELECT NOW(); ngaphakathi kokwaziswa kwe-SQL) bese ulinganisela isekhondi ngqo ngaphambi kokuba umbuzo wakho olimazayo uqale ukusebenza. I-Point-In-Time Recovery (PITR) isebenza ngokudlala kabusha Ilogi ye-Write-Ahead yesizindalwazi (WAL ku-PostgreSQL) noma i-Binary Log (binlog ku-MySQL) kuze kube T_minus_1_second ngaphambi kokuba umbuzo wakho omubi ufike.
Isinyathelo sesi-2: Misa imisebenzi yasemuva kanye nokubhala kwezicelo (Vikela ama-tuples e-MVCC)¶
Ku-PostgreSQL, yenza DELETE FROM users; noma UPDATE orders SET status = 'cancelled'; ingabe ayisuli empeleni i-byte eyodwa yedatha efayeleni letafula kudiski ngokushesha. Ngoba i-PostgreSQL isebenzisa i-Multi-Version Concurrency Control (MVCC)**, a DELETE umane usetha i xmax Isihloko se-ID yokwenziwayo ku-tuple yomugqa ngamunye ukuze uyiphawule njengengabonakali emibuzweni yesikhathi esizayo, okushiya idatha yomugqa ephelele ihlezi injalo ngaphakathi base/ heap kuze kube yilapho i-autovacuum ifika ukuze iphawule isikhala ukuthi singasetshenziswa kabusha.
- Uma uku-self-hosted noma i-VM PostgreSQL futhi ungenayo ikhophi yasenqolobaneni yakamuva: Ngokushesha xhuma njengo
superuserfuthi ukhubaze i-autovacuum kulelo thebula (ALTER TABLE table_name SET (autovacuum_enabled = false);), noma misa isevisi ye-PostgreSQL bese uthatha isifinyezo sesistimu yefayela elingahluziwe (LVM/EBSisithombe) se/var/lib/postgresql/dataumkhombandlela. Izandiso ezikhethekile ze-PostgreSQL (pg_dirtyread) ingafunda futhi ithole amaphesenti angu-100 emigqa esusiwe noma yokubuyekeza kusengaphambili ngokuqondile kuthebula lenqwaba elingavaliwe ngamaminithi.
I-matrix yokubuyisela isizindalwazi ngenjini neplathifomu yamafu¶
| I-Database Platform | Indlela Yokubuyisela Esheshayo Yengozi DROP / DELETE |
Isinyathelo Ngesinyathelo Ukwenziwa Kwezobuchwepheshe |
|---|---|---|
| AWS RDS / Aurora (PostgreSQL / MySQL) | I-Automated Point-In-Time Recovery (PITR) kuya Esimeni Esisha (Ibuyisela kunoma yimuphi umzuzwana ngaphakathi kwewindi lokugcinwa losuku olungu-1 kuya kwezingu-35) | 1. Vula i-AWS RDS Console -> Izipele ezizenzakalelayo -> Khetha i-Prod DB yakho -> Buyisela ukuze ukhombe ngesikhathi. 2. Khetha Idethi nesikhathi ngokwezifiso bese ufaka isitembu sesikhathi se-UTC esinembile imizuzwana eyi-10 kuya kwengama-30 NGAPHAMBI kombuzo wakho omubi. 3. I-RDS iphenya i-parallel clone ( prod-db-recovery) emizuzwini eyi-10 kuye kwengama-25. Lahla ithebula elingaphelele (pg_dump -t my_table noma mysqldump) kusuka ku-clone yokutakula futhi uyingenise uyibuyisele ku-Prod DB ebukhoma (noma ushintshe i-DNS CNAME/iphoyinti lokugcina ku-clone etholiwe). |
| I-Google Cloud SQL / Isizindalwazi se-Azure | I-Point-In-Time Clone | Ku-GCP Console -> Khetha isibonelo se-Cloud SQL -> Clone -> Khetha Clone kusuka endaweni yangaphambilini (UTC) -> Khipha imigqa engekho ku-clone nge pg_dump / mysqldump noma Isisonga Sedatha Yangaphandle (postgres_fdw). |
| Supabase / Neon / PlanetScale | Igatsha Elisheshayo / Ukubuyiselwa Kohambo Lwesikhathi | I-Neon: Dala ikhophi-on-ubhala esheshayo Igatsha kusuka kusitembu sesikhathi somlando (Timestamp noma LSN 1 iminithi edlule) emizuzwaneni engu-2 bese ukopisha ithebula emuva.I-Supabase: Ideshibhodi -> Isizindalwazi -> Izipele -> Khomba Ekubuyiselweni Kwesikhathi. I-PlanetScale: Sebenzisa inkinobho ye-schema buyisela / buyisela emuva inkinobho yephoyinti lokuhlola ku-UI yesicelo sokuphakelwa. |
Izibambele ngokwakho i-MySQL / MariaDB (Nge binlog_format = ROW) |
I-Binlog Inversion (binlog2sql / mysqlbinlog --flashback) |
Lapho i-MySQL isebenza nge binlog_format = ROW (okuzenzakalelayo kusukela ku-MySQL 5.7.7), njalo DELETE noma UPDATE ibhala isithombe esiphelele sangaphambi nangemuva sayo yonke irowu ethintekile kulogi kanambambili (mysql-bin.0000XX). Gijima binlog2sql --flashback (noma i-MariaDB mysqlbinlog --flashback) kuleso sikhundla sokungena ngqo ukuze ukhiqize ngokuzenzakalelayo okuphambene ngqo INSERT noma UPDATE Isikripthi se-SQL bese usidlala futhi kumasekhondi angu-60 ngaphandle kokubuyisela isipele esigcwele. |
| I-Snowflake / I-BigQuery (I-Cloud Data Warehouses) | ** Uhambo Lwesikhathi Lwe-SQL Okwakhelwe Ngaphakathi (AT / BEFORE)** |
Kudingeka ukubuyisela ikhophi yasenqolobaneni enguziro. Buza ithebula njengoba belikhona emizuzwini emi-5 edlule: Ikhekheba leqhwa: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT(OFFSET => -60*5); (noma UNDROP TABLE my_table;).Umbuzo Omkhulu: SELECT * FROM dataset.my_table FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 MINUTE); |
| I-MongoDB Atlas / Replica Set | I-Oplog PITR Buyisela noma Ilungu Lesibili Elibambezelekile | Ku-MongoDB Atlas: Isipele -> Buyisela -> Khomba Ngesikhathi (idlala kabusha local.oplog.rs iqoqo kuze kufike kusekhondi eliqondile ngaphambi kokuwa). |
Ingxenye 2: Okhiye be-API abaputshuziwe, .env izimfihlo, noma okhiye abayimfihlo abazibophezele ku-Git¶
Uma wenze iphutha ngephutha .env ifayela, i id_rsa Ukhiye we-SSH, ifayela le-akhawunti yesevisi ye-Firebase/GCP ye-JSON, ukhiye oyimfihlo we-Stripe (sk_live_...), noma i-AWS AKIA... ukhiye wokufinyelela ku-Git, landela lokhu kulandelana okuyizigaba ezimbili okuqondile: Isigaba A (Bulala ukhiye emafini) kuqala, kanye Isigaba B (Khuhla inqolobane ye-Git) okwesibili.
Isigaba A: Isiqukathi sesiqinisekiso sefu semizuzwana engama-60 (Yenza lokhu KUQALA)¶
1. AWS (AKIA... I-ID Yokhiye Wokungena + Ukhiye Wokungena Oyimfihlo)¶
Lapho ama-bot entshontsha ukhiye we-AWS ku-GitHub, umbhalo wawo ozenzakalelayo ushaya i-akhawunti yakho phakathi nemizuzwana engu-10 ukuze ujikelezise izimo ze-GPU EC2 ezinosayizi omkhulu (p4d.24xlarge / g5.48xlarge) kuzo zonke izifunda zomhlaba wonke ezingama-30+ ze-AWS (okuhlanganisa nezifunda zokukhetha ukungena njenge-Jakarta, Osaka, kanye ne-Middle East) ukuze imayini ye-cryptocurrency, noma idale umsebenzisi we-IAM ongemuva nge AdministratorAccess ngaphambi kokuthi ususe ukhiye wangempela.
- Yenza kungasebenzi futhi Susa ukhiye wokufinyelela oputshuziwe ngokushesha:
- Vula Ikhonsoli ye-AWS -> I-IAM -> Abasebenzisi -> [Umsebenzisi Osengozini] -> Ukuqinisekisa ukuphepha -> Okhiye bokufinyelela -> Chofoza Yenza kungasebenzi, bese Susa (noma nge-CLI:
aws iam update-access-key --access-key-id AKIAIOSFODNN7EXAMPLE --status Inactive --user-name MyUser).
- Vula Ikhonsoli ye-AWS -> I-IAM -> Abasebenzisi -> [Umsebenzisi Osengozini] -> Ukuqinisekisa ukuphepha -> Okhiye bokufinyelela -> Chofoza Yenza kungasebenzi, bese Susa (noma nge-CLI:
- Namathisela okubekela sobala
DenyAllinqubomgomo yokunqanda okwesikhashanaaws stsamathokheni esikhathi:- Isicupho esibalulekile: Ngisho nangemva kokususa i-
AKIA...Ukhiye wokufinyelela we-IAM, uma umhlaseli esefonilests:GetSessionTokennomasts:AssumeRolephakathi nemizuzwana yokuqala engu-30, eyesikhashanaASIA...ithokheni yeseshini ihlala isemthethweni kuze kube yihora elingu-1 kuye kwayi-12 ngaphandle uma unamathisela inqubomgomo ebhalwe ngembaba ethi Yenqaba (njengokuthiAWSCompromisedKeyQuarantineV2noma inqubomgomo yokuphika konke yamathokheni akhishwe ngaphambi kwesitembu sesikhathi samanje) kumsebenzisi noma indima.
- Isicupho esibalulekile: Ngisho nangemva kokususa i-
- Hlola i-AWS CloudTrail ukuze uthole ukuphikelela kwangemuva:
- Vula I-AWS CloudTrail -> Umlando womcimbi bese uhlunga nge-I-ID Yokungena Ebucayini noma Igama lomsebenzisi emahoreni angu-2 adlule.
- Hlola ngokukhethekile lezi zingcingo ezi-5 zokuphikelela:
CreateUser,CreateAccessKey,AttachUserPolicy,AssumeRole, futhiRunInstances. Hlola okuthi I-AWS Cost Explorer kanye ne-EC2 Global View kuzo zonke zonke izifunda ukuze unqamule noma yiziphi izimo ezimbi, futhi uvule Ikesi Lokusekela Le-AWS (I-akhawunti Nezinkokhelo -> I-akhawunti Esengozini). I-AWS ivamise ukuyekelela izikweletu zekhompiyutha eziwumgunyathi uma ubika ukuvuza okubalulekile futhi unqamula izimo ngokushesha.
2. Umthende (sk_live_...), i-OpenAI (sk-...), SendGrid, Twilio, kanye ne-Slack Tokens¶
- Umucu: Iya kokuthi Onjiniyela -> Okhiye be-API -> Okhiye abajwayelekile / Okhiye Abakhawulelwe -> Chofoza amachashazi amathathu (
...) -> Roll key. Khetha "Kuphelelwa yisikhathi manje" (noma setha iwindi lomusa lehora elingu-1 kuphela uma usebenzisa ukhiye omusha ezintweni eziguquguqukayo zendawo yakho yokukhiqiza njengamanje). - I-OpenAI / Anthropic: Iya kudeshibhodi Yokhiye Be-API bese uchofoza okuthi Hoxisa / Susa ngokushesha ukuze ama-proxy scrapers azenzakalelayo angakwazi ukukhipha izinkulungwane zamadola zamakhredithi ethokheni ye-LLM ngemizuzu.
- Amathokheni Okufinyelela Komuntu Siqu we-GitHub (ama-PAT), Amathokheni Alungisiwe Kahle, Nokhiye Bokuthumela: Iya kokuthi Izilungiselelo ze-GitHub -> Izilungiselelo zikanjiniyela -> Amathokheni okufinyelela komuntu siqu bese uchofoza okuthi Susa / Hoxisa kuthokheni eputshuziwe, bese uhlola Ilogi Yokuhlola yenhlangano yakho (
Settings -> Audit log) ngobarepo.clone,repo.access, noma ukudalwa kwe-webhook okungagunyaziwe phakathi newindi lokudalulwa. - Izintambo zokuxhuma kusizindalwazi (
DATABASE_URL/postgres:///mongodb+srv://) kanye nama-URL we-Redis: Shintsha iphasiwedi yomsebenzisi wesizindalwazi ngaphakathi kwenjini yolwazi (ALTER USER app_user WITH PASSWORD 'new_random_secret';), bese inqamula konke ukuxhumana okuvuliwe okusebenzayo okwamanje kwe-TCP okuyingxenye yemininingwane endala (SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename = 'app_user' AND pid <> pg_backend_pid();ku-PostgreSQL), ngoba ukushintsha igama-mfihlo lesizindalwazi ku-PostgreSQL noma ku-MySQL kuvimbela kuphela ukungena okusha futhi kushiye uxhumano lomhlaseli oseluvele luvuliwe bukhoma kuze kube lukhahlelwa.
Isigaba B: Ukukhuhla imfihlo emlandweni we-Git (git filter-repo kanye nokukhishwa kwenqolobane ye-GitHub)¶
Uma ukhiye oputshuziwe usufile futhi usuzungezisiwe ekukhiqizweni, hlanza iyunithi yezinhlamvu eyimfihlo emlandweni wakho wokuzibophezela we-Git ukuze izikena zokuphepha ziyeke ukuxwayisa:
- Bhala kabusha umlando wendawo yokugcina usebenzisa
git filter-repo(noma i-BFG Repo-Cleaner):- Thatha isibuko esisha esingenalutho senqolobane yakho bese ususa ifayela eliputshuziwe (isibonelo,
.env) kuzo zonke izibophezelo zomlando kuwo wonke amagatsha nomaki:
- Thatha isibuko esisha esingenalutho senqolobane yakho bese ususa ifayela eliputshuziwe (isibonelo,
- Phusha ngokuphoqelela umlando ohlanziwe futhi ukhiphe inqolobane ye-GitHub Donsa Isicelo / Ukubuka kokuzibophezela:
- Phusha umlando ohlanziwe ubuyele kokwangempela (
git push origin --force --allfuthigit push origin --force --tags). - Isinyathelo sokuzibophezela esibalulekile se-GitHub: Ngisho nangemva kokuphoqelela ukuphusha umlando ohlanziwe, noma ubani owazi i-URL endala enezinhlamvu ezingu-40 yenza i-SHA URL (
github.com/org/repo/commit/abc1234...) usengabuka isithembiso esidala esingahlanzekile ku-UI yewebhu ye-GitHub kuze kube i-GitHub isebenzisa ukuqoqwa kukadoti ohlangothini lweseva. Xhumana no-GitHub Support (noma sebenzisa Ukwelulekwa Kwezokuphepha / Ingosi Yokusekela yenqolobane) nesibopho esidala esidala se-SHA bese ubacela ukuthi bakhiphe isithembiso esihoxisiwe/ezilengayo kunqolobane yewebhu futhi baqalise.git gcendaweni yokugcina ekude.
- Phusha umlando ohlanziwe ubuyele kokwangempela (
Ingxenye 3: Ukuhlehlisa iphutha git push --force, git reset --hard, noma igatsha elisusiwe¶
Uma ugijime ngephutha git push --force futhi wesula izibophezelo zabalingani bakho beqembu main, noma wagijima git reset --hard HEAD-5 futhi ulahlekelwe usuku olugcwele lomsebenzi wendawo, ungethuki, ngoba u-Git cishe akalokothi asuse izinto ezizibophezele ngokushesha.
Kungani ukuzibophezela kwakho "okulahlekile" kusahlezi ngokuphephile ngaphakathi .git/logs (I-Reflog)¶
Noma nini lapho udala isibopho, shintsha amagatsha, wehlise phansi, noma usetha kabusha, i-Git iqopha okwedlule HEAD kanye nezikhombisi ze-SHA-1/SHA-256 zegatsha ngaphakathi kweleja yendawo ebizwa ngokuthi Reference Log (git reflog), futhi igcina izinto eziyizintandane zangempela kudiski okungenani izinsuku ezingu-14 kuya kwezingu-90 ngaphambi kokuthi ukuqoqwa kukadoti kuzikhiphe.
Isinyathelo ngesinyathelo Izindlela zokupheka zokuthola izimo eziphuthumayo ze-Git¶
Isimo 1: Ugijimile git push --force futhi weqe origin/main¶
- Thola isibopho esiqondile se-SHA lokho
origin/mainukhombe kwesokudla ngaphambi kokucindezela kwakho:- Indlela A (Hlola i-reflog yakho yasendaweni yokulandelela kude): Qalisa lo myalo kutheminali lapho ophushe khona:
Uzobona okukhiphayo okufana nalokhu:
Lapha,
a1b2c3d (HEAD -> main, origin/main) refs/remotes/origin/main@{0}: update by push 9f8e7d6 refs/remotes/origin/main@{1}: fetch: fast-forward9f8e7d6(origin/main@{1}) kuyisibopho esiqondileorigin/mainibilungile ngaphambi kokuthi i-force-push yakho ikuqedele. - Indlela B (Buza noma yimuphi ozakwabo ongakagijimanga
git pullokwamanje): Noma yimuphi umuntu osebenza naye olandemainekuqaleni namuhla kusenomlando wokuzibophezela ophelele ohlezi endaweni yangakuboorigin/mainigatsha. - Indlela C (Buza ilogu yemicimbi ye-GitHub REST API): Uma i-reflog yakho yasendaweni ingenaso isimo esikude, buza nge-API yemicimbi yokuphusha ye-GitHub ukuze ubone
"before"I-SHA hash yomcimbi we-force-push:
- Indlela A (Hlola i-reflog yakho yasendaweni yokulandelela kude): Qalisa lo myalo kutheminali lapho ophushe khona:
Uzobona okukhiphayo okufana nalokhu:
- Buyisela
origin/mainekuzinikeleni kwangaphambilini kwe-SHA ngokuphephile:- Qinisekisa ukuzibophezela kubukeka kulungile (
git log -n 5 9f8e7d6), bese uphushela leyo SHA ngqo emuva kusilawuli kudemainigatsha usebenzisa--force-with-lease:
- Qinisekisa ukuzibophezela kubukeka kulungile (
Isimo sesi-2: Ugijimile git reset --hard noma ususe igatsha lendawo ngaphambi kokuphusha¶
- Gijima
git reflogendaweni yangakini: - Thola i-SHA yokubophezela ngaphambi kokuthi
reset:ukungena (isb.,HEAD@{2}: commit: feat: add payment webhook), futhi udale igatsha elisha lokuhlenga elikhomba ngqo kuleyo SHA: - Kungenzekani uma ulahlekelwe ifayela elingabophezelekile olilahlile
git added (esiteji) bese isula ngegit reset --hard?- Isikhathi ogijima ngaso
git add myfile.ts, I-Git icindezela futhi ibhale okuqukethwe okuphelele kwalelo fayela kukho.git/objects/njenge-blob elengayo, ngisho noma ungakaze ugijimegit commit. Ithole ngokufaka kuhlu wonke ama-blobs alengayo ahlelwe ngesikhathi sokulungiswa:
- Isikhathi ogijima ngaso
Ingxenye 4: Ngengozi terraform destroy noma isitoreji samafu esisusiwe (S3, EBS, VMs)¶
Uma ipayipi le-Infrastructure-as-Code (IaC) noma umyalo we-CLI owenziwe ngesandla uqala ukudiliza izinsiza zamafu zokukhiqiza:
- Misa ukwenza ngokuphepha:
- Uma isebenza endaweni kutheminali yakho, cindezela
Ctrl + CKANYE ngakho i-Terraform iqeda ucingo lwayo lwamanje lwe-API futhi ibhala okubuyekeziwe.tfstateifayela ngokuhlanzekile. Uma isebenza ngaphakathi kwe-GitHub Actions, GitLab CI, noma Terraform Cloud, chofoza okuthi Khansela Run futhi ukhubaze ngokushesha indima yomgijimi we-CI AWS/GCP IAM kukhonsoli yamafu ukuze ukususwa kwe-API endizeni kuhlulekeAccessDenied.
- Uma isebenza endaweni kutheminali yakho, cindezela
- Yenza ikhophi yasenqolobaneni yamanje
.tfstateifayela ngokushesha:- Landa ikhophi yendawo yefayela lakho lesifunda esikude (
terraform state pull > emergency-backup.tfstate) bese uhlola inguqulo yebhakede le-S3 kubhakede lakho lesifunda se-Terraform ukuze ubambe inguqulo yesimo sangaphambilini emizuzwini eyi-10 edlule.
- Landa ikhophi yendawo yefayela lakho lesifunda esikude (
- Hlola umhlinzeki wamafu "Soft-Delete" kanye namanetha okuphepha e-Recycle Bin:
- I-Amazon S3 (Enikwe amandla Inguqulo Yebhakede): Isusa amafayela ebhakedeni lenguqulo ye-S3 (
aws s3 rm --recursive) ayisusi** into eyodwa; imane ifaka i-zero-byte Susa Umaka phezu kwento ngayinye. Susa Omaka Delete (nge-S3 Batch Operations noma iPython enemigqa emi-5boto3script) ukuze ubuyisele amaphesenti angu-100 amafayela akho ngokushesha. - Izifinyezo ze-AWS EBS Nezifinyezo ze-RDS (Recycle Bin): Hlola I-AWS Recycle Bin kukhonsoli uma imisiwe, bese uhlola Izipele ze-AWS ezigcina amanzi.
- I-Google Cloud Platform (GCP) kanye ne-Microsoft Azure: Amaphrojekthi E-GCP Asusiwe kanye Namaqembu Ensiza Ye-Azure / Ama-Vault Abalulekile / Ama-Akhawunti Esitoreji ane-Soft Delete enikwe amandla ahlala etholakala 7 kuya kwezingu-30 izinsuku ngokuchofoza okukodwa kokubuyisela kukhonsoli.
- I-Amazon S3 (Enikwe amandla Inguqulo Yebhakede): Isusa amafayela ebhakedeni lenguqulo ye-S3 (
Ungayithola kanjani kabusha i-Terraform ephukile .tfstate ifayela lombuso noma ungenise kabusha ingqalasizinda eyizintandane¶
Lapho a terraform apply noma ngephutha terraform destroy kuphazamiseka phakathi nendiza, noma lapho othile esusa ngephutha ifayela lesimo esikude ku-S3/GCS, ingqalasizinda yakho yefu ingena esimweni esiyingozi sobuchopho obuhlukene lapho ezinye izinsiza zisekhona ku-AWS/GCP kuyilapho ezinye zingekho .tfstate:
- Ithola isilawuli kude esibhalwe phezu noma esisusiwe
.tfstateifayela kusuka ku-S3 / GCS Versioning:- Ungalokothi uhlele i-JSON mathupha
.tfstateifayela ngesandla kusihleli sombhalo ngaphandle uma zonke ezinye izinketho zehlulekile, ngenxa yokuthi eyodwa ayifani"serial"noma"lineage"Iyunithi yezinhlamvu ye-UUID izovimba i-Terraform ukuthi ingaphinde isebenze. - Vula ibhakede lakho le-S3 (noma ibhakede le-Google Cloud Storage / Terraform Cloud Workspace States ithebhu) lapho kuhlala khona isilawuli kude, chofoza okuthi Bonisa izinguqulo guqula phezulu kukhonsoli ye-S3, thola
terraform.tfstateinguqulo ifakwe isitembu sesikhathi ngaphambi kokuthi kusebenze kabi, yilande, bese uyibuyisela emuva ngokuphepha njengesimo esisha:
- Ungalokothi uhlele i-JSON mathupha
- Ukuphula i-state lock lock (
Error acquiring the state lock):- Lapho ukhipha isisu esibi
terraform destroyngeCtrl + Cnoma ubulale umgijimi olengayo we-CI, ithebula le-DynamoDB elikude noma ifayela lokukhiya i-GCS lihlala likhiyiwe yi-ID yenqubo efile. - Okokuqala qinisekisa kudeshibhodi yakho ye-CI kanye nozakwenu ukuthi i-zero ezinye izinqubo ze-Terraform zisasebenza kuleyo ndawo yokusebenza, bese ukhulula ukhiye oyintandane usebenzisa I-ID Yokukhiya i-UUID ephrintwe kumlayezo wephutha:
- Lapho ukhipha isisu esibi
- Ukwakha kabusha imvelo ecekeleke phansi ngaphandle kokuvuselela imininingwane egciniwe (
terraform import):- Uma a
terraform destroyusule Izibhalansi zakho Zomthwalo Wokucela (aws_lb) kanye namanodi ezisebenzi ze-ECS/EKS ngaphambi kokuwumisa, okulula ukukulungisa: vele ugijimeterraform applyfuthi i-Terraform izophinda idale wonke amanethiwekhi angenasisekelo futhi ibale izendlalelo kusukela ekuqaleni emizuzwini emi-5 kuyilapho ishiya imininingo egciniwe ye-RDS esele ingakathintwa. - Uma ifayela lakho lesifunda lilahlekelwe umkhondo wesizindalwazi esisekhona noma ibhakede le-S3, sebenzisa i- **
import {}ibhulokhi yokumisa ** (Terraform 1.5+) nomaterraform import aws_db_instance.prod_db my-rds-instance-idukubophezela insiza yefu ekhona ibuyele kufayela lakho lesimo ngaphandle kokuyicekela phansi, bese ugijimaterraform planukuqinisekisa"0 to destroy"ngaphambi kokufaka isicelo.
- Uma a
Ingxenye 5: Ungaxhumana kanjani nomphathi wakho ngokunqamuka bese uhola ukuhlolwa kokuhlolwa kwesidumbu okungasoleki¶
Uma ubangela isigameko sokukhiqiza ngenkathi usebenza ukude, isithunzi sakho sobungcweti sichazwa hhayi ngephutha ngokwalo, kodwa ngesivinini sakho sokubeka izinto obala, ukuxhumana okuzolile, nokulungiswa okuhlelekile.
Imithetho emi-3 Egolide Yokuxhumana Kwesigameko¶
- Yisho amaqiniso, umthelela, kanye ne-ETA ngaphandle kokufihla, ukubambezeleka, noma ukusola: Bika iphutha phakathi nemizuzu emi-2 yokutholwa.
- Hlukanisa "Ukunciphisa" (Ukumisa ukopha) kokuthi "Ukulungisa Imbangela Yembangela": Esimeni esiphuthumayo, umgomo wakho okuwukuphela kwawo ukubuyisela isevisi (ukubuyisela emuva ukusetshenziswa okubi, ukwehluleka ukudlulela kusizindalwazi sesizindalwazi se-PITR, noma ukucisha ifulegi lesici). Londoloza ukwenziwa kabusha kwekhodi okujulile kwakusasa.
- Thumela izibuyekezo ezijwayelekile eziyimizuzu engu-15 zokushaya kwenhliziyo esiteshini sesigameko ukuze abaphathi nokwesekwa kwamakhasimende bazi ukuthi kukhona olawulayo.
Kopisha-namathisela Iskripthi Sesimemezelo Sesigameko Seqembu¶
[ISEV-1 ISENZAKALO] Ukukhiqizwa [Isevisi / Igama Lesizindalwazi] Umthelela - Kwenzekeni: Ngo
[HH:MM UTC], ngenkathi isasebenza[brief technical action, e.g., a data migration script], okungahlosiwe[DELETE / config change / force-push]yasetshenziswa ekukhiqizeni[database / service]. - Umthelela Wamanje Wekhasimende:[e.g., Checkout API is returning 500 errors / User profile updates are paused]. - Ukunciphisa Ngokushesha Kuyaqhubeka: 1. Bhala ithrafikhi ku[table/service]imisiwe okwesikhashana ukuze kulondolozwe ubuqotho bedatha. 2. I-Poin-In-Time Recovery (PITR) yenza ku[HH:MM:SS UTC](Amasekhondi angu-10 ngaphambi komcimbi) okwamanje iyaqhubeka[AWS RDS / GCP]. - Umphathi Wesigameko:@[Your Name](isizwa ngu@[DBA/On-Call SRE]). - Isibuyekezo Esilandelayo: Emaminithini angu-15 ([HH:MM UTC]) noma ngokushesha nje lapho i-clone yokutakula ifika ku-inthanethi.
Uhlu lokuhlola lokuvikela ubunjiniyela lwangemva kwesigameko (Olwe-Blameless Post-Mortem yakho)¶
Lonke iphutha lomuntu ekukhiqizweni empeleni liyigebe lokuklama kwezinhlelo ** (uma umyalo wokugcina wekhophi enamathiselwe ungayeka ukukhiqiza ngaphandle kwe- guardrail, uhlelo belulindele ukwehluleka). Phakamisa futhi usebenzise lezi zindlela zokuqapha ezibambekayo kudokhumenti yakho yokufa ngosuku olulandelayo:
- Ikhodi yombala kanye nezimpawu zokukhiqiza isiqalo (
kube-ps1,psql.psqlrc): Lungiselela igobolondo lakho kanye neklayenti le-SQL ukuze noma yikuphi ukuxhumana kukhoPRODUCTIONibonisa okubomvu ngokugqamile[PROD-DB]ngokushesha futhi iqala yonke iseshini ye-PostgreSQL esebenzayo ngaphakathi kwe-BEGIN;block transaction ngokuzenzakalelayo (noma amasethiSET default_transaction_read_only = on;). - Vumela
safe-updates(--i-am-a-dummy) kumaklayenti e-MySQL/MariaDB: Engezasafe-updatesku[mysql]phakathi-/.my.cnfngakho-ke i-MySQL iyenqaba ngokuphelele ukwenza noma iyiphiUPDATEnomaDELETEisitatimende esintula aWHEREisigatshana esiyinhloko noma aLIMIT. - Vula
DeletionProtection = truekuzo zonke izizindalwazi zokukhiqiza ze-RDS, amabhakede e-S3, kanye nezinsiza ezisezingeni eliphezulu ze-Terraform (lifecycle { prevent_destroy = true }). - Sebenzisa Imithetho Yokuvikela Igatsha Le-Git
main/production: KhubazaAllow force pushesfuthiAllow deletionsemagatsheni avikelwe ku-GitHub/GitLab ukuze ngisho nabaphathi bendawo yokugcina bangakwazigit push --forcekumain. - Faka izingwegwe zokuskena eziyimfihlo ngaphambi kokuzibophezela (
gitleaksnomatrufflehog) kanye ne-GitHub Push Protection: Vimbela ukuzibophezela okuquketheAKIA,sk_live_, noma.envamaphethini endaweni ngaphambiligit commitngisho uyaphumelela.
Imibuzo ejwayelekile ukubuzwa¶
Ingabe ngizoxoshwa ngokuwisa ngephutha ithebula lesizindalwazi sokukhiqiza noma ukubangela ukuphela kwesayithi?¶
Ezinhlanganweni zobunjiniyela ezinempilo ezisebenzisa isiko lokuphepha elingasoleki (okujwayelekile kuwo wonke amaqembu esimanjemanje, i-DevOps, ne-SRE), onjiniyela abaxoshwa ngenxa yamaphutha abantu abaqotho ekukhiqizeni, inqobo nje uma bebika isigameko ngokushesha futhi basize ukubuyisela isevisi. Abaholi bobunjiniyela bayaqaphela ukuthi uma umthuthukisi omncane noma ophezulu enezimvume ezingavuthiwe kanye nokuntuleka kwemigqa yokugada yokuwisa ithebula lokukhiqiza elinomyalo owodwa ongabuyekeziwe, imbangela eyinhloko kuwukushiyeka ekulawuleni ukufinyelela nasekusetshenzisweni kwamathuluzi, hhayi ububi. Empeleni, unjiniyela osanda kuzibonela ngokwakhe lokho kuphazamiseka manje usengumuntu oyedwa ophephe kakhulu eqenjini mayelana nalolo hlelo. Okuwukuphela kwendlela yokuziphatha ehlala iholela ekunqanyulweni ukuzama ukufihla umcimbi wokulahleka kwedatha, ukususa amalogi okucwaninga, noma ukuqamba amanga phakathi nophenyo lwesigameko.
Kungani kungafanele ngishintshe ngokushesha ithrafikhi yami yokukhiqiza ebukhoma ngiyise kusizindalwazi esisanda kubuyiselwa se-Point-In-Time Recovery (PITR)?¶
Uma usule kuphela imigqa ngephutha etafuleni elilodwa (isibonelo, i- `user_preferences` ithebula) ngo-14:00 UTC, futhi kuthatha imizuzu engu-20 ukuzungeza i-PITR clone ebuyiselwe ku-13:59:50 UTC, imininingwane yakho egciniwe yokukhiqiza bukhoma kungenzeka iqhubekile nokucubungula izinkulungwane zama-oda nezinkokhelo zamakhasimende amasha ku- `orders` ithebula phakathi kuka-14:00 no-14:20 UTC. Uma ujikijela ngokungaboni yonke indawo yokugcina ye-DNS yakho ku-13:59:50 PITR clone, uzosula leyo mizuzu engama-20 yama-oda ekhasimende amasha sha. Kunalokho, gcina isizindalwazi esiyinhloko ku-inthanethi (okubhalwe kumiswe okwesikhashana kuphela esicini esiphukile) bese uthekelisa nje imigqa engekho kusukela ku-clone engu-13:59:50 ye-PITR emuva kuthebula lokukhiqiza elibukhoma.
Uma ngenza indawo yokugcina ye-GitHub Eyimfihlo imizuzu emibili ngemuva kokuphusha ngephutha i- .env ifayela, ingabe ngisadinga ukuzungezisa bonke okhiye be-API?¶
Yebo, amaphesenti angu-100 alabo khiye kusafanele ahoxiswe futhi azungeziswe ngokushesha. Konke ukuzibophezela okuphushelwe endaweni yokugcina ye-GitHub yomphakathi kusakazwa ngesikhathi sangempela nge-API yomphakathi ye-GitHub Events ("i-Firehose") futhi ikhonjwa phakathi nemizuzwana ngawo womabili amasevisi asemthethweni engobo yomlando zokuphepha (njenge-GHArchive) kanye nama-bots anonya asebenzisa i-credential-harvesting 24/7 kuwo wonke amanethiwekhi amafu. Ukuphenyisisa ukubonakala kwenqolobane kusukela Esidlangalaleni kuya Eyimfihlo emizuzwini emibili kamuva akusuli ikhophi esele ilandiwe ama-automated scrapers.
Kwenza kanjani git push --force-with-lease vimbela ukuphuma uma kuqhathaniswa git push --force?¶
Uma ugijima standard `git push --force`, I-Git ibhala phezu ngaphandle kwemibandela igatsha elikude negatsha lakho lasendaweni, licekele phansi buthule noma yikuphi ukuzibophezela kozakwethu ophushelwe kulelo gatsha ngaleso sikhathi. Lapho usebenzisa `git push --force-with-lease` (futhi okungcono kakhulu, `--force-if-includes`), i-Git ihlola iseva yesilawuli kude kuqala ukuze iqinisekise ukuthi ithiphu yegatsha elikude lisafana ncamashi nesibopho SHA umshini wakho wendawo ogcine ukulandwa. Uma osebenza naye noma ipayipi le-CI liphushe isibopho esisha egatsheni elikude kusukela ekulandeni kwakho kokugcina, `--force-with-lease` ukhipha isisu ngokuphepha ngesixwayiso "solwazi oludala" esikhundleni sokusula umsebenzi wabo.
Imithombo ihloliwe¶
- Isikhungo Sikazwelonke Samazinga Nobuchwepheshe (NIST, United States): NIST SP 800-61 Rev. 2 / Rev. 3 Umhlahlandlela Wokusingatha Isigameko Sokuvikeleka Kwekhompyutha kanye Nokuqukethwe Kokuzifaka engozini.
- I-Amazon Web Services (AWS), Google Cloud Platform (GCP), kanye ne-Microsoft Azure Documentation (United States): RDS Automated Point-In-Time Recovery (PITR) Architecture, AWS IAM Compromised Key Quarantine Policies (
AWSCompromisedKeyQuarantineV2), kanye ne-S3 Versioning Delete-Marker Recovery. - I-PostgreSQL Global Development Group kanye ne-MySQL / Oracle Documentation (International): I-PostgreSQL Bhala-Ahead Logging (WAL), Ukubonakala Kwe-MVCC Tuple, kanye Ne-MySQL Row-Based Binary Log Flashback Recovery.
- Imibhalo Esemthethweni Ye-Git SCM kanye Nelebhu Yokuphepha Ye-GitHub (Yamazwe Ngamazwe): I-Git Reflog (
git-reflog), Ukubuyiselwa Kwento Elengayo (git-fsck), Ukubhala Kabusha Umlando (git-filter-repo), kanye Nokuvikela Ukuskena Okuyimfihlo Kokuvikela. - I-USENIX Association / SREcon kanye ne-Google Site Reliability Engineering (SRE) Amabhuku (Amazwe Ngamazwe): Ukuphatha Izigameko, I-Emergency Rollback Triage, kanye ne-Blameless Postmortem Culture.
Iziqondiso ezihlobene¶
- Ukuphepha komsebenzi okude kwesimo esiphuthumayo nobumfihlo bedatha
- Izipele zekhompyutha 3-2-1 isu kanye nokuthola inhlekelele
- Ukususwa kwefayela ngengozi nokutholwa kwedrayivu efomethiwe
- Ukufuduka kwenhlekelele yokuba usokhaya wewebhu nokubuyisela isipele
- Ubugebengu bokweba imininingwane ebucayi nama-akhawunti afakwe engcupheni
- Izinombolo eziphuthumayo