Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-25849

All Galera cluster nodes now write all cluster changes to their binary logs

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Not a Bug
    • 10.3.28, 10.3.29
    • N/A
    • Galera
    • None

    Description

      I have a 3-node Galera cluster with binary logging enabled which was running MariaDB 10.3.9, after upgrading to 10.3.28 I noticed that the binary log disks on each node showed a different disk usage pattern - they now all mirror each other and are filling more quickly, all nodes can accept writes and now all nodes record all writes to the cluster in their binary logs, previously only the node which did the write logged it to its own bin log, and of course the other nodes applied the change via Galera replication and therefore did not get added to their binary logs.

      The behaviour sounds like what would happen if log_slave_updates had been enabled (it isn't enabled in my setup). However this change https://github.com/MariaDB/server/commit/2cb5fb6019 which first appears in 10.3.28 could be causing this - log_slave_updates is now ignored and the applier threads always log to the binary log.

      I am concerned about the change in IO and disk usage overheads on my cluster nodes, and I wondered if the effects of this change have been fully considered, it certainly caught me by surprise.

      I am assuming that a new 10.3.28 cluster will exhibit the same issue (I have not tried it yet). I upgraded from 10.3.28 to 10.3.29 and the issue is still present.

      To test this I created a simple database and inserted some rows on one of the nodes, I then used the SHOW BINARY LOGS command (to get the latest log) and SHOW BINLOG EVENTS IN '<filelename>' to dump the changes on each node. I see the INSERTS in the binary logs on all nodes.

      CREATE DATABASE IF NOT EXISTS `testdb` DEFAULT CHARACTER SET utf8;
      USE testdb;
      CREATE TABLE `t` (
        `id` bigint(20) NOT NULL AUTO_INCREMENT,
        `n` varchar(255) NOT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
       
      INSERT INTO t (n) VALUES ('1');
      INSERT INTO t (n) VALUES ('2');
      INSERT INTO t (n) VALUES ('3');
      

      If any more information is needed I am happy to supply it.

      Attachments

        Activity

          People

            jplindst Jan Lindström (Inactive)
            Mark Anstice Mark Anstice
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.