Kom ihåg mig?
Home Menu

Menu


Synka data - MySQL / Webservices

 
Ämnesverktyg Visningsalternativ
Oläst 2011-01-29, 02:11 #1
aelanders avatar
aelander aelander är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 146
aelander aelander är inte uppkopplad
Medlem
aelanders avatar
 
Reg.datum: Dec 2004
Inlägg: 146
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
uid=0
gid=0


[boatlife_webb]
path = /home....     ; här anges sökvägen dit www.boatlife.se  pekar i SVE (naturligtvis)
comment = Sync av BoatLife webb
max verbosity = 2
read only = false
list = false
hosts allow = 64.13.232.48,64.13.232.49
hosts deny = *


[boatlife_mySQL]
path = /home/mySQLdump      ; en sökväg där man kan där mysql-dump-filer ska hamna
comment = Sync av BoatLife mySQL
max verbosity = 2
read only = false
list = false
hosts allow = 64.13.232.48,64.13.232.49
hosts deny = *
hosts allow är IPadresser på Fastpark i USA som man ska kunna ansluta från.



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
myadmin/*




scriptfil i USA som läggs i katalogen rSyncScript
Detta script syncar webbarea och 159 dumpdade mySQLtabeller i USA med motsvarande i Sverige

Kod:
#!/bin/sh


myDb=<databasens namn i USA>
dbUser=<databasanvändare>
dbPass=<databaslösenord>
dbHost=<databasens hostnamn>
dumpDir=dbDumpFiles

RSYNC=/usr/bin/rsync



#----------------------------------------------------
#     här syncar vi mySQLdatabasen  
#----------------------------------------------------
cd
cd rSyncScript


Tables=`mysql -e "show tables" -h $dbHost -u $dbUser $myDb --password=$dbPass`

SaveIFS=$IFS
IFS=$'\n'
declare -a Table=($Tables)

for (( i=1; i<${#Table[@]}; i++ )); do
	Tabell=${Table[$i]}
		echo "dumpar -- $Tabell";
		mysqldump -h $dbHost -u $dbUser -c --quote-names --add-drop-table --default-character-set=latin1 --extended-insert=TRUE --complete-insert=TRUE $myDb ${Table[$i]} --password=$dbPass > $dumpDir/${Table[$i]}.SQL
done

IFS=$SaveIFS



# ____ rsync på mySQL _________

mOPT="-aR --delete --timeout=600 --verbose --progress --stats"
mDEST="rut.elit.net::boatlife_mySQL"


cd
cd rSyncScript
$RSYNC $mOPT $dumpDir $mDEST

echo -e "\n\n\n\n------------------ databasen KLAR ------------------------\n\n"



#----------------------------------------------------
#     här syncar vi webarean 
#----------------------------------------------------
wOPT="-aR --delete --timeout=600 --verbose --progress --stats --exclude-from=xThis.txt"
wDEST="rut.elit.net::boatlife_webb"

cd ../domains/boatlife.se/html   #-- flytta in dit apache pekat www.boatlife.se
$RSYNC $wOPT * $wDEST

så kör man ./synca.sh i USA.



scriptet Slut.sh på server i SVE

Kod:
#!/bin/sh


myDb=<databasnamn>
dbUser=<databasuser>
dbPass=<databaslösenord>
dbHost=<databashost>

dumpDir=dbDumpFiles


Tables=`ls $dumpDir/* | sed -r "s/[^\/]*\/(.*)\.SQL/\1/"`
SaveIFS=$IFS
IFS=$'\n'
declare -a Table=($Tables)
IFS=$SaveIFS


for (( i=0; i<${#Table[@]}; i++ )); do
	Tabell=${Table[$i]}
	echo "läser ... $Tabell";
	mysql -h $dbHost -u $dbUser $myDb --password=$dbPass < $dumpDir/$Tabell.SQL
done


# sqlkommandona nedan är avkortade.
# De ändar vissa sökarvägar som står i databasen och som inte är lika i USA och SVE
# 2011-01-29 01:44:08

sql=(
"update ibf_conf_setti ..."
"update ibf_conf_setti ..."
"update ibf_core_sys_c ..."
"update ibf_core_sys_c ..."
"update ibf_members se ..."
)

echo -e "\n\n ------ Ändrar lite sökvägar i mySQLdatabasen ------"
for (( i=0; i<${#sql[@]}; i++ )); do
	test=`mysql -e "${sql[$i]}" -h $dbHost -u $dbUser $myDb --password=$dbPass`
	echo "$test";
done


# ---- härefter följer några kommandon för att ställa rättigheter och chmod på server SVE
# alla filer chmod 600
# alla kataloger chmod 700
# ägare på hela webarean sätts till ftpanvändaren



#kört och klart 2010-12-10

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 !!




.
aelander är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017