Pituduh pikeun Nyadangkeun Database

- Oh, euweuh panyumputan bisa nahan hiji meteorite hit. Tapi anjeun, sapertos sadayana, gaduh cadangan, janten anjeun henteu kedah hariwang.

Stanislav Lem, "Star Diaries of Ijon the Quiet"

Nyadangkeun nujul kana nyimpen salinan data dimana waé di luar lokasi panyimpenan utami.

Pituduh pikeun Nyadangkeun Database

Tujuan utama cadangan nyaéta mulangkeun data saatos leungit. Dina hal ieu, anjeun sering ngadangu yén upami anjeun gaduh réplika database, anjeun salawasna tiasa ngabalikeun data ti dinya, sareng henteu peryogi cadangan. Kanyataanna, cadangan ngidinan Anjeun pikeun ngajawab sahanteuna tilu masalah nu teu bisa direngsekeun maké réplika, sarta réplika teu bisa initialized tanpa salinan cadangan.

Kahiji, cadangan ngidinan Anjeun pikeun cageur data sanggeus kasalahan logis. Contona, hiji akuntan ngahapus grup transaksi atawa administrator database ancur spasi méja. Duanana operasi sagemblengna légal ti sudut pandang database, sarta prosés réplikasi bakal baranahan aranjeunna dina database replica.

Bréh, DBMS modern mangrupakeun sistem software pisan dipercaya, tapi aya kalana ruksakna struktur database internal lumangsung, nu satutasna aksés ka data leungit. Anu paling karasa nyaéta palanggaran sapertos kitu biasana lumangsung dina beban anu luhur atanapi nalika masang sababaraha jinis pembaruan. Tapi duanana beban tinggi sareng apdet biasa nunjukkeun yén pangkalan data sanés mangrupikeun pangkalan data tés, sareng data anu disimpen di jerona berharga.

Tungtungna, tugas katilu, solusi anu merlukeun salinan cadangan, nyaéta kloning database, contona, pikeun tujuan nguji.

Cadangan pangkalan data nyaéta hiji cara atanapi anu sanés dumasar kana salah sahiji tina dua prinsip:

  • Sampling data sareng nyimpen salajengna dina format khusus;
  • Snapshot file database sareng nyimpen log.

Hayu urang ningal langkung caket kana prinsip-prinsip ieu sareng alat anu ngalaksanakeunana.

Ngunggah data

Sakumpulan utilitas anu kalebet dina DBMS kedah kalebet alat pikeun ngamuat sareng ngamuat data. Data disimpen dina format téks atanapi dina format binér khusus pikeun DBMS tinangtu. Tabel di handap ieu nyayogikeun daptar alat sapertos kieu:

format binér
Format téks

Oracle
DataPump Ékspor / DataPump Impor
Ékspor / Impor
SQL * Ditambah / SQL * Loader

PostgreSQL
pg_dump, pg_dumpall/pg_restore
pg_dump, pg_dumpall/psql

Microsoft SQL Server
bcp
bcp

DB2
ngabongkar momotanana
ngabongkar momotanana

MySQL

mysqldump, mysqlpump/mysql, mysqlimport

MongoDB
mongodump / mongorestore
mongoexport / mongoimport

Cassandra
nodetool snapshot / stableloader
cqlsh

Hal alus ngeunaan format téks téh nya éta bisa diédit atawa malah dijieun ku program éksternal, sarta format binér, kahareupna alus sabab ngidinan Anjeun pikeun unggah tur ngundeur data leuwih gancang ku nyimpen sumberdaya on konversi format.

Sanaos kesederhanaan sareng kajelasan ideu pikeun ngunduh data, metode ieu jarang dianggo pikeun nyadangkeun pangkalan data industri anu dimuat. Ieu mangrupikeun alesan naha unloading henteu cocog pikeun cadangan lengkep:

  • prosés unloading nyiptakeun beban signifikan dina sistem sumber;
  • unloading butuh loba waktu - ku waktu unloading réngsé éta moal relevan deui;
  • Ieu ampir teu mungkin keur ngalakukeun unloading ngagabung sakabéh database dina beban tinggi, saprak DBMS kapaksa nyimpen hiji snapshot tina kaayaan na nalika unloading dimimitian. Langkung seueur transaksi parantos réngsé ti mimiti unggah, langkung ageung ukuran snapshot (salinan data anu teu relevan dina PostgreSQL, bolaykeun rohangan di Oracle, tempdb dina Microsoft SQL Server, jsb.);
  • unloading preserves struktur logis data, tapi teu ngawétkeun struktur fisik na - parameter gudang fisik tabel, indéks, jsb.

Nanging, unggah ogé ngagaduhan kaunggulan:

  • selectivity tinggi: Anjeun bisa ngundeur tabel individu, widang individu komo barisan individu;
  • data nu diundeur bisa dimuat kana database versi sejen, sarta lamun undeuran dijieun dina format téks, lajeng kana database sejen.

Ku kituna, unggah dipaké utamana pikeun tugas kayaning nyadangkeun tabel leutik (contona, diréktori) atawa ngadistribusikaeun susunan data jeung release aplikasi salajengna.

Metodeu cadangan database anu paling umum nyaéta nyalin file database.

Panyimpenan tiis file database

Gagasan anu jelas nyaéta ngeureunkeun pangkalan data sareng nyalin sadaya file na. Cadangan ieu disebut cadangan "tiis". Metoda ieu pisan dipercaya jeung basajan, tapi boga dua drawbacks atra:

  • Tina cadangan "tiis", anjeun ngan ukur tiasa mulangkeun kaayaan pangkalan data anu aya dina waktos pareum; transaksi dijieun sanggeus balikan deui database moal kaasup dina "tiis" salinan cadangan;
  • Henteu unggal database gaduh jandela téhnologis nalika database bisa dieureunkeun.

Upami cadangan "tiis" cocog sareng anjeun, anjeun kedah émut éta

  • Salinan tiis sakapeung kedah kalebet log. Métode pikeun nangtukeun log anu kedah lebet kana salinan "tiis" masing-masing pikeun unggal DBMS. Contona, dina Oracle perlu nyalin nu disebut redo online, nyaeta, jumlah tetep file log dina diréktori husus, sanajan database dieureunkeun neuleu. Dina PostgreSQL, anjeun kedah nyimpen sadaya log dimimitian ku log anu ngandung titik pamariksaan anu terakhir, inpormasi anu aya dina file kontrol.
  • Diréktori database bisa ngandung file tablespace samentara anu cukup badag yén maranéhna teu perlu kaasup kana cadangan. Ku jalan kitu, komentar ieu ogé leres pikeun cadangan panas.

Nyimpen file panas

Kaseueuran cadangan pangkalan data modéren dilakukeun ku nyalin file database tanpa ngeureunkeun pangkalan data. Aya sababaraha masalah di dieu:

  • Nalika nyalin dimimitian, eusi database bisa jadi teu coincide jeung eusi file, sabab sababaraha informasi aya dina cache sarta teu acan ditulis kana disk.
  • Nalika nyalin, eusi pangkalan data tiasa robih. Upami struktur data anu tiasa dirobih dianggo, eusi file robih, sareng nalika struktur anu teu tiasa dirobih dianggo, susunan file robih: file énggal muncul sareng anu lami dihapus.
  • Kusabab nyerat data kana pangkalan data sareng maca file database henteu disingkronkeun ku cara naon waé, program cadangan tiasa maca halaman anu salah, dimana satengahna tina versi halaman anu lami, sareng satengah sanésna tina anu énggal.

Supados cadanganna konsisten, unggal DBMS gaduh paréntah anu ngabéjaan yén prosés cadangan parantos dimimitian. Syntactically, paréntah ieu bisa kasampak béda:

  • dina Oracle ieu paréntah misah ALTER DATABASE / TABLESPACE ngamimitian cadangan;
  • dina PostgreSQL - fungsi pg_start_backup ();
  • Dina Microsoft SQL Server sareng DB2, persiapan pikeun nyadangkeun dilaksanakeun sacara implisit nalika ngalaksanakeun paréntah BACKUP DATABASE;
  • dina MySQL Enterprise, Cassandra sareng MongoDB, persiapan sacara implisit dilaksanakeun ku utilitas éksternal - mysqlbackup, OpsCenter sareng Ops Manager, masing-masing.

Sanaos béda sintaksis, prosés nyiapkeun cadangan sigana sami.

Ieu mangrupikeun persiapan pikeun cadangan dina DBMS kalayan struktur disk anu tiasa dirobih, nyaéta dina sadaya sistem hubungan disk tradisional:

  1. Momen cadangan dimimitian inget; cadangan bakal perlu ngandung log database ti titik ieu ka hareup.
  2. Pos pamariksaan dilakukeun, nyaéta, sadaya parobihan anu aya dina halaman data sateuacan momen anu diinget disiram kana disk. Ieu ensures yén euweuh log anu diperlukeun saméméh cadangan dimimitian salila recovery.
  3. Modeu logging khusus diaktipkeun: upami halaman data parantos robih pertama kalina saatos ngamuat tina disk, teras tinimbang nyerat parobahan halaman kana log, pangkalan data bakal nyerat sadayana halaman di dinya. Nalika ngalaksanakeun prosedur persiapan, sadaya halaman disiram kana disk, janten nalika parobihan dilakukeun, sadaya blok bakal salawasna diserat kana log. Tapi lamun kaca ieu digusur ka disk deui salila prosés cadangan, parobahan salajengna ka dinya ogé bakal ngahasilkeun salinan pinuh kaca muncul dina log. Ieu ensures yén lamun kaca tétéla lepat nalika nyalin file data, nerapkeun log bakal nyieun bener deui.
  4. Parobihan kana header file data diblokir, nyaéta, bagian éta anu parobahanana henteu ditingali dina log. Ieu mastikeun yén lulugu disalin leres teras log diterapkeun leres kana file data.

Saatos sadaya prosedur di luhur parantos réngsé, anjeun tiasa nyalin file data nganggo alat sistem operasi - cp, rsync sareng anu sanésna. Aktipkeun mode cadangan ngurangan kinerja database: firstly, volume log naek, sarta Bréh, lamun ujug-ujug gagalna lumangsung dina modeu cadangan, recovery bakal nyandak leuwih lila sabab headers file data teu diropéa. Langkung gancang cadanganna réngsé, langkung saé pikeun pangkalan data, janten langkung saé ngagunakeun alat sapertos snapshot sistem file atanapi ngarobih eunteung (BCV) dina susunan disk. Sababaraha DBMSs (Oracle, PostgreSQL) ninggalkeun administrator kasempetan ka bebas milih métode nyalin, batur (Microsoft SQL Server) nyadiakeun panganteur pikeun ngahijikeun Utiliti cadangan sorangan kalawan sistem file atawa mékanisme gudang.

Saatos cadangan parantos réngsé, anjeun kedah mulangkeun pangkalan data ka kaayaan normal. Dina Oracle ieu dipigawé ku paréntah ALTER DATABASE / TABLESPACE END BACKUP, di PostgreSQL ku nelepon pg_stop_backup () fungsi, sarta dina database séjén ku rutin internal tina paréntah pakait atawa jasa éksternal.

Ieu kumaha garis waktos prosés cadangan sapertos kieu:

Pituduh pikeun Nyadangkeun Database

  • Nyiapkeun pikeun cadangan butuh waktu, sakapeung waktu considerable. Malah lamun jilid mirrored atawa sistem file snapshot-sanggup dipaké, prosés cadangan moal sakedapan.
  • Kalayan file data, anjeun kedah nyimpen log ti mimiti nyiapkeun cadangan dugi ka waktos database balik deui ka kaayaan normal.
  • Anjeun tiasa mulangkeun tina cadangan ieu dina waktos dasarna mulang ka kaayaan normal. Malikkeun ka titik saméméhna teu mungkin.

Kalawan basis data anu ngagunakeun struktur data immutable (snapshots memori, tangkal LSM), kaayaan leuwih basajan. Nyiapkeun pikeun cadangan diwangun ku léngkah-léngkah ieu:

  1. Data tina mémori dialirkeun kana disk.
  2. Daptar file anu kalebet dina salinan cadangan dirékam. Dugi prosés cadangan réngsé, pangkalan data dilarang ngahapus file ieu, sanaos henteu diperyogikeun deui.

Kana sinyal yén cadangan geus réngsé, database kalawan struktur immutable bisa deui mupus file nu teu perlu.

Pamulihan ka titik

A salinan cadangan ngidinan Anjeun pikeun mulangkeun kaayaan database ka momen nalika paréntah balik ti modeu cadangan réngsé. Sanajan kitu, kacilakaan anu merlukeun recovery bisa lumangsung iraha wae. Tugas mulangkeun kaayaan database dina momen sawenang disebut "point-in-time recovery".

Pikeun mastikeun ieu mungkin, Anjeun kudu nyimpen log database mimitian ti tungtung cadangan, sarta salila prosés recovery, terus nerapkeun log kana salinan disimpen. Saatos pangkalan data disimpen deui tina salinan cadangan nalika salinan réngsé, kaayaan pangkalan data (file sareng halaman cache) dijamin leres, janten mode logging khusus henteu diperyogikeun. Ku nerapkeun log dina waktos anu pas, anjeun tiasa kéngingkeun kaayaan pangkalan data iraha waé waktos.

Nalika laju cadangan tiasa dibalikkeun ngan ukur ku bandwidth disk, laju dimana log tiasa diterapkeun biasana diwatesan ku kinerja prosesor. Upami parobihan lumangsung paralel dina pangkalan data utama, teras salami pamulihan sadayana parobihan dilaksanakeun sacara berurutan - dina urutan anu dibaca tina log. Ku kituna, waktu recovery gumantung linier on sabaraha jauh titik recovery ti titik tungtung cadangan. Kusabab ieu, perlu sering nyieun cadangan pinuh - sahenteuna saminggu sakali pikeun database kalawan beban transaksi leutik sarta nepi ka salinan poean database kacida dimuat.

Cadangan Incremental

Pikeun nyepetkeun recovery ka hiji titik, abdi hoyong tiasa ngalakukeun cadangan sakumaha mindeng-gancang, tapi dina waktos anu sareng teu nyandak up spasi disk tambahan sarta teu ngamuat database kalawan tugas cadangan.

Solusi pikeun masalah nyaéta cadangan incremental, nyaéta, nyalin ngan ukur halaman data anu parantos robih ti saprak cadangan sateuacana.
Cadangan Incremental ngan make akal pikiran pikeun DBMSs anu ngagunakeun struktur data mutable.

Kanaékanna tiasa diitung tina cadangan lengkep (salinan kumulatif) atanapi tina salinan sateuacana (salinan diferensial).

Pituduh pikeun Nyadangkeun Database

Hanjakal, teu aya terminologi seragam, sarta pabrik béda ngagunakeun istilah béda:

diferensial
Kumulatif

Oracle
Bedana
Kumulatif

PostgreSQL
Incremental
-

Microsoft SQL Server
-
Bedana

IBM DB2
Delta
Incremental

Upami aya salinan incremental, prosés malikkeun ka hiji titik nyaéta kieu:

  • cadangan pinuh panungtungan dijieun saméméh balikkeun dibalikeun;
  • salinan incremental disimpen dina luhureun salinan pinuh;
  • log digulung ti titik mimiti cadangan ka titik recovery.

Gaduh salinan kumulatif nyepetkeun prosés pamulihan. Ku kituna, contona, pikeun mulangkeun kaayaan database ka titik antara T3 na T4, perlu pikeun balikkeun dua salinan Incremental, sarta mulangkeun ka titik sanggeus T4, ngan hiji.
Jelas, ukuran hiji salinan kumulatif leuwih leutik batan ukuran sababaraha salinan diferensial, sabab sababaraha kaca geus robah sababaraha kali, sarta unggal salinan incremental ngandung versi béda kaca.

Aya tilu cara pikeun nyieun salinan incremental:

  1. nyieun salinan lengkep jeung ngitung bédana jeung salinan lengkep saméméhna;
  2. log parsing, nyieun daptar kaca robah na cadangan kaca kaasup dina daptar;
  3. querying kaca robah dina database.

Métode anu kahiji ngahémat rohangan disk, tapi henteu ngirangan beban dina database. Leuwih ti éta, upami urang gaduh cadangan lengkep, ngarobihna janten cadangan tambahan teu aya gunana, sabab mulangkeun cadangan lengkep langkung gancang tibatan mulangkeun cadangan lengkep sateuacana sareng cadangan tambahan. Langkung saé ngadelegasikeun tugas ngahémat rohangan disk ku pendekatan ieu ka komponén khusus kalayan mékanisme deduplikasi bawaan. Ieu tiasa janten sistem panyimpenan khusus (EMC DataDomain, HPE StorageWorks VLS, sadaya lini NetApp) atanapi produk parangkat lunak (ZFS, Veritas NetBackup PureFile, Windows Server Déduplikasi Data).

Metodeu kadua jeung katilu béda dina mékanisme pikeun nangtukeun daptar kaca robah. Parsing log langkung seueur sumber daya, ditambah pikeun ngalaksanakeunana anjeun kedah terang struktur file log. Cara panggampangna nyaéta naroskeun kana pangkalan data sorangan halaman mana anu parantos dirobih, tapi pikeun ieu kernel DBMS kedah ngagaduhan fungsionalitas pelacakan anu diblokir.

fungsionalitas cadangan Incremental munggaran diwanohkeun dina software Oracle Recovery Manager (RMAN), diwanohkeun dina release Oracle 8i. Oracle langsung ngalaksanakeun pelacakan blok anu dirobih, ku kituna henteu kedah nga-parse log.

PostgreSQL henteu ngalacak blok anu dirobih, janten utilitas pg_probackup, dikembangkeun ku perusahaan Rusia Postgres Professional, nangtukeun halaman anu dirobih ku nganalisa log. Nanging, perusahaan ogé nyayogikeun PostgresPro DBMS, anu kalebet ekstensi ptrack anu ngalacak parobahan halaman. Nalika nganggo pg_probackup sareng PostgresPro DBMS, pamundut utilitas ngarobih halaman tina pangkalan data sorangan - sami sareng RMAN.

Microsoft SQL Server, sapertos Oracle, ngalacak halaman anu dirobih, tapi paréntah BACKUP ngan ukur ngamungkinkeun anjeun ngadamel cadangan lengkep sareng kumulatif.

DB2 mibanda kamampuhan pikeun lagu kaca robah, tapi ditumpurkeun sacara standar. Sakali diaktipkeun, DB2 bakal ngidinan pinuh, diferensial, jeung cadangan kumulatif.

Beda penting antara alat anu dijelaskeun dina bagian ieu (iwal pg_probackup) sareng alat cadangan file nyaéta aranjeunna nyuhunkeun gambar halaman tina pangkalan data tinimbang maca data tina disk sorangan. Karugian tina pendekatan ieu mangrupikeun beban tambahan leutik dina dasarna. Sanajan kitu, aral ieu leuwih ti dibales ku kanyataan yén kaca dibaca salawasna bener, jadi teu perlu ngaktipkeun mode logging husus salila cadangan.

Perhatikeun deui yén ayana salinan incremental teu ngaleungitkeun sarat pikeun mibanda log sadia pikeun recovery ka titik sawenang dina waktu. Ku alatan éta, dina basis data industri, log terus-terusan ditulis deui ka média éksternal, sarta cadangan, lengkep jeung / atawa incremental, dijieun dina jadwal.

Implementasi pangsaéna tina ide cadangan tambahan ayeuna nyaéta Zero Data Loss Recovery Appliance, sistem perangkat keras sareng perangkat lunak (dina terminologi Oracle, sistem anu direkayasa) - solusi Oracle khusus pikeun nyadangkeun database na nyalira. Sistem ieu mangrupikeun klaster. server ZDLRA gaduh kapasitas disk anu ageung sareng ngajalankeun vérsi modifikasi tina parangkat lunak Recovery Manager. Éta tiasa dianggo sareng sistem perangkat keras sareng parangkat lunak Oracle anu sanés (Database Appliance, Exadata, SPARC Supercluster) ogé sareng database Oracle anu dijalankeun dina infrastruktur tradisional. Teu sapertos RMAN "biasa", ZDLRA nerapkeun konsép "inkremental salamina". Sistem nyiptakeun salinan database lengkep sakali, teras ngan ukur ngadamel salinan tambahan. Modul RMAN tambahan ngamungkinkeun anjeun ngahijikeun salinan, nyiptakeun salinan lengkep énggal tina anu tambahan.

Pikeun kiridit pamekar Rusia, éta kudu dicatet yén pg_probackup ogé bisa ngagabungkeun salinan incremental.

Pituduh pikeun Nyadangkeun Database

Beda sareng seueur patarosan anu sami, patarosan "metode cadangan mana anu langkung saé" gaduh jawaban anu jelas - pilihan anu pangsaéna nyaéta utilitas asli tina DBMS anu dianggo, anu nyayogikeun kamampuan pikeun cadangan tambahan.

Pikeun pangurus pangkalan data, anu langkung penting nyaéta masalah milih strategi cadangan sareng ngahijikeun alat cadangan pangkalan data kana infrastruktur perusahaan. Tapi patarosan ieu saluareun ruang lingkup artikel ieu.

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster