Avatar billede invalesco Nybegynder
20. oktober 2010 - 12:45 Der er 10 kommentarer

Backup/Replikering/Mirroring til ekstern lokation

Hej.

Jeg står og skal lave dataspejling af nogle af tabellerne i min database til en ekstern lokation. Jeg er lidt på bar bund angående hvad der er bedst. Det skal helst bruge så lidt data som muligt da der betales pr mb og jobbet skal køre hver 30 minut. Jeg tænkte på noget med en differental backup. Men som jeg forstår det laver sådan en også meget data da den altid gemmer ændringer siden sidste fuld backup. Har i nogle erfaringer og forslag til hvordan det skal laves?

Der kommer ikke til at køre en database på den eksterne lokation endnu. så filerne skal overføres til ftp til at kunne blivet taget i brug når det ses nødvendigt.

Hilsen Alex
Avatar billede bkp Nybegynder
20. oktober 2010 - 15:30 #1
Hvis jeg forstår dig helt korrekt, så taler du ikke om standard mirroring af data, men backup af data, og helst med så lidt data som muligt.
Problemet er i første omgang at data som standard ikke er komprimeret, og fylder forholdsvis meget i forhold til komprimeret.

Men måske denne artikel kan give dig lidt ideer til hvordan du kunne gøre det?
http://hyperbac.blogspot.com/2008/09/query-sql-backup-chain-using-tsql.html

Hvis det drejer sig om en Sql 2008, så er der forbedrede funktioner til komprimering af data som du bør kigge nærmere på.

http://msdn.microsoft.com/en-us/library/dd894051(SQL.100).aspx
http://blogs.msdn.com/b/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx
http://technet.microsoft.com/en-us/library/bb964719.aspx

Håber det er en lille hjælp.

M.v.h.
http://bkristensen.tumblr.com
Avatar billede invalesco Nybegynder
20. oktober 2010 - 15:42 #2
Hej.

Tak for svaret, jeg vil lige læse dine links igennem i aften.
Jeg kan se du foreslår backup, er det muligt at sætte en backup til kun at kopiere udvalgte tabeller? Jeg har ikke fundet et svar på det nemlig. Derfor er jeg lidt ovre i replikering igen.
Med sådan en replikering burde det så ikke kunne lade sig gøre at kopiere de rå filer til den eksterne lokation. En replikering sender vel kun diffs ik?

Hilsen
Alex
Avatar billede bkp Nybegynder
20. oktober 2010 - 15:59 #3
Jo backup er til backup af hele databaser, men du kunne eventuelt scripte de tabeller du skal bruge over i en ny database og så køre backup på den?

Dette er et simpel eksempel på hvordan du kunne kopiere en tabel til en anden database.

SELECT *
INTO database2.dbo.tblTest
FROM database1.dbo.tblTest

Diferentiel backup kopierer kun ændringer, men hvis du bruger ovenstående metode er jeg bange for at den vil betragte alle data som nye, så skal du nøjes med at opdatere de data i din backup database med ændringer (måske via en trigger)
Avatar billede HenrikSjang Nybegynder
20. oktober 2010 - 16:58 #4
Jeg ville overveje at se på om SSIS (SQL Server Integration Services) ikke ville kunne hjælpe dig.

Hvis du ønsker så lidt data overført som muligt, ud fra x antal tabeller, så vil jeg for det første foreslå at du sikrer dig at der findes en modify kolonne, så du altid kan nøjes med at overføre de rækker som er ændret siden sidst.

Dernæst ville jeg lave en SSIS pakke, som for hver af dine tabeller, gemmer data i en tekstfil, fx kommasepareret eller lignende, og så overfører via ftp (kan ske som et step inde i ssis-pakken).
Så vil jeg lave en transfer-log tabel, hvor jeg vil logge datoen for seneste extract, så jeg næste gang kan nøjes med at extracte de rækker, som har modify kolonnen større end sidste extract.

Men hvordan det helt præcist skal laves, afhænger også lidt af om du ovre på destinationen vil have præcis én fil per tabel, som præcist indeholder de data som live-tabellen indeholder. For så skal der noget merge til derovre også, hvilket måske ikke er helt trivielt.
Alternativt er man tvunget til at overføre hele tabellen hver gang.
Men man bør også kunne zip'e tekstfilen inden den ftp'es, og så begrænses datamængden også en del.
Avatar billede janus_007 Nybegynder
20. oktober 2010 - 20:33 #5
Jeg ville helt klart bruge transactional replikering til formålet eller mirroring.

Jeg kan ikke li idéen med SSIS, der er alt for meget arbejde involveret og SSIS er ikke lige tiltænkt den slags, bevares det kan da bruges, men er lidt søgt imho. SSIS er forøvrigt også til integration ikke til dataudveksling imellem ens databaser ;-) (sjang)



At kopierer ind i andre tabeller er også noget hø at fedte rundt med, meget kan gå galt, locks, transactions mv.

Du kan godt tage backup af tabeller, men det vil give dig en masse ekstra traffik, når du kun er interesseret i ændringerne så hold dig til transactional replication eller mirroring.

Brug de teknologier der er specielt udviklet til formålet.
Hvis du ingen erfaring har er transactional replikering det nemmeste at opsætte.
Avatar billede HenrikSjang Nybegynder
21. oktober 2010 - 08:09 #6
janus_007: Må jeg henlede opmærksomheden på følgende sætning i den oprindelige besked fra spørger: "Der kommer ikke til at køre en database på den eksterne lokation endnu."

Så held og lykke med at sætte replikering op ;)
Avatar billede invalesco Nybegynder
21. oktober 2010 - 08:50 #7
Hej igen.

Okay så det er ikke muligt at sætte replikering op uden der er en subscriber? Jeg er ny på området så kender er ikke 100% inde i hvordan tingene virker.

Som jeg hører det, så vil det være bedst at markere de rows der er sendt til serveren og så kun sende dem der er markeret som ikke sendt. Er det rigtig forstået?

Findes der noget der noget indbygget der kan gøre dette og så evt sende til ekstern lokation som csv, eller skal jeg selv implementere det?

Hilsen Alex
Avatar billede janus_007 Nybegynder
21. oktober 2010 - 09:17 #8
Jamen altså som sjang så korrekt fortalte mig(tak sjang, jeg er forøvrigt mere vågen nu hehe), så hvis du ikke har nogen database, ja så er der nok ikke så meget at gøre end backup eller filer.

Du kunne også overveje bcp og så skrive din sql selv.
Jeg passer mig selv så :)
Avatar billede HenrikSjang Nybegynder
21. oktober 2010 - 10:56 #9
bcp er faktisk en god ide. Så langt tænkte jeg slet ikke lige.

Der er fx lidt inspiration at hente her:
http://sqlblogcasts.com/blogs/madhivanan/archive/2007/08/27/bcp-export-data-to-text-file.aspx
Avatar billede invalesco Nybegynder
21. oktober 2010 - 15:35 #10
Jeg har valgt at opbygge mine egne Insert/Update og Delete statements og skrive dem til en fil på de vigtige tabeller. Har ikke rigtig set en bedre løsning som ikke bruger mange mb og som kan håndtere updates og deletes. Men er stadig åben over for muligheder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester