the row size is xx which is greater than maximum allowed size (8126 bytes) for a record on index leaf page

一个数据库DDL在MariaDB 10.3上没有任何问题,在MariaDB 10.6上就一般报这个问题:

[ERROR] InnoDB: Cannot add field `footer_color` in table `xxxx`.`theme` because after adding it, the row size is 8474 which is greater than maximum allowed size (8126 bytes) for a record on index leaf page.

这个Google一下很容易就知道是Row Size Too Large Error. 根据下面的文档很容易解决办法.

https://mariadb.com/kb/en/troubleshooting-row-size-too-large-errors-with-innodb/

但是按理说MariaDB 10.3 和 MariaDB 10.6上在这方面变动不大,为什么会出现问题呢?

搜索了半天,在MariaDB的文档上找到了说明:

https://mariadb.com/kb/en/innodb-row-formats-overview/#maximum-row-size

原来在MariaDB 10.2.26, 10.3.17, 10.4.7之前的版本上,InnoDB计算row size的方式是错误的,在后面的版本里修复了。

而我的MariaDB 10.3的版本正好是10.3.15.

困扰了一个上午的问题解决了!

另附解决办法,如果不想修改表的结构,可以在my.cnf添加下面的命令:

innodb_strict_mode = OFF

CentOS7 编译MariaDB的问题

浪费了一下午时间得到的经验:

Centos7 直接编译Mariadb 10.4 及其以下的版本没有任何问题,但是当你在centos 7 上编译mariadb 10.5及其以上的版本时,

会告诉你cmake 版本太低(centos 7 的cmake 应该时2.8.18), 需要cmake 3.0.0 以上

两个解决办法,一是用安装epel,然后升级到cmake 3;另外一种办法就是切换到debian 11

确实,还是切换到debian 11吧, centos 7 的实在太老了

Zabbix 5.0 LTS 安装时几个需要关注的点

从Zabbix 5.0 LTS 以上,需要的php 版本为7.2及以上. Centos 7 默认的php 还都是5.4,所以为了省事方便以及简单,以及考虑到性能,

这里建议使用Debian 11, 默认的php版本为7.4

Debian 11 默认的mysql 为mariadb,版本是10.5,已经足够用了,没有必要再去单独添加mariadb 的源,安装10.6甚至10.7的版本

如果你想添加专门的mariadb的源的话,mariadb 官方提供了一个rackspace的源,直接geo到rackspace全球的几个数据中心,非常方便

在安装Zabbix之前,首选需要安装mariadb,直接使用一条命令 apt install mariadb-server 就可以了,他会自动安装mariadb-clients

然后使用mysql_secure_installation设置好mariadb,就可以继续按照zabbix的官方教程去一步步安装zabbix了