Detecting Corrupt Data in MySQL Protocol
When Amazon S3 receives a PUT request with the Content-MD5 header, Amazon S3 computes the MD5 of the object received and returns a 400 error if it doesn’t match the MD5 sent in the header. Looking at our service logs from the period between 6/20 11:54pm PDT and 6/22 5:12am PDT, we do see a modest increase in the number of 400 errors. This may indicate that there were elevated network transmission errors somewhere between the customer and Amazon S3. We are continuing to investigate and will post an update when we have further information.
The MySQL protocol doesn’t seem to have a checksum or hashcode:
If a frame were corrupted in a way that didn’t break the SQL, then it would be possible to INSERT/UPDATE/DELETE incorrect data.
Granted, adding MD5 or SHA1 would burn a bit of CPU but it might be worth it in a lot of situations.
… of course the TCP checksum can come into play here but it’s just a weak checksum.
When you’re pushing LOTS of data this could be seen in production environments (not just in theory).