{"id":92367,"date":"2020-08-26T07:42:09","date_gmt":"2020-08-26T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh"},"modified":"2020-08-26T07:42:09","modified_gmt":"2020-08-26T05:42:09","slug":"putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","title":{"rendered":"En guide till backup av databaser","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u2013 O, inget skydd kan st\u00e5 emot en meteorits tr\u00e4ff. Men precis som alla har ni en reserv, s\u00e5 ni beh\u00f6ver inte oroa er.<\/p>\n<p><i>Stanislaw Lem, \"Stj\u00e4rndagb\u00f6ckerna av Ijon Tichy\"<\/i><\/p><\/blockquote>\n<p>\nS\u00e4kerhetskopiering kallas f\u00f6r att spara en kopia av data n\u00e5gonstans utanf\u00f6r det prim\u00e4ra lagringsst\u00e4llet.<\/p>\n<p><img decoding=\"async\" alt=\"En guide till backup av databaser\" src=\"\/wp-content\/uploads\/2020\/08\/c1dba0d8999cab69315560dfc57546e0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHuvudsyftet med s\u00e4kerhetskopiering \u00e4r att \u00e5terst\u00e4lla data efter att de har g\u00e5tt f\u00f6rlorade. D\u00e4rf\u00f6r h\u00f6rs det ofta att om det finns en kopia av databasen kan man alltid \u00e5terst\u00e4lla data fr\u00e5n den, och s\u00e4kerhetskopiering \u00e4r inte n\u00f6dv\u00e4ndig. I verkligheten hj\u00e4lper s\u00e4kerhetskopiering till att l\u00f6sa minst tre problem som inte kan l\u00f6sas med en kopia, och man kan inte heller initiera en kopia utan en backup.<\/p>\n<p>F\u00f6r det f\u00f6rsta m\u00f6jligg\u00f6r en s\u00e4kerhetskopiering \u00e5terst\u00e4llning av data efter en logisk felaktighet. Till exempel, om en bokf\u00f6rare har raderat en grupp transaktioner eller om en databasadministrat\u00f6r har f\u00f6rst\u00f6rt ett tabellutrymme. B\u00e5da operationerna \u00e4r helt legitima i f\u00f6rh\u00e5llande till databasen, och replikeringen kommer att \u00e5terge dem i repliken.<\/p>\n<p>F\u00f6r det andra \u00e4r moderna databashanteringssystem mycket p\u00e5litliga programvaror, men ibland kan \u00e4ven interna strukturer i databasen skadas, vilket g\u00f6r att \u00e5tkomst till data f\u00f6rsvinner. S\u00e4rskilt frustrerande \u00e4r det att s\u00e5dana st\u00f6rningar vanligtvis sker under h\u00f6g belastning eller vid installation av n\u00e5gon uppdatering. Men b\u00e5de h\u00f6g belastning och regelbundna uppdateringar inneb\u00e4r att databasen inte \u00e4r en testversion, och data som lagras i den \u00e4r v\u00e4rdefulla.<\/p>\n<p>Slutligen, den tredje uppgiften som kr\u00e4ver tillg\u00e5ng till en s\u00e4kerhetskopiering \u00e4r kloning av databasen, till exempel f\u00f6r test\u00e4ndam\u00e5l.<\/p>\n<p>S\u00e4kerhetskopiering av databaser baseras p\u00e5 antingen av de tv\u00e5 principerna:<\/p>\n<ul>\n<li>Uts\u00f6kning av data med efterf\u00f6ljande lagring i ett godtyckligt format;<\/li>\n<li>Ett \u00f6gonblick av databasens filers tillst\u00e5nd och lagring av loggar.<\/li>\n<\/ul>\n<p>\nL\u00e5t oss g\u00e5 igenom dessa principer och verktygen som implementerar dem mer i detalj.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Export av data<\/h3>\n<p>\nI upps\u00e4ttningen verktyg som medf\u00f6ljer varje databashanteringssystem finns det n\u00f6dv\u00e4ndigtvis verktyg f\u00f6r export och import av data. Data kan sparas antingen i textformat eller i ett bin\u00e4rt format som \u00e4r specifikt f\u00f6r det aktuella databashanteringssystemet. Tabellen nedan visar s\u00e5dana verktyg:<\/p>\n<p>Bin\u00e4rt format<br \/>\nTextformat<\/p>\n<p>Oracle<br \/>\nDataPump Export\/DataPump Import<br \/>\nExportera\/Importera<br \/>\nSQL*Plus\/SQL*Loader<\/p>\n<p>PostgreSQL<br \/>\npg_dump, pg_dumpall\/pg_restore<br \/>\npg_dump, pg_dumpall\/psql<\/p>\n<p>Microsoft SQL Server<br \/>\nbcp<br \/>\nbcp<\/p>\n<p>DB2<br \/>\nunload\/ladda<br \/>\nunload\/ladda<\/p>\n<p>MySQL<\/p>\n<p>mysqldump, mysqlpump\/mysql, mysqlimport<\/p>\n<p>MongoDB<br \/>\nmongodump\/mongorestore<br \/>\nmongoexport\/mongoimport<\/p>\n<p>Cassandra<br \/>\nnodetool snapshot\/sstableloader<br \/>\ncqlsh<\/p>\n<p>\nTextformatet \u00e4r bra eftersom det kan redigeras eller till och med skapas av externa program, medan det bin\u00e4ra formatet \u00e5 sin sida \u00e4r bra eftersom det m\u00f6jligg\u00f6r snabbare exportering och importering av data genom att spara resurser vid omvandling av format.<\/p>\n<p>Trots enkelheten och tydligheten i id\u00e9n att exportera data anv\u00e4nds denna metod s\u00e4llan f\u00f6r att s\u00e4kerhetskopiera belastade industriella databaser. H\u00e4r \u00e4r anledningarna till varf\u00f6r export inte \u00e4r l\u00e4mplig f\u00f6r en fullst\u00e4ndig s\u00e4kerhetskopiering:<\/p>\n<ul>\n<li>exportprocessen skapar en betydande belastning p\u00e5 k\u00e4llsystemet;<\/li>\n<li>exporten tar mycket tid - vid tidpunkten f\u00f6r exportens avslutande kommer den redan att vara f\u00f6r\u00e5ldrad;<\/li>\n<li>att g\u00f6ra en konsekvent export av hela databasen vid h\u00f6g belastning \u00e4r praktiskt taget om\u00f6jligt, eftersom DBMS m\u00e5ste lagra en avbildning av sitt tillst\u00e5nd vid tidpunkten f\u00f6r exportens b\u00f6rjan. Ju fler transaktioner som har genomf\u00f6rts sedan exportens b\u00f6rjan, desto st\u00f6rre blir volymen av avbildningen (f\u00f6r\u00e5ldrade kopior av data i PostgreSQL, undo-utrymme i Oracle, tempdb i Microsoft SQL Server, osv.);<\/li>\n<li>exporten bevarar den logiska strukturen hos data, men inte deras fysiska struktur - parametrarna f\u00f6r den fysiska lagringen av tabeller, index m.m.<\/li>\n<\/ul>\n<p>\nTrots detta har export ocks\u00e5 sina f\u00f6rdelar:<\/p>\n<ul>\n<li>h\u00f6g selektivitet: det g\u00e5r att exportera enskilda tabeller, specifika f\u00e4lt och till och med enskilda rader;<\/li>\n<li>de exporterade data kan laddas in i en databas av en annan version, och om exporten g\u00f6rs i textformat, \u00e4ven i en annan databas.<\/li>\n<\/ul>\n<p>\nS\u00e5ledes anv\u00e4nds export huvudsakligen f\u00f6r s\u00e5dana uppgifter som s\u00e4kerhetskopiering av sm\u00e5 tabeller (t.ex. referenstabeller) eller distribution av datam\u00e4ngder med n\u00e4sta version av applikationen. <\/p>\n<p>Den vanligaste metoden f\u00f6r s\u00e4kerhetskopiering av databaser \u00e4r att kopiera databasfilerna.<\/p>\n<h3>\"Kall\" s\u00e4kerhetskopiering av databasfiler<\/h3>\n<p>\nEn uppenbar id\u00e9 \u00e4r att stoppa databasen och kopiera alla dess filer. En s\u00e5dan s\u00e4kerhetskopiering kallas \"kall\". Metoden \u00e4r extremt p\u00e5litlig och enkel, men den har tv\u00e5 uppenbara nackdelar:<\/p>\n<ul>\n<li>Fr\u00e5n en \"kall\" s\u00e4kerhetskopiering kan endast den databasens tillst\u00e5nd \u00e5terst\u00e4llas som fanns vid tidpunkten f\u00f6r stoppet; transaktioner som utf\u00f6rts efter att databasen startat igen kommer inte att ing\u00e5 i den \"kalla\" s\u00e4kerhetskopieringen;<\/li>\n<li>Det finns inte alltid ett tekniskt f\u00f6nster f\u00f6r varje databas d\u00e4r databasen kan stoppas.<\/li>\n<\/ul>\n<p>\nOm \"kall\" s\u00e4kerhetskopiering passar dig, beh\u00f6ver du komma ih\u00e5g att<\/p>\n<ul>\n<li>\"kall\" kopia ibland m\u00e5ste inkludera loggar. Metoder f\u00f6r att best\u00e4mma vilka loggar som ska ing\u00e5 i den \"kalla\" kopian \u00e4r individuella f\u00f6r varje DBMS. Till exempel, i Oracle \u00e4r det n\u00f6dv\u00e4ndigt att kopiera s\u00e5 kallade online redo, det vill s\u00e4ga ett best\u00e4mt antal loggfiler i en speciell mapp, \u00e4ven n\u00e4r databasen stoppas korrekt. I PostgreSQL m\u00e5ste alla loggar sparas fr\u00e5n loggen som inneh\u00e5ller den senaste kontrollpunkten, information om vilken finns i kontrollfilen.<\/li>\n<li>Databasens katalog kan inneh\u00e5lla ganska stora filer f\u00f6r tempor\u00e4ra tabellutrymmen som inte n\u00f6dv\u00e4ndigtvis beh\u00f6ver inkluderas i s\u00e4kerhetskopieringen. F\u00f6r \u00f6vrigt \u00e4r denna observation ocks\u00e5 giltig f\u00f6r \"het\" s\u00e4kerhetskopiering.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\"Het\" filbevarande<\/h3>\n<p>\nDe flesta s\u00e4kerhetskopior av moderna databaser g\u00f6rs genom att kopiera databasfiler utan att stoppa databasen. H\u00e4r syns flera problem:<\/p>\n<ul>\n<li>Vid b\u00f6rjan av kopieringen kan inneh\u00e5llet i databasen skilja sig fr\u00e5n inneh\u00e5llet i filerna, eftersom en del information finns i cachen och \u00e4nnu inte \u00e4r skriven till disken.<\/li>\n<li>Under kopieringen kan inneh\u00e5llet i databasen f\u00f6r\u00e4ndras. Om f\u00f6r\u00e4nderliga datatyper anv\u00e4nds, \u00e4ndras filinneh\u00e5llet, och vid anv\u00e4ndning av of\u00f6r\u00e4nderliga strukturer \u00e4ndras filupps\u00e4ttningen: nya filer dyker upp medan gamla tas bort.<\/li>\n<li>Eftersom skrivning av data till databasen och l\u00e4sning av DB-filer inte \u00e4r synkroniserade kan s\u00e4kerhetskopieringsprogrammet l\u00e4sa en felaktig sida, d\u00e4r h\u00e4lften \u00e4r fr\u00e5n den gamla versionen av sidan och den andra h\u00e4lften \u00e4r fr\u00e5n den nya.<\/li>\n<\/ul>\n<p>\nF\u00f6r att s\u00e4kerhetskopian ska bli konsekvent finns det en kommando f\u00f6r varje DBMS som signalerar att s\u00e4kerhetskopieringsprocessen har p\u00e5b\u00f6rjats. Syntaktiskt kan detta kommando se olika ut: <\/p>\n<ul>\n<li>i Oracle \u00e4r det ett separat kommando ALTER DATABASE\/TABLESPACE BEGIN BACKUP;<\/li>\n<li>i PostgreSQL \u2013 funktionen pg_start_backup();<\/li>\n<li>I Microsoft SQL Server och DB2 f\u00f6rbereds s\u00e4kerhetskopieringen implicit under exekveringen av kommandot BACKUP DATABASE;<\/li>\n<li>I MySQL Enterprise, Cassandra och MongoDB f\u00f6rbereds det implicit av externa verktyg \u2013 mysqlbackup, OpsCenter och Ops Manager respektive.<\/li>\n<\/ul>\n<p>\nTrots syntaktiska skillnader ser processen f\u00f6r f\u00f6rberedelse av s\u00e4kerhetskopiering likadan ut.<\/p>\n<p>S\u00e5 h\u00e4r ser f\u00f6rberedelsen f\u00f6r s\u00e4kerhetskopiering ut i databashanterare med \u00e4nderliga diskstrukturer, det vill s\u00e4ga i alla traditionella disk-baserade relationssystem:<\/p>\n<ol>\n<li>Tidpunkten f\u00f6r b\u00f6rjan av s\u00e4kerhetskopieringen registreras; s\u00e4kerhetskopian m\u00e5ste inneh\u00e5lla databasloggar fr\u00e5n denna tidpunkt.<\/li>\n<li>En kontrollpunkt utf\u00f6rs, vilket inneb\u00e4r att alla \u00e4ndringar som har skett i databladen fram till den registrerade tidpunkten skrivs till disk. Detta s\u00e4kerst\u00e4ller att loggarna fram till b\u00f6rjan av s\u00e4kerhetskopieringen inte kr\u00e4vs vid \u00e5terst\u00e4llning.<\/li>\n<li>Ett s\u00e4rskilt loggningsl\u00e4ge aktiveras: om ett datablad \u00e4ndras f\u00f6rsta g\u00e5ngen efter att det har laddats fr\u00e5n disk, kommer databasen att skriva hela sidan till loggen ist\u00e4llet f\u00f6r att registrera f\u00f6r\u00e4ndringen. Vid den f\u00f6rberedande proceduren skrivs alla sidor ut till disk, och d\u00e4rf\u00f6r kommer den f\u00f6rsta f\u00f6r\u00e4ndringen alltid att skrivas helt till loggen. Men om sidan under s\u00e4kerhetskopieringen skrivs ut till disk igen, kommer n\u00e4sta f\u00f6r\u00e4ndring ocks\u00e5 att leda till en fullst\u00e4ndig kopia av sidan i loggen. Detta s\u00e4kerst\u00e4ller att om sidan blir felaktig vid kopiering av datafilen, g\u00f6r loggen den korrekt igen.<\/li>\n<li>\u00c4ndringar av databasfilernas huvuden blockeras, det vill s\u00e4ga den del av dem vars f\u00f6r\u00e4ndringar inte \u00e5terspeglas i loggarna. Detta s\u00e4kerst\u00e4ller att huvudet kopieras korrekt och att loggarna sedan till\u00e4mpas korrekt p\u00e5 datafilen.<\/li>\n<\/ol>\n<p>\nN\u00e4r alla ovan n\u00e4mnda procedurer har slutf\u00f6rts kan man kopiera datafiler med hj\u00e4lp av operativsystemets verktyg \u2013 cp, rsync och andra. Aktivering av backupsystemet minskar databasens prestanda: f\u00f6r det f\u00f6rsta \u00f6kar volymen av loggar, och f\u00f6r det andra, om det under backupsystemet skulle uppst\u00e5 ett fel, kommer \u00e5terst\u00e4llningen att ta l\u00e4ngre tid, eftersom filrubrikerna inte uppdateras. Ju snabbare backupen avslutas, desto b\u00e4ttre f\u00f6r databasen, d\u00e4rf\u00f6r \u00e4r det l\u00e4mpligt att anv\u00e4nda verktyg som snapshots av filsystemet eller BCV (break copy volume) i RAID-arrayen. Vissa DBMS (Oracle, PostgreSQL) ger administrat\u00f6ren m\u00f6jlighet att sj\u00e4lv v\u00e4lja kopieringsmetod, medan andra (Microsoft SQL Server) erbjuder ett gr\u00e4nssnitt f\u00f6r att integrera egna backupverktyg med filsystemets eller lagringssystemets mekanismer.<\/p>\n<p>Efter att backupen har slutf\u00f6rts m\u00e5ste databasen \u00e5terst\u00e4llas till sitt normala tillst\u00e5nd. I Oracle g\u00f6rs detta med kommandot ALTER DATABASE\/TABLESPACE END BACKUP, i PostgreSQL - genom att anropa funktionen pg_stop_backup(), och i andra databaser - med interna rutiner fr\u00e5n motsvarande kommandon eller externa tj\u00e4nster.<\/p>\n<p>S\u00e5 h\u00e4r ser tidsdiagrammet f\u00f6r backup-processen ut:<\/p>\n<p><img decoding=\"async\" alt=\"En guide till backup av databaser\" src=\"\/wp-content\/uploads\/2020\/08\/4e74f865e9f35acec083b747da4449cf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>F\u00f6rberedelser f\u00f6r backup (begin backup) tar tid, ibland betydande. \u00c4ven om speglade volymer eller filsystem med snapshots anv\u00e4nds, kommer backup-processen inte att vara \u00f6gonblicklig.<\/li>\n<li>Tillsammans med datafilerna m\u00e5ste loggarna sparas fr\u00e5n b\u00f6rjan av backupf\u00f6rberedelserna till \u00f6gonblicket d\u00e5 databasen \u00e5terst\u00e4lls till normalt tillst\u00e5nd.<\/li>\n<li>Det g\u00e5r att \u00e5terst\u00e4lla fr\u00e5n denna backup <b>vid tidpunkten d\u00e5 databasen \u00e5terst\u00e4lls till normalt tillst\u00e5nd<\/b>. \u00c5terst\u00e4llning till en tidigare tidpunkt \u00e4r inte m\u00f6jligt.<\/li>\n<\/ul>\n<p>\nF\u00f6r databaser som anv\u00e4nder of\u00f6r\u00e4nderliga datakonstruktioner (minnessnapshots, LSM-tr\u00e4d) \u00e4r situationen enklare. F\u00f6rberedelserna f\u00f6r backup best\u00e5r av f\u00f6ljande steg:<\/p>\n<ol>\n<li>Data fr\u00e5n minnet skrivs till disken.<\/li>\n<li>En lista \u00f6ver filer som ing\u00e5r i backupen registreras. S\u00e5 l\u00e4nge backup-processen p\u00e5g\u00e5r \u00e4r databasen f\u00f6rbjuden att ta bort dessa filer, \u00e4ven om de blir on\u00f6diga.<\/li>\n<\/ol>\n<p>\nVid signal om att s\u00e4kerhetskopieringen \u00e4r klar kan databasen med of\u00f6r\u00e4nderliga strukturer \u00e5ter igen radera on\u00f6diga filer.<\/p>\n<h3>\u00c5terst\u00e4llning till punkt<\/h3>\n<p>\nEn s\u00e4kerhetskopiering till\u00e5ter att \u00e5terst\u00e4lla databasen till det tillst\u00e5nd den hade n\u00e4r kommandot f\u00f6r \u00e5terg\u00e5ng fr\u00e5n s\u00e4kerhetskopieringsl\u00e4ge avslutades. Men en krasch som kr\u00e4ver \u00e5terst\u00e4llning kan intr\u00e4ffa n\u00e4r som helst. Uppgiften att \u00e5terst\u00e4lla databasens tillst\u00e5nd till en godtycklig tidpunkt kallas \"\u00e5terst\u00e4llning till punkt\" (point-in-time recovery).<\/p>\n<p>F\u00f6r att m\u00f6jligg\u00f6ra detta b\u00f6r loggar f\u00f6r databasen sparas fr\u00e5n och med det att s\u00e4kerhetskopieringen avslutades, och under \u00e5terst\u00e4llningsprocessen ska loggar forts\u00e4tta att till\u00e4mpas p\u00e5 den \u00e5terst\u00e4llda kopian. N\u00e4r databasen har \u00e5terst\u00e4llts fr\u00e5n s\u00e4kerhetskopian vid tidpunkten f\u00f6r avslutningen av kopieringen, \u00e4r tillst\u00e5ndet f\u00f6r databasen (filer och cachade sidor) garanterat korrekt, s\u00e5 en speciell loggningsmetod beh\u00f6vs inte. Genom att till\u00e4mpa loggar fram till den \u00f6nskade tidpunkten kan man f\u00e5 databasens tillst\u00e5nd vid vilken tidpunkt som helst.<\/p>\n<p>Om hastigheten f\u00f6r \u00e5terst\u00e4llning av s\u00e4kerhetskopian begr\u00e4nsas endast av diskens bandbredd, \u00e4r hastigheten f\u00f6r till\u00e4mpning av loggarna vanligtvis begr\u00e4nsad av processorns prestanda. Om \u00e4ndringar i den prim\u00e4ra databasen sker parallellt, utf\u00f6rs alla \u00e4ndringar sekventiellt vid \u00e5terst\u00e4llning \u2013 i den ordning de l\u00e4ses fr\u00e5n loggen. D\u00e4rf\u00f6r \u00e4r \u00e5terst\u00e4llningstiden linj\u00e4rt relaterad till hur l\u00e5ngt \u00e5terst\u00e4llningspunkten ligger fr\u00e5n tidpunkten f\u00f6r avslutningen av s\u00e4kerhetskopieringen. Detta g\u00f6r att man m\u00e5ste g\u00f6ra fullst\u00e4ndiga s\u00e4kerhetskopior ganska ofta \u2013 minst en g\u00e5ng i veckan f\u00f6r databaser med l\u00e5g transaktionsbelastning och upp till en g\u00e5ng om dagen f\u00f6r h\u00f6gbelastade databaser.<\/p>\n<h3>Inkrementell s\u00e4kerhetskopiering<\/h3>\n<p>\nF\u00f6r att snabba upp \u00e5terst\u00e4llningen till punkt vill man g\u00e4rna kunna utf\u00f6ra s\u00e4kerhetskopiering s\u00e5 ofta som m\u00f6jligt, men samtidigt inte upptar f\u00f6r mycket utrymme p\u00e5 diskarna och inte belastar databasen med s\u00e4kerhetskopieringsuppgifter.<\/p>\n<p>L\u00f6sningen p\u00e5 problemet \u00e4r inkrementell s\u00e4kerhetskopiering, det vill s\u00e4ga att endast de datorsidor som har \u00e4ndrats sedan den senaste s\u00e4kerhetskopieringen kopieras.<br \/>\nInkrementell s\u00e4kerhetskopiering \u00e4r meningsfullt endast f\u00f6r databashanterare som anv\u00e4nder f\u00f6r\u00e4nderliga datastrukturer.<\/p>\n<p>Inkrementet kan r\u00e4knas fr\u00e5n en fullst\u00e4ndig s\u00e4kerhetskopia (kumulativ kopia) eller fr\u00e5n vilken tidigare kopia som helst (differentiell kopia). <\/p>\n<p><img decoding=\"async\" alt=\"En guide till backup av databaser\" src=\"\/wp-content\/uploads\/2020\/08\/10e3bb87445cb36693c7b5469d62eeaf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTyv\u00e4rr finns det ingen enhetlig terminologi, och olika tillverkare anv\u00e4nder olika termer:<\/p>\n<p>Differentiell<br \/>\nKumulativ<\/p>\n<p>Oracle<br \/>\nDifferential<br \/>\nCumulative<\/p>\n<p>PostgresPro<br \/>\nInkrementell<br \/>\n\u2014<\/p>\n<p>Microsoft SQL Server<br \/>\n\u2014<br \/>\nDifferential<\/p>\n<p>IBM DB2<br \/>\nDelta<br \/>\nInkrementell<\/p>\n<p>\nVid f\u00f6rekomsten av inkrementella kopior ser \u00e5terst\u00e4llningsprocessen till en viss punkt ut p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<ul>\n<li>den senaste fullst\u00e4ndiga s\u00e4kerhetskopian som gjorts innan \u00e5terst\u00e4llningen \u00e5terst\u00e4lls;<\/li>\n<li>inkrementella kopior \u00e5terst\u00e4lls \u00f6ver den fullst\u00e4ndiga kopian;<\/li>\n<li>loggar till\u00e4mpas fr\u00e5n den punkt d\u00e4r s\u00e4kerhetskopiering p\u00e5b\u00f6rjades till \u00e5terst\u00e4llningspunkten.<\/li>\n<\/ul>\n<p>\nN\u00e4r en kumulativ kopia finns tilhandah\u00e5ller det en snabbare \u00e5terst\u00e4llningsprocess. Till exempel, f\u00f6r att \u00e5terst\u00e4lla databasen till en punkt mellan T3 och T4, m\u00e5ste tv\u00e5 inkrementella kopior \u00e5terst\u00e4llas, medan endast en beh\u00f6vs f\u00f6r att \u00e5terst\u00e4lla efter T4.<br \/>\nDet \u00e4r uppenbart att volymen av en kumulativ kopia \u00e4r mindre \u00e4n volymen av flera differentiella kopior, eftersom vissa sidor kan ha \u00e4ndrats flera g\u00e5nger och varje inkrementell kopia inneh\u00e5ller sin version av sidan.<\/p>\n<p>Det finns tre s\u00e4tt att skapa en inkrementell kopia:<\/p>\n<ol>\n<li>skapa en fullst\u00e4ndig kopia och ber\u00e4kna skillnaden mot den f\u00f6reg\u00e5ende fullst\u00e4ndiga kopian;<\/li>\n<li>bearbeta loggar, skapa en lista \u00f6ver \u00e4ndrade sidor och s\u00e4kerhetskopiera sidorna i listan;<\/li>\n<li>fr\u00e5ga databasen efter \u00e4ndrade sidor.<\/li>\n<\/ol>\n<p>\nDet f\u00f6rsta s\u00e4ttet sparar diskutrymme, men l\u00f6ser inte problemet med att minska belastningen p\u00e5 databasen. Dessutom, om vi har en fullst\u00e4ndig s\u00e4kerhetskopia, \u00e4r det meningsl\u00f6st att omvandla den till en inkrementell, eftersom \u00e5terst\u00e4llning av en fullst\u00e4ndig kopia \u00e4r snabbare \u00e4n att \u00e5terst\u00e4lla en tidigare fullst\u00e4ndig kopia och inkrementet. Problemet med att spara diskutrymme med en s\u00e5dan metod b\u00f6r b\u00e4ttre \u00f6verl\u00e4mnas till speciella komponenter med inbyggda dedupliceringsmekanismer. Detta kan vara antingen speciella lagringssystem (EMC DataDomain, HPE StorageWorks VLS, hela NetApp-sortimentet) eller programprodukter (ZFS, Veritas NetBackup PureFile, Windows Server Data Deduplication).<\/p>\n<p>Den andra och tredje metoden skiljer sig \u00e5t i hur de identifierar listan \u00f6ver \u00e4ndrade sidor. Att bearbeta loggar \u00e4r mer resurskr\u00e4vande, plus att f\u00f6r att genomf\u00f6ra det m\u00e5ste man k\u00e4nna till loggfilernas struktur. Att fr\u00e5ga databasen sj\u00e4lv vilka sidor som har \u00e4ndrats \u00e4r det enklaste, men f\u00f6r detta m\u00e5ste databashanteringssystemets k\u00e4rna ha funktionalitet f\u00f6r att sp\u00e5ra \u00e4ndrade block (block change tracking).<\/p>\n<p>Funktionen f\u00f6r inkrementell s\u00e4kerhetskopiering skapades f\u00f6rst i Oracle Recovery Manager (RMAN), som introducerades i Oracle 8i. Oracle implementerade omedelbart sp\u00e5rning av \u00e4ndrade blok, s\u00e5 det finns ingen anledning att bearbeta loggar.<\/p>\n<p>PostgreSQL sp\u00e5rar inte \u00e4ndrade block, d\u00e4rf\u00f6r identifierar verktyget pg_probackup, som utvecklades av det ryska f\u00f6retaget Postgres Professional, \u00e4ndrade sidor genom att analysera loggarna. Men f\u00f6retaget tillhandah\u00e5ller \u00e4ven databashanteringssystemet PostgresPro, som inkluderar till\u00e4gget ptrack, som sp\u00e5rar \u00e4ndringar av sidor. N\u00e4r pg_probackup anv\u00e4nds med PostgresPro-framst\u00e4llningen beg\u00e4r verktyget \u00e4ndrade sidor direkt fr\u00e5n databasen \u2013 precis som RMAN.<\/p>\n<p>Microsoft SQL Server, precis som Oracle, sp\u00e5rar \u00e4ndrade sidor, men kommandot BACKUP till\u00e5ter endast att g\u00f6ra fulla och kumulativa s\u00e4kerhetskopior.<\/p>\n<p>I DB2 finns m\u00f6jlighet att sp\u00e5ra \u00e4ndrade sidor, men som standard \u00e4r den avst\u00e4ngd. N\u00e4r den aktiveras till\u00e5ter DB2 att g\u00f6ra fullst\u00e4ndiga, differentierade och kumulativa s\u00e4kerhetskopior.<\/p>\n<p>En viktig skillnad mellan verktygen som beskrivs i den h\u00e4r avsnittet (f\u00f6rutom pg_probackup) och filbaserade s\u00e4kerhetskopieringsverktyg \u00e4r att de beg\u00e4r sidbilder fr\u00e5n databasen, snarare \u00e4n att l\u00e4sa data fr\u00e5n disken sj\u00e4lva. Nackdelen med detta tillv\u00e4gag\u00e5ngss\u00e4tt \u00e4r en viss extra belastning p\u00e5 databasen. Dock kompenseras denna nackdel mer \u00e4n v\u00e4l av att den l\u00e4sta sidan alltid \u00e4r korrekt, varf\u00f6r det inte finns n\u00e5got behov av att aktivera ett s\u00e4rskilt loggningsl\u00e4ge under s\u00e4kerhetskopieringen.<\/p>\n<p>Observera \u00e5terigen att n\u00e4rvaron av inkrementella kopior inte upph\u00e4ver kraven p\u00e5 att ha loggar f\u00f6r \u00e5terst\u00e4llning till en godtycklig tidpunkt. D\u00e4rf\u00f6r skrivs loggar kontinuerligt \u00f6ver p\u00e5 extern lagring i industriella databaser, och s\u00e4kerhetskopior, b\u00e5de fullst\u00e4ndiga och\/eller inkrementella, skapas enligt schema.<\/p>\n<p>Den b\u00e4sta implementeringen av id\u00e9n om inkrementell s\u00e4kerhetskopiering idag \u00e4r den program- och h\u00e5rdvarukonfiguration (i Oracle-terminologi \u2013 engineered system) Zero Data Loss Recovery Appliance \u2013 en specialiserad l\u00f6sning fr\u00e5n Oracle f\u00f6r s\u00e4kerhetskopiering av egen databas. Konfigurationen best\u00e5r av en kluster <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/server\/\"   title=\"servrar\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1521\">servrar<\/a> med en stor m\u00e4ngd diskar, p\u00e5 vilka en modifierad version av Recovery Manager-programvaran \u00e4r installerad och kan arbeta b\u00e5de med andra program- och h\u00e5rdvarukonfigurationer fr\u00e5n Oracle (Database Appliance, Exadata, SPARC Supercluster) samt med Oracle-databaser p\u00e5 traditionell infrastruktur. Till skillnad fr\u00e5n \"vanlig\" RMAN implementerar ZDLRA konceptet \"evig inkrement\" (incremental forever). Systemet skapar en fullst\u00e4ndig kopia av databasen en enda g\u00e5ng, och sedan g\u00f6r det endast inkrementella kopior. Ytterligare RMAN-moduler m\u00f6jligg\u00f6r att kopior kombineras, vilket skapar nya fullst\u00e4ndiga kopior fr\u00e5n inkrementella. <\/p>\n<p>Till den ryska utvecklarnas \u00e4ra b\u00f6r det noteras att \u00e4ven pg_probackup kan kombinera inkrementella kopior.<\/p>\n<p><img decoding=\"async\" alt=\"En guide till backup av databaser\" src=\"\/wp-content\/uploads\/2020\/08\/275b649ce74614c04410618a062dddbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTill skillnad fr\u00e5n m\u00e5nga liknande fr\u00e5gor har fr\u00e5gan \"vilken s\u00e4kerhetskopieringsmetod \u00e4r b\u00e4ttre\" ett entydigt svar \u2013 den b\u00e4sta \u00e4r det inbyggda verktyget f\u00f6r den anv\u00e4nda DBMS som m\u00f6jligg\u00f6r inkrementell s\u00e4kerhetskopiering.<\/p>\n<p>F\u00f6r databasutvecklaren \u00e4r fr\u00e5gor om val av s\u00e4kerhetskopieringsstrategi och integration av databaslagringsl\u00f6sningar i f\u00f6retagsinfrastrukturen mycket viktigare. Men dessa fr\u00e5gor ligger utanf\u00f6r ramen f\u00f6r denna artikel.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516428\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430. \u041d\u043e \u0432\u0435\u0434\u044c \u0443 \u0432\u0430\u0441, \u043a\u0430\u043a \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f. \u0421\u0442\u0430\u043d\u0438\u0441\u043b\u0430\u0432 \u041b\u0435\u043c, \u00ab\u0417\u0432\u0451\u0437\u0434\u043d\u044b\u0435 \u0434\u043d\u0435\u0432\u043d\u0438\u043a\u0438 \u0418\u0439\u043e\u043d\u0430 \u0422\u0438\u0445\u043e\u0433\u043e\u00bb \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0434\u0435-\u0442\u043e \u0432\u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0438\u0445 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2013 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u043f\u043e\u0442\u0435\u0440\u0438. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92368,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92367","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-26T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-26T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Databas s\u00e4kerhetskopieringsguide | ProHoster","description":"\u2013 \u00c5h, inget skydd kan st\u00e5 emot ett meteoritnedslag.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u2013 \u041e, \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0443\u0431\u0435\u0436\u0438\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u0435\u043e\u0440\u0438\u0442\u0430.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/putevoditel-po-rezervnomu-kopirovaniyu-baz-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-26T05:42:09+00:00","article:modified_time":"2020-08-26T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92367","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:09:36","updated":"2026-02-09 16:50:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/92367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=92367"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/92367\/revisions"}],"predecessor-version":[{"id":158765,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/92367\/revisions\/158765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/92368"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=92367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=92367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=92367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}