Uploaded image for project: 'ZABBIX BUGS AND ISSUES'
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-16757

MariaDB 10.4.8, 10.2.26, 10.3.17 unsafe "Row size too large"() issue with MDEV-19292, MDEV-20194

    XMLWordPrintable

    Details

    • Team:
      Team A
    • Sprint:
      Sprint 57 (Oct 2019), Sprint 58 (Nov 2019), Sprint 59 (Dec 2019), Sprint 60 (Jan 2020), Sprint 61 (Feb 2020)

      Description

      Steps to reproduce:
      Install clean MariaDB 10.4.8.
      Install 4.0.13, try to load data.

      Result:
      Error 1 related to the [https://jira.mariadb.org/browse/MDEV-20194|MDEV-20194] - on database internal cache load unsafe table will generate such WARN messages. This error affects current setups with where only MariaDB is upgraded:

      2019-10-08 10:34:13 14 [Warning] InnoDB: Cannot add field `proxy_address` in table `zabbix`.`hosts` because after adding it, the row size is 8494 which is greater than maximum allowed size (8126) for a record on index leaf page.
      2019-10-08 10:34:13 14 [Warning] InnoDB: Cannot add field `location` in table `zabbix`.`host_inventory` because after adding it, the row size is 8772 which is greater than maximum allowed size (8126) for a record on index leaf page.
      2019-10-08 10:34:13 14 [Warning] InnoDB: Cannot add field `error` in table `zabbix`.`items` because after adding it, the row size is 8562 which is greater than maximum allowed size (8126) for a record on index leaf page.
      

      Error 2: strict mode on, trying to load data first time:

      ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
      

      Disabling strict mode is not a solution (inserts/updates may be broken), also setting innodb_page_size=65536 will not take effect until data will be unloaded and loaded back (database should be recreated).

      Expected:
      No errors on LTS version.

      Some workaround for affected tables:

      On active setup:

      set global innodb_strict_mode='OFF';
      # on affected tables
      ALTER TABLE table_name ROW_FORMAT=DYNAMIC;
      # host_inventory should upgrade field size
      ALTER TABLE host_inventory MODIFY name varchar(128) COLLATE utf8mb4_bin NOT NULL DEFAULT '';
      ALTER TABLE host_inventory MODIFY alias varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '';
      ALTER TABLE host_inventory MODIFY os varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '';
      ALTER TABLE host_inventory MODIFY os_short varchar(128) COLLATE utf8_bin NOT NULL DEFAULT '';
      set global innodb_strict_mode='ON';
      

      On new setups add to the configuration file:

      innodb-strict-mode=1
       #this will take effect only on new setups
      innodb_page_size=65536
      innodb_default_row_format=dynamic
      

      https://mariadb.com/kb/en/library/innodb-row-formats-overview/#upgrading-causes-row-size-too-large-errors

      Regards,
      Edgar

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              vso Vladislavs Sokurenko
              Reporter:
              edgar.akhmetshin Edgar Akhmetshin
              Votes:
              0 Vote for this issue
              Watchers:
              13 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: