← Back to team overview

maria-discuss team mailing list archive

Re: Storage engines enabled by default - MySQL 5.6 vs. MariaDB Galera Cluster 10.0

 

Hi, Geoff!

On Oct 27, Geoff Montee wrote:
> I've been building MySQL 5.6 from source for a while. I recently started
> testing MariaDB Galera Cluster 10.0. When I build MariaDB Galera Cluster
> from source, I originally used the same cmake flags that I used for MySQL
> 5.6, along with the additional flags specified in Codership's documentation:
> 
> http://galeracluster.com/documentation-webpages/installmariadbsrc.html
> 
> My build process basically comes down to this:
> 
> cmake . -L -DCMAKE_INSTALL_PREFIX=$MYQL_PREFIX -DMYSQL_DATADIR=$MYSQL_DATA
> -DWITH_SSL=yes -DWITH_READLINE=ON -DWITH_PIC=ON -DWITH_UNIT_TESTS=0
> -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1
> make
> make install
> 
> With MariaDB Galera Cluster 10.0.14, the server that gets built does not
> have the Archive and Blackhole storage engines enabled by default. I do see
> that "ha_archive.so" and "ha_blackhole.so" were built and placed in
> plugin_dir, so I could probably enable them manually with INSTALL PLUGIN.
> 
> This surprised me, because these engines are enabled by default in MySQL
> 5.6, and I see no mention of this difference here:
> 
> https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#incompatibilities-between-mariadb-100-and-mysql-56
> 
> Of course, if I add "-DWITH_ARCHIVE_STORAGE_ENGINE=ON
> -DWITH_BLACKHOLE_STORAGE_ENGINE=ON" to my cmake arguments, then these
> engines are enabled in the MariaDB server that gets built.
> 
> Is this difference intentional? If so, you may want to add a note to the
> documentation referenced above.

This has changed in MySQL-5.6 about in 2012, as a response to the internal bug

  Bug#13595996 CREATE A CONSISTENT DEVELOPMENT CMAKE OPTION SET AND MAKE IT A DEFAULT

This change links storage engines statically into the server by default,
not only in mysql_release configuration, as it was before.

But we intentinally don't do that. There is a release configuration, as
specified in https://mariadb.com/kb/en/generic-build-instructions/ it is

  cmake . -DBUILD_CONFIG=mysql_release

and if you don't use it, you can assemble your own configuration as you
see fit.

Regards,
Sergei

P.S. Note that both mysql and mariadb have a concept of "default"
engines - engines that are compiled in by default. They are:

  mysql-5.6 $ grep -lw DEFAULT storage/*/CMakeLists.txt
  storage/innobase/CMakeLists.txt
  storage/ndb/CMakeLists.txt
  storage/perfschema/CMakeLists.txt

  mariadb-10.0 $ grep -lw DEFAULT storage/*/CMakeLists.txt
  storage/maria/CMakeLists.txt
  storage/perfschema/CMakeLists.txt
  storage/xtradb/CMakeLists.txt

I'm not entirely sure why MySQL enables non-default engines by default,
looks kind of weird.



Follow ups

References