[Løst] MySQL Replikeringsspørgsmål

peque
Antal: 916
Tilmeldt:
20-04-2005
User is online
[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.


lbm
lbm's picture
Antal: 811
Tilmeldt:
14-06-2006
User is offline
Om data bliver sendt pr mail

Om data bliver sendt pr mail eller via binlog-data er vel ligemeget ? Det er muligt at de zippede binlogs fylder en anelse mindre, men det virker godt nok som en workaround, der ikke er helt holdbar.

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/mysqlbinlo...


Kresten Kjaer
Kresten Kjaer's picture
Antal: 342
Tilmeldt:
16-09-1991
User is offline
Tilføjer du udelukkende til

Tilføjer du udelukkende til databasen? For så er opgaven væsentlig mere simpel.

---
Miracle.dk - we dare, share & care.


peque
Antal: 916
Tilmeldt:
20-04-2005
User is online
Hej Begge 2. Ja - jeg

Hej Begge 2.
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


peque
Antal: 916
Tilmeldt:
20-04-2005
User is online
Ville jo mene selvom du har

Ville jo mene selvom du har binlog filer - Så samtidigt har et unikt ID (Tidsstempel i sek) som er unikt - vil disse dobbelte linier vel skrottes - pga det unikke ID.
Men smadrer man så binlog filerne?


lbm
lbm's picture
Antal: 811
Tilmeldt:
14-06-2006
User is offline
Det er muligt at binlog

Det er muligt at binlog værktøjet tager højde for det, men det vil nok kræve lidt POC.


peque
Antal: 916
Tilmeldt:
20-04-2005
User is online
Hejsa. Nu er jeg lidt videre

Hejsa.
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


Kresten Kjaer
Kresten Kjaer's picture
Antal: 342
Tilmeldt:
16-09-1991
User is offline
mysqlbinlog

mysqlbinlog /binlog/mysql-bin.000001 | mysql -p --binary-mode 1

---
Miracle.dk - we dare, share & care.


peque
Antal: 916
Tilmeldt:
20-04-2005
User is online
Tak for det. Jeg måtte dog

Tak for det.
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