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

Auto-create: Auto partitioning is unsafe for row-based replication

    XMLWordPrintable

    Details

      Description

      This is a sibling of MDEV-25477. The difference is that MDEV-25477 concerns any replication format, but only transactional engines, while this one concerns any engines, but only RBR format, which means binlog_format=row or binlog_format=mixed when replication automatically switched to RBR, which can happen on a variety of reasons.

      Partitioning auto-creation cannot be safely used in a replication topology if there is a chance that the binary log will be written in a row format.

      The reason is that when DML ends without affecting any rows, a new partition still can be created, but no row events will be written in the binary log. Thus, the master will have the new partition, but the slave will not. This discrepancy will almost inevitably cause a replication abort some time later.

      --source include/have_partition.inc
      --source include/have_binlog_format_row.inc
      --source include/master-slave.inc
       
      create table t (a int) with system versioning
        partition by system_time interval 1 hour auto;
       
      insert into t values (1),(2);
      set @@timestamp= @@timestamp+3601;
       
      update t set a = 3 limit 0;
       
      show create table t;
       
      --sync_slave_with_master
       
      show create table t;
       
      --connection master
      alter table t drop partition p0;
       
      --sync_slave_with_master
      

      bb-10.6-midenok-MDEV-17554 edbc73ac48

      show create table t;
      Table	Create Table
      t	CREATE TABLE `t` (
        `a` int(11) DEFAULT NULL
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
       PARTITION BY SYSTEM_TIME INTERVAL 1 HOUR STARTS TIMESTAMP'2021-04-21 23:00:00' AUTO
      PARTITIONS 3
      connection slave;
      show create table t;
      Table	Create Table
      t	CREATE TABLE `t` (
        `a` int(11) DEFAULT NULL
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
       PARTITION BY SYSTEM_TIME INTERVAL 1 HOUR STARTS TIMESTAMP'2021-04-21 23:00:00' AUTO
      PARTITIONS 2
      

      Last_Errno	4128
      Last_Error	Error 'Wrong partitions for `t`: must have at least one HISTORY and exactly one last CURRENT' on query. Default database: 'test'. Query: 'alter table t drop partition p0'
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              midenok Aleksey Midenkov
              Reporter:
              elenst Elena Stepanova
              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.