Best way to fix – InnoDB memory heap is disabled
InnoDB works as a better option when dealing with large databases.
However, often misconfiguration in the InnoDB settings results in errors.
Older MySQL versions report error “InnoDB memory heap is disabled” when the InnoDB uses System memory.
At Bobcares, we receive requests to fix the InnoDB errors as a part of our Server Management Services.
Today, let’s learn more about InnoDB memory allocation and how our Support Engineers fix its error.
What causes ‘InnoDB memory heap disabled’ error to show up?
Let’s begin by checking more details of the error.
This error applies to MySQL versions lower than 5.6. It specifies that InnoDB is using the system’s internal memory instead of its own memory.
InnoDB can use its own memory or an allocator of the operating system. We can manage this by setting the value of innodb_use_sys_malloc. If the value of innodb_use_sys_malloc is set to ON or 1 then InnoDB uses the system’s internal memory.
However, if the value of innodb_use_sys_malloc is set to 0 then it will use its own memory allocator. And this ends up in the following error in the log of MySQL.
160224 17:29:01 [Note] Plugin 'FEDERATED' is disabled. 160224 17:29:01 InnoDB: The InnoDB memory heap is disabled
How we fix this InnoDB error?
We’ll now check on how to fix this error. Recently, one of our customers had a problem with the MySQL server. It was restarting quite often. And, the log showed the memory heap error message in his server.
Here, first, our Support Engineers searched for the entry innodb_use_sys_malloc using mysqladmin.
We also checked the entry from my.cnf file. Our Support Engineers used the command to find the entry.
less /etc/my.cnf | grep innodb_use_sys_malloc
Output: innodb_use_sys_malloc = 1
It was already turned ON in the conf file too. So we changed the value to:
innodb_use_sys_malloc = 0
If the entry is not present, our Support Engineers manually enter the value in my.cnf. Then we add the line innodb_use_sys_malloc = 0 into it.
Finally, to make the changes effective we restart the MySQL service using the command.
service mysql restart
Note: MySQL 5.6.3 has deprecated Innodb_use_sys_malloc and removed in MySQL 5.7.4.
[Need assistance with InnoDB errors? – We’ll help you]
In short, we can allocate the InnoDB storage engine’s memory as necessary. We can either allocate it in the system memory or on its own InnoDB memory. This results in the error “InnoDB memory heap disabled”. Today, we saw how we allocate the InnoDB memory and how our Support Engineers fix related errors.