![]() |
Synka data - MySQL / Webservices
Hej.
Jag kommer inom snar framtid att behöva synkronisera en del data mellan två olika webbhotellskonton. Båda är PHP med MySQL. Hur har ni löst detta / skulle löst detta? Jag funderar på en privat webservice-tjänst, men det kommer samtidigt att bli en hel del kodande och det är något jag gärna minimerar. Mycket tacksam för synpunkter / idéer! |
Jag löste ett liknande problem idag. Det kan dock skilja sig från dig.
På server 1 har jag: En webbserver med PHP och en MySQL Server På Server 2 har jag: Exakt samma som server 1. Server 1's uppdrag är dock att hitta information från internet (den kör olika slags spindlar och botar), medan Server 2s uppdrag är att visa denna information för personer som bestämmer sig för att besöka min sida. (Alltså, Server 2 hittar inget nytt material, utan får endast material från Server 1). Jag provade på lite olika metoder för att skicka över datan från Server 1, men kom fram till att det effektivaste sättet, även om inte det mest galanta är att köra ett script på Server 1 som skriver ner alla nya rader i databasen i ett vanligt dokument. När detta är klart så anropar Server 2 dokumentet, med hjälp av file_get_contents(). Skriptet går sedan igenom dokumentet rad för rad och lägger in varje ny rad i Server 2s databas. Detta fungerar perfekt så länge det endast är en server som ska syncas med den andra. Om båda ska skicka information till varandra kan man göra en liknande lösning, men blir lite mer komplex och stökig men fungerar helt klart. |
captaindoe: Varför inte låta server 2 hantera databasen? så att server 1 hämtar informationen från server 2 databas?
Låt en maskin göra skitgörat :) |
Citat:
Är databaserna åtkomliga utifrån så kan ni jobba mot gemensam databas. Om de inte är åtkomliga utifrån kanske de är åtkomliga från de konton som ligger på samma hotell. |
Citat:
|
Citat:
|
Låter som mk-table-sync (en del av maatkit) kan lösa problemet
|
Citat:
Det var därför jag delade upp det så att en Server gör allt skitjobb, och sedan skickar över information lätt till en annan server som användarna sedan besöker. Citat:
|
Här kommer ett verkligt fall.
Lösningen är så intressant tycker jag själv att jag hoppas att detta inlägg inte tas bort bara därför att jag och mitt webbhotell är inblandat. Siten boatlife.se (BF) ligger på Fastpark (kallar det USA i fortsättningen). Webbarean är drygt 9 GB, mySQLdatabasen är drygt 600 MB. BF:s folk tycker att siten är seg men anser att den för stor för att flytta. Jag erbjuder mig att göra ett test med att flytta hela siten och ge dem möjlighet att prova innan de bestämmer sig för flytta, Siten är är forum som är ganska aktivt och kravet är att forumet ska vara stängt så kort tid som möjligt. På forumet kan man även posta filer oftast bilder, så man måste synkronisera både webbarea och mySQL. Ett nytt konto på svenska Webbotellet (SVE) läggs det upp ett vanligt webhotellkonto inkl mySQLkonto. Små tester görs först så att BF:s administratör ser att det finns ett konto och att man kan surfa dit. Eftersom man inte inte pekat om nåogt i DNSer så löser man det genom att i filen C:\Windows\System32\drivers\etc\hosts på sin egen dator skriva in raden 87.96.215.5 www.boatlife.se Så får man inte glömma att kommentera bort denna rad när man vill komma åt den verkliga boatlife.se i USA. Server SVE konfigurerar man rsync /etc/rsync.conf Kod:
log file=/var/log/rsync.log En katalog skapas i USA. Låt kalla den 'rSyncScript' och i denna en katalog med namnet 'dbDumpFiles' i 'rSyncScript' finns en fil 'xThis.txt' med bl a detta innehåll, dvs filer som inte får syncas. I detta fall så innehåller cinfig.php inställningar för mySQL i SVE. Kod:
forum/config.php scriptfil i USA som läggs i katalogen rSyncScript Detta script syncar webbarea och 159 dumpdade mySQLtabeller i USA med motsvarande i Sverige Kod:
så kör man ./synca.sh i USA. scriptet Slut.sh på server i SVE Kod:
#!/bin/sh Man kan köra scripten om coh om igen. Först scriptet ./synca.sh i USA när det är klart så kör man ./Slut.sh i SVE. BF:s folk fick testa genom att konfigurera sin C:\Windows\System32\drivers\etc\hosts med raden 87.96.215.5 www.boatlife.se Slutade med att de bestämde sig för att effektuera flytten. Genomfördes så här: -- 1 -- Byt DNSer på boatlife.se till DNSer som jag hade kontroll över. Ställ in DNSerna exakt som de Fastpark DNSer med undantag att man ställer ner TTLen till 5 min och vänta ca två dygn. -- 2 -- Tekniker från BF ringer mig. Jag ställer ner TTLen ytteligare, nu till 30sek och väntar ca 5 min. -- 3 -- BFtekniker stänger forumet i USA. Nu tickar klockan !!!! -- 4 -- Jag kör ./synca.sh i USA Jag kör ./Slut.sh i Sverige. Jag pekar om boatlife.se i DNSen. -- 5 -- BFtekniker tömmer sin cache och konstatera att han surfar till SVE. BF tekniker öppnar forumet. Forumet var stängt ca 7 min !! . |
Alla tider är GMT +2. Klockan är nu 22:00. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson