Avatar billede cyberdude Nybegynder
16. oktober 2001 - 23:51 Der er 5 kommentarer og
2 løsninger

tro kopi af en database til en anden \"real-time\"

Hejsa!!

Er der nogen der har erfaring med / ide til hvordan, jeg nemmest laver en direkte kopi af hele min database og indsætter denne på en anden mysql server.....

Kryptisk...
det jeg ønsker er at folk der bruger mit site, vil formodentlig komme nogle indlæg i forum m.m.m.m. skal poste indlæg på mysql server 1
Jeg har så adgang til en mysql server som er placeret andet sted i verden.. denne vil jeg så gerne have til at fungere som \"backup\" for min server 1. jeg havede så tænkt på noget med at der eks. hver 6 time blev taget en komplet backup af server 1 og lagt over på server 2.. men for at der ikke skal flyttes en bunke af data (andet end første gang) er det kun \"nye\" poster som endnu ikke findes på server 2 der skal flyttes fra server 1 til server 2..........
Jeg er klar over at jeg skal have fat i cron-job for at gøre det presist hver 6 time......
Det jeg vil gøre er at tjække om server 1 er online ved hver forespørgsel, og hvis ikke, så \"skifter\" scriptet til server 2, men med den begrænsning at man ikke får lov til at \"submitte\" noget på sitet, da der jo så skal udveksles data fra server 2 til server 1. og det tror jeg bliver ALT for bøvlet......

Og måske dette også lyder temelig bøvlet, men fatter du ikke hvad jeg lige har \"blapret\" løs om de sidste 2 min. så skriv en komentar, og jeg vil prøve at omformulere mig :-))
Avatar billede mipe1 Nybegynder
16. oktober 2001 - 23:58 #1
udtræk et script med data og tabeller m.m.

Du kan anvende mySqlfront som er et freeware program og virker gangske enkelt
http://www.anse.de/mysqlfront/

se http://www.eksperten.dk/spm/121821
Avatar billede mipe1 Nybegynder
16. oktober 2001 - 23:59 #2
ah jeg kan se at det kun er de nyeste poster, glem mit svar.
tænkte mig ikke om
Avatar billede mortenfn Nybegynder
17. oktober 2001 - 01:00 #3
noget i denne retning, tror jeg

<?

$link = mysql_connect (\"host1\", \"bruger\", \"kode\");
mysql_select_db(\"bd\");     
 
$result=mysql_query(\"SELECT * FROM tabel where $tid < \'tid\'\");
$row=mysql_fetch_array($resulte);
 
mysql_close ($link);

mysql_connect (\"host2\", \"bruger\", \"kode\");
mysql_select_db(\"bd\");     

while($row){
mysql_query(\"INSERT tabel VALUES (\'$row[??]\',\'$row[??]\',\'$row[??]\')\")
}

mysql_close ($link);
?>
Avatar billede mortenfn Nybegynder
17. oktober 2001 - 01:07 #4
den nemme form for backup er at lave en dump og så gemme resultatet i en fil den vil så blive overskrever hvergang du dump\'er
Avatar billede alvion Nybegynder
17. oktober 2001 - 09:28 #5
Hvis du selv er \"herre\" over begge mysql servere, kan du lave replikering. Dvs. du sætter den ene database op som \"master\" og den anden som \"slave\"

Så sker replikeringen automatisk og løbende. Det kan du læse meget mere om her:
http://www.mysql.com/doc/R/e/Replication.html
Avatar billede alvion Nybegynder
17. oktober 2001 - 09:33 #6
Hvis du IKKE kan komme til at lave MySQL\'s egen form for replikering, så kan du lade tabellerne, der skal replikeres, indeholde et ekstra felt, f.eks. et numerisk felt. I alle nye records skal dette felt sættes til nul. Dit replikeringsscript har så til opgave a) at kopiere alle de records, hvor feltet er 0 og b) at sætte feltet i disse records til 1.
Avatar billede alvion Nybegynder
17. oktober 2001 - 09:36 #7
Du kan for den sags skyld med dette princip også replikere begge veje, der skal du blot være opmærksom på dine primære nøgler, at du risikerer sammenfald (især hvis du bruger autonummerering).

Det kan du løse ved at lade din primærnøgle bestå af to felter:

serverkode int(11) not null,
record_id int(11) not null auto_increment,
primary key (serverkode, record_id)
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