Experimental MySQL clusters for Kea
  • 05 Aug 2021
  • 1 Minute to read
  • Contributors
  • Dark
    Light
  • PDF

Experimental MySQL clusters for Kea

  • Dark
    Light
  • PDF

Article Summary

MySQL supports multiple database storage engines. InnoDB is the default engine and the one that Kea is designed to work with.

NDB

MySQL can support clustering with either InnoDB or NDB. The two options do have different characteristics, including different requirements for creating tables. Kea's dhcpdb_create.mysql schema creation script sets up the tables for the InnoDB engine. This script is not entirely compatible with NDB, due to restrictions on foreign keys. Thus the Kea configuration backend, host reservations and forensic logging tables are unusable in an NDB implementation. Read more about this in the "Restrictions on foreign keys" bullet point in the MySQL documentation.

If you are using the MySQL database for lease storage, you can make the NDB cluster work. To do this modify the engine in dhcpdb_create.mysql, and force past all the error messages. This is considered experimental and is not a configuration that is regularly tested or fully supported by ISC.

$ sed -i 's/).*ENGINE.*DB/) ENGINE = NDB/g' dhcpdb_create.mysql
$ mysql --force < dhcpdb_create.mysql

Group Replication

Even though built on top of InnoDB, Group Replication (GR) seems to suffer from a similar, though more mild, limitation with regards to foreign keys as pointed out by the GR documentation. As a result, it is expected that a configuration backend schema wouldn't be succesfully created. You may try your luck with lease allocation, host reservations and forensic logging, but we can't vouch for them.

Fully supported alternatives

We have tested the Galera & Percona clusters. Please see this article on setting them up.