New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for MySQL 5.6 with binlog-checksum=NONE #22

Open
dentarg opened this Issue Jul 25, 2016 · 0 comments

Comments

Projects
None yet
1 participant
@dentarg
Copy link
Member

dentarg commented Jul 25, 2016

I'm not 100% sure about all details here, so I will write the complete story of our MySQL 5.5 -> 5.6 upgrade (5.5.46 -> 5.6.30 to be exact). Not sure if Ecco should handle all the cases.

We have one application called Bruce using Ecco the read the binlog from our MySQL server. We stopped Bruce before stopping writes to the MySQL sever (in hindsight, this was not so smart). So some events were written to the binlog by MySQL 5.5. We then upgraded to the server to MySQL 5.6, and started taking writes to the MySQL server again. Events were now written to the binlog by MySQL 5.6 (with binlog-checksum=CRC32).

We then started Bruce, but it stopped directly with the error: Ecco::Error::CommunicationError: Failed to deserialize data of EventHeaderV4{timestamp=1469174183000, eventType=TABLE_MAP, serverId=1100, headerLength=19, dataLength=43, nextPosition=538610156, flags=0}

Another not so smart thing we did then was to change binlog-checksum=CRC32 -> binlog-checksum=NONE for the MySQL 5.6 server. This didn't help us, so we had to skip the events until we reached events written by MySQL 5.6 (with binlog-checksum=CRC32).

Then Bruce stopped with error: Ecco::Error::CommunicationError: Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.003992' at 538610005, the last event read from './mysql-bin.003993' at 120, the last byte read from './mysql-bin.003993' at 120.

Events causing this error was written by MySQL 5.6 (with binlog-checksum=NONE). I think Ecco could handle the last error here once a version of mysql-binlog-connector-java with the following commits is released:

We got things going by changing back to binlog-checksum=CRC32 and skipping the problematic events.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment