Szerintetek mennyire veszteséges egy mysql replikációt nem a mysqld saját beépített módján "etetni", hanem `mysqlbinlog relaylog.000001` -szerű parancsok kimenetét közvetlenül beletolni?
Az IO Thread mehet nyugodtan, az lehúzza a binlogokat,
viszont (mysqld verzió különbség miatt) az SQL Thread hibára szokott futni, ezért egysmás statement-et át kéne írni amit a SLAVE végrehajt.
Így arra gondoltam, hogy programatikusan átiratom a problémás részeket az olvasható binlog kimenetben és azt futtattatom le a SLAVE-vel.
Kérdés, hogy a bináris loghoz viszonyítva minden információ benne van-e a mysqlbinlog paranccsal visszakapott SQL szkriptben, vagy veszteséges; és az hogy alkalmazható-e ilyen formában:
mysqlbinlog relaylog.000001 | my_convert_script | mysql -h localhost
Ignorált adatbázis, tálba nincs, de több adatbázist is tartalmaz a binlog, és mixed formátumú (igaz, az átírkálásokat a statement formátumú részekben kell elvégezni).
Gyakorlati megvalósításképpen gondoltam arra is, hogy 1. minden binlog utasítást a fenti formában kapna, vagy 2. ha a SHOW SLAVE STATUS hibát jelez, az adott pozícióban lévő részt szedném csak ki a mysqlbinlog paranccsal és konvertálnám át és futtatnám le, utána a pozíció (és esetlegesen a relaylog fájl) léptetésével újra elindítanám a SLAVE-et.
update
nagyszerűen gyakorlatias és probléma-orientált a HUP közössége, segítőkészek vagytok a rendszerek rendszergazdabaráttá tételében, és a problémákat okozó folyamatok leghamarabbi ponton történő javításában.
ugyanakkor jelen kérdésemmel (és a legtöbb kérdésemmel, amit nem úgy kezdek, hogy "mit csináljak másképp") csupán a mysql és különböző verziói működésére vagyok kiváncsi egy olyan elméleti szituációban, amikor a replikáció SQL Threadjét kéne emulálni mysqlbinlog parancs kimenetének végrehajtásával.