Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Neispravna replikacija baze

[es] :: MySQL :: Neispravna replikacija baze

[ Pregleda: 1674 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nikol@c
tu i tamo

Član broj: 73969
Poruke: 343
79.143.169.*



+4 Profil

icon Neispravna replikacija baze29.04.2010. u 10:49 - pre 169 meseci
Pozdrav,

imam dva servera na kojima se vrti mysql, jedan je MASTER drugi je SLAVE za replikaciju.
Imam nekoliko baza podataka koje se repliciraju na SLAVE.
Sinoc sam dodao jos jednu bazu za replikaciju, sve dodao u my.cnf fajlove, restartovao mysql, zaustavio master, uradio dump zeljene baze i ubacio je na SLAVE, i podesio MASTER position i ostalo. Nakon toga sam otkljucao tabele na MASTERU. Ali od tada mi SLAVE status konstantno izbacuje greske. I ispise:

Slave_SQL_Running: No

i to za dvije stare baze podataka ali u oba slucaja za istu tabelu histories. Da napomenem baze imaju iste tabele ali su za razlicite drzave.

Last_SQL_Error: Error 'Cannot add or update a child row: a foreign key constraint fails (`ina_nl`.`histories`, CONSTRAINT `FK_histories_distributions` FOREIGN KEY (`distribution_id`) REFERENCES `distributions` (`distribution_id`))' on query. Default database: 'ina_nl'. Query: 'insert into ina_nl.histories (comment, date, time, result, user_id, distribution_id) values ('vm', '2010-04-29', '11:41:45', 'key.9.0', 186, 109626)'

Nakon cega ja uradim sljedece:
SLAVE STOP;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
SLAVE START;

i sve izgleda ok ali to traje mozda 5 minuta i onda sve po starom.

Prilicno sam siguran da baze na MASTERU i na SLAVEU vise nisu iste. Da li je jedino rjesenje da uradim novi dump svih baza sa MASTERA i ubacim ih na SLAVE ili postoji neko brze rjesenje.
Problem je sto samo za dump jedne od baza treba 5-6 sati. Zato mi treba nesto brze.


[Ovu poruku je menjao nikol@c dana 29.04.2010. u 15:20 GMT+1]
...ko se jednom o mlijeko opece taj i u jogurt duva...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Neispravna replikacija baze02.05.2010. u 20:34 - pre 169 meseci
samo ti znas kako to da resis...

- sve informacije zasto ti se to desava imas u opisu greske
- samo ti znas koji su ti podaci gde

slave ti kaze da za taj upit puca contraint dakle fali ti distribution_id 109626 u distributions tabeli.

zasto ti fali taj id?
1. pukao ti je ranije insert pa si mu isto rekao "skip"
2. nisi dobro sinhronizovao tabele pre nego si pustio replikaciju
3. imas filtere za replikaciju (koristis do-db ili ignore-db za replikaciju) pa si radio nesto tipa

use `dba`;
insert intto `dbb`.`tabela1` values ...

problem je sto mysql za filtere gleda samo sta je DEFAULT baza (dakle ono sto si uradio sa USE) ako radis insert u drugu bazu to se nece replicirati ako je default baza u ignore-db ili nije u do-db listi

4. koristis statement based replikaciju i imao si neki "statement replication unsafe statement)
5. neko je menjao podatke na slave-u
6. ima toga jos al me mrzi da razmisljam ..

dakle .. da popravis - moras da imas sinhrone podatke, skip se koristi kada ti "popravis" problem - dakle rucno ubacis taj insert .. kada uradis skip - zakucace ti error prvi put kada bude referencirao taj slog koji sada nisi insertovo (da ne pricam o tome sto ce ti faliti taj slog)...

saveti ... da se ne bi smarao i menjao aplikaciju da izbacis, vrlo verovatno veliki broj, "unsafe" statemente, prebacis replikaciju u mixed ili raw format ... to naravno znaci 5.1 posto 5.0 zna samo za stmt based replikaciju
 
Odgovor na temu

[es] :: MySQL :: Neispravna replikacija baze

[ Pregleda: 1674 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.