2013/3/15 Kristian Nielsen <knielsen@knielsen-hq.org>
Right. So this is mostly just my own academic interest, in practice it is of course real crashes/powerfailures we want to handle, not SIGKILL.
If you are interested, this is my thinking: the server always does a write(2) system call on the binlog at (group) commit, even with sync_binlog=0. So even if we SIGKILL the server, the data is still in the kernel buffers (at least on Linux), and will eventually reach disk.
I'm interested, and I learn too, thanks!
However, you are using DRBD. I am guessing that when mysqld on one node dies, a failover is done to the other node, and this looses data in the kernel disk buffers on the first node that have not been fdatasync()'ed.
I think you're right. I know that DRBD is not the best choice to have high-availibility on a MariaDB master, but I have my reasons to make this choice.... What could be the best settings in MariaDB and DRBD to handle this situation ? In DRBD, I just set protocol B which should be sufficient, but I can easily test with C. I have test some disk options like no-disk-barrier no-disk-flushes no-md-flushes use-bmbv and yes I tried too no-disk-drain ... In MariaDB I set : innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 innodb_file_per_table = 1 I can test things, patchs, but I don't know what ... I didn't found WL#4925 patch so I can't test it. Any clue ? -- Greg