[Løst] MySQL Replikeringsspørgsmål
Hej Forum.
Jeg har fået stillet en lille opgave som jeg skal løse lidt og vil derfor gerne have nogle inputs herfra.
Et skib sejler rundt i verden og på dette skib er der en MySQL database som logger alle deres instrumenter.
I lan d er der en slave database der replikerer skibets database.
Problemet kommer her:
Hver 3 uge sejler skibet udenfor almindelige skibsrouter og derfor 2 Internet udbydere til at løse dette.
Når der sejles udenfor ruterne - er det en svinedyr forbindelse. Der logges hvert minut i MySQL databasen ombord - som der skal synkes hjem til land - således der kan laves rapporter udfra dette ?
Nu kommer spørgsmålet så:
Jeg kører MySQL Replication med binær logfiler.
Men den uge hvor man sejler udenfor ruterne er det ikke muligt at replikere MySQL.
Kan man dumpe det sidste døgns liniert i et txt fil og sende hjem via mail ( Som er det eneste tilladte udenfor ruterne) og indlæse denne i SlaveSQL uden det går helt galt for synkroniseringen,
Min frygt er at der gårt ged i de binære logfiler og dermed stopper synkroniseringen
Og har I andre bud på hvad man kan i sådanne en situation.
Jeg har fået stillet en lille opgave som jeg skal løse lidt og vil derfor gerne have nogle inputs herfra.
Et skib sejler rundt i verden og på dette skib er der en MySQL database som logger alle deres instrumenter.
I lan d er der en slave database der replikerer skibets database.
Problemet kommer her:
Hver 3 uge sejler skibet udenfor almindelige skibsrouter og derfor 2 Internet udbydere til at løse dette.
Når der sejles udenfor ruterne - er det en svinedyr forbindelse. Der logges hvert minut i MySQL databasen ombord - som der skal synkes hjem til land - således der kan laves rapporter udfra dette ?
Nu kommer spørgsmålet så:
Jeg kører MySQL Replication med binær logfiler.
Men den uge hvor man sejler udenfor ruterne er det ikke muligt at replikere MySQL.
Kan man dumpe det sidste døgns liniert i et txt fil og sende hjem via mail ( Som er det eneste tilladte udenfor ruterne) og indlæse denne i SlaveSQL uden det går helt galt for synkroniseringen,
Min frygt er at der gårt ged i de binære logfiler og dermed stopper synkroniseringen
Og har I andre bud på hvad man kan i sådanne en situation.
Kommentarer8
Om data bliver sendt pr mail
En standard MySQL replikeringen indeholder positions på slaven, så den ved hvor langt den præcist er nået med binlog filerne, hvis du dumper og importere vil du umiddelbart få duplikering af data når så selve replikeringen fortsætter. Det er muligt det kan undgås, men ikke ngoet jeg har arbejdet med selv.
Kig evt på https://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html
Ville jo mene selvom du har
Men smadrer man så binlog filerne?
Tilføjer du udelukkende til
Hej Begge 2.
Ja - jeg
Ja - jeg tilføjer kun til Master databasen ombord på skib, men alle opslag hentes fra SlaveDB på land.
Det vigtige er i dette princip.
2 uger sejles i god forbindelse - Replikering kører via internet.
1 uge uden internet(der kan kun mailes) - der skal data hjem 1 gang i døgnet ( hvor man ikke kan replikere da dette ikke tillades)
Mere hvordan skal jeg lave dette princip korrekt uden at ødelægge data eller de binære filer.
Hvordan kan sikre den data der sendes
Det er muligt at binlog
Hejsa.
Nu er jeg lidt videre
Nu er jeg lidt videre med dette projekt - Men kan ikke lige følge dette problem hber til sidst.
Har kopieret binlog filerne fra Maskine A over til maskine B for at teste dette i POC:
Men får denne fejl konstant ved importering af binlog filen
ERROR at line 255: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected.
Begge maskiner kører Debian Linux og har samme charset defineret
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
Har googlet deres beskrivelse men syntes reelt ikke jeg rammer noget relevant til dette ???
I begge maskiner er der "default-character-set=utf8" --> i /etc/mysql/my.cnf
hvad skal der konkret til for jeg kan importere min binlog fil men kommandoen:
mysqlbinlog /binlog/mysql-bin.000001 | mysql -p
mysqlbinlog
mysqlbinlog /binlog/mysql-bin.000001 | mysql -p --binary-mode 1
Tak for det.
Jeg måtte dog
Jeg måtte dog gøre følgende
mysqlbinlog /binlog/mysql-bin.000001 | mysql -p --binary-mode
Det skulle være uden 1 - ellers meldte den stadig fejl - tak for hjælpen