← 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

 

Hello Sergei,

On Tue, Oct 28, 2014 at 12:39 PM, Sergei Golubchik <serg@xxxxxxxxxxx> wrote:

> 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
>
>
Interesting. I just checked MySQL 5.5, and when I build it with the above
flags, it has the same behavior as MariaDB 10.0: the Archive and Blackhole
storage engines are only included as shared libraries in plugin_dir.

Thanks for that clarification.


> 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.
>

Thanks! I'll change my build scripts.


>
> 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.
>

That is weird.

A quick look at the MySQL 5.6 source code suggests that these storage
engines are being enabled in cmake/build_configurations/feature_set.cmake.

Geoff

References