← Back to team overview

maria-developers team mailing list archive

Re: MDEV-6877 - binlog_row_image implementation advice


I've also added a bunch of inline comments to the github commits to further
explain my reasoning. Going through the commits in order chronologically
might make the most sense.


On Mon, 6 Apr 2015 at 17:39 Vicențiu Ciorbaru <vicentiu@xxxxxxxxxxx> wrote:

> Hi Kristian,
> I've gotten to a "sort of" stable state with binlog_row_image. It's not
> 100% complete as I did not add any tests for the new use cases.
> Also there are a couple of changes that I am not 100% sure if they are
> complete or correct.
> I would like some input on these changes:
> https://github.com/MariaDB/server/compare/10.1-MDEV-6877-binlog_row_image
> The unpack_current_row being a very iffy change for me. I understand why
> it is needed in the Update_rows_event::do_exec_row code, as the after image
> has other columns that get written as opposed to the before image. Thing is
> I've just made it in an attempt to fix a HA_ERR_SAME_KEY error that I kept
> getting on the slave and it seems to have worked.
> Do you think the implementation that MySQL chose is the correct one? The
> changes are mostly the same as the MySQL variant, except they have V2 ROW
> LOG EVENTS which seem to pass some extra info which we don't use (need?).
> There are a lot of changes made and I've tried my best to not miss
> anything. I agree that the git history could be better. I will rewrite it
> when I get the final code variant.
> Regards,
> Vicentiu
> On Mon, 30 Mar 2015 at 17:22 Vicențiu Ciorbaru <vicentiu@xxxxxxxxxxx>
> wrote:
>> Hi Kristian,
>> > Another concern that I have is how to test the implementation. Right
>>> now, I
>>> > run the test, get the binlog file and print it with mysqlbinlog and
>>> see if
>>> > the output is what I expect. Do we have something within mysql-test-run
>>> > that automates this?
>>> There are some MTR tests that run mysqlbinlog and checks the output, for
>>> example mysqlbinlog.test.
>>> But the usual way to check replication is all the MTR tests in
>>> mysql-test/suite/rpl/t/. They start up a master and a slave server (or
>>> more),
>>> make some transactions on the master, check that they replicate as
>>> expected to
>>> the slave.
>> Thank you for the reply! I have already started doing the changes and I
>> seem to be making some progress. The mysqlbinlog tests were the ones that I
>> was looking for.
>> I'll let you know if I run into any more issues. This actually turned out
>> to be a very good learning experience for me as I previously had no
>> experience with replication. I'll mark you as a reviewer when I have a
>> patch ready.
>> Vicențiu