We often see an int column of a table that needs to be changed to
unsigned-int and then unsigned-bigint due to the value being out
of range. Sometimes, there may even be blockers that prevent us
from directly altering the table or applying
pt-online-schema-change on the primary, which requires the
rotation solution: apply the change on the replica first, switch
over the writes to the replica, and then apply the change on the
previous primary. In this case, MySQL will have to replicate
unsigned-int to unsigned-bigint for a while.
One might think it is obvious and straightforward that MySQL
should be able to replicate unsigned-int to unsigned-bigint
because unsigned-bigint has a larger size(8 bytes) which covers
unsigned-int(4 bytes). It is partly true, but there are some
tricks in practice. This blog will show you those tricks through
the scenarios.
Let’s understand the scenarios and issues that one may face when
replicating from …
[Read more]