At the MariaDB Server Developer's meeting in Amsterdam, Oct 8 2016. This was the deck to talk about what MariaDB Server 10.1/10.2 might be missing from MySQL versions up to 5.7. The focus is on compatibility of MariaDB Server with MySQL.
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
MariaDB Server Compatibility with MySQL
1. Compatibility with
MySQL
Colin Charles, byte@aeon.com.my on the lists/jira / bytee on IRC
#maria / @bytebot on Twitter / byte on github / http://
www.bytebot.net/blog/
MariaDB Server Developer’s meeting 2016, Amsterdam, Netherlands
8 October 2016
2. whoami
• Chief Evangelist (in the CTO office), Percona Inc
• Founding team of MariaDB Server (2009-2016), previously
at Monty Program Ab, merged with SkySQL Ab, now
MariaDB Corporation
• Formerly MySQL AB (exit: Sun Microsystems)
• Past lives include Fedora Project (FESCO), OpenOffice.org
• MySQL Community Contributor of the Year Award winner
2014
3. The “MariaDB” Code of
Conduct
• All MariaDB contributors are expected to follow the Ubuntu Code Of
Conduct.
• Ubuntu is about showing humanity to one another: the word itself
captures the spirit of being human.
• Be considerate. Be respectful. Take responsibility for our words and
actions. Be collaborative. Value decisiveness, clarity and
consensus. Ask for help when unsure. Step down considerately.
• Open meritocracy. Teamwork. Credit. We value discussion, data and
decisiveness. Courage and considerateness. Conflicts of interest.
• “People within a corporation become its face” - Shahid Kamal,
gaming entrepreneur, @shahidkamal
4. Define: compatibility (OED)
• A state in which two things are able to exist or
occur together without problems or conflict.
5. Commitments
• Verbal: MySQL 5.6, should be comparable to
MariaDB Server 10.1. And for 10.2 it should be
compatible with MySQL 5.7 — Monty, yesterday (7
October 2016)
• mariadb.org/about/: It is an enhanced, drop-in
replacement for MySQL.
6. From the KB
• https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/
• Tracker for documentation of above page: https://jira.mariadb.org/browse/
MDEV-10392
• https://mariadb.com/kb/en/mariadb/system-variable-differences-between-
mariadb-and-mysql/
8. InnoDB tablespace
encryption
• MariaDB Server: table or tablespace encryption, fully encrypted logs
• MySQL: tablespace encryption, innodb_file_per_table, logs
unencrypted
• Do we aim for compatibility or make it clear that it won’t be (saying
“implemented differently” doesn’t imply incompatibility!)
• Polishing encryption?
• Galera’s gcache? Logs? (https://jira.mariadb.org/browse/
MDEV-9639)
• mysqlbinlog reading encrypted logs? https://jira.mariadb.org/
browse/MDEV-8813
9. CJK language support
• Add “ngram” support to MariaDB Server: https://
jira.mariadb.org/browse/MDEV-10267
• Add “MeCab” support to MariaDB Server: https://
jira.mariadb.org/browse/MDEV-10268
• InnoDB 5.7 is now merged, there is no 10.2 target
on the above two issues
• gb18030 support: https://jira.mariadb.org/browse/
MDEV-7495
10. Multiple triggers per table
• Pushed, ready for testing in 10.2.3
• https://jira.mariadb.org/browse/MDEV-6112
12. Replication
• How often is replication from 5.6/5.7 tested for 10.1/10.2? (https://
jira.mariadb.org/browse/MDEV-5705)
• What (if any) is the plan to make replication work from 10.2 ->
5.7?
• FR: Allow replication from MySQL 5.6+ when GTID is enabled on
the master - https://jira.mariadb.org/browse/MDEV-4487 (resolved 9
October 2015)
• Multi-source replication is present in 5.7 - is it compatible with 10.2?
• Time delayed replication? https://jira.mariadb.org/browse/
MDEV-7145
13. PERFORMANCE_SCHEMA
• Off by default, but remember, it can’t be turned on
at runtime…
• sys schema?
• Is it going to get merged? (87 “rows” vs 52)
14. Bits…
• InnoDB memcached (upstream, not the GSoC
variant)
• sha256_password plugin? https://jira.mariadb.org/
browse/MDEV-9804
• removing mysql_old_password?
• validate_password on by default in 5.7
15. How did we do from this time, last year?
(Compatibility/convergence/divergence
by Eric Herman)
• GTID has domain ID
(which is an innovation in
MariaDB Server)
• Knowing scenarios where
one can swap, i.e. when
one has a multi-vendor
strategy, so that people
can experimentally try
WebScaleSQL/Percona
Server/etc.
• using innovation may limit
your options, i.e. how to
step away
• if you use out of order
parallel replication in
MariaDB, you can't go
away to somewhere else.
So if you use innovation
and depend on it, this
must be clearly
documented
• Virtual columns +
replication will work
• Need specific
documentation between
master/slave protocol on
how they talk, how they
shouldn't talk. Replication
protocol docs needs
improvement (protocol
specification).
• Goal is to be syntax
compatible
• SHOW EXPLAIN
• Multi-source replication
• Replication filters
• slave parallel thread vs
slave parallel workers
• Maybe write a rewrite
plugin for MySQL 5.7 to
make it more compatible
with MariaDB
• What do we do with
regards to RDS and
Aurora?
• Being compatible to
match other
implementations like
SQLite/PostgreSQL?
When doing development
we do test against
PostgreSQL
• 10.0 needed work on
default_tmp_storage_en
gine (and 10.1 has this).
• To make it easier we need
to ensure that options are
easy for people (DBAs)
whom are doing both
MariaDB and MySQL.
Allow simple as possible
configuration
• Importing from
WebScaleSQL? "We
import all good and
reasonable
stuff" (audience breaks
out into laughter)
• super readonly mode - its
everywhere, so it has to
be in MariaDB Server 10.2
• InnoDB - follow MySQL
InnoDB. When innovation
happens (encryption),
then we need to make it
clear how to go back.
• Goal: default optimizer
changes only happen at
major releases.
• missing: crash slave
replication with current
position
• missing: minimal RBR
• Optimizer trace
17. Needs work
• Minimal RBR - Minimal/NOBLOB Binlog Row Image
replication fails when tables from master have
different PK in slave https://jira.mariadb.org/
browse/MDEV-8398 (docs?)
• Syntax compatibility (explain for connection <id> -
https://jira.mariadb.org/browse/MDEV-10000, etc.)
18. Installation…
• MySQL: https://dev.mysql.com/downloads/repo/
yum/ - grab a package — e.g. mysql57-
community-release-el7-9.noarch.rpm
• MariaDB Server: https://downloads.mariadb.org/
mariadb/repositories/ - copy/paste, edit a file, then
install
• Percona Server: https://www.percona.com/doc/
percona-server/5.7/installation/yum_repo.html -
yum install Percona-Server-server-57
19. Starting up
• MySQL / Percona Server
• service mysqld start
• grep 'temporary password' /var/log/mysqld.log
• ALTER USER 'root'@'localhost' IDENTIFIED BY
‘rootmeOK!’;
• MariaDB Server? mysql -uroot “just works”
20. mysql.user table changes
• MariaDB Server and MySQL differ here (not just by addition of
roles) - mysql.user.password is just
mysql.user.authentication_string (is MariaDB Server removing
password?)
• Password expiry is coming? https://jira.mariadb.org/browse/
MDEV-7597
• Password last changed? Lifetime?
• ACCOUNT LOCK/UNLOCK
• VALIDATE_PASSWORD_STRENGTH() SQL function doesn’t
work in MariaDB Server
21. More 5.7
• Optimizer hints (and the cost based optimizer itself?) - https://
jira.mariadb.org/browse/MDEV-9078
• RENAME INDEX - https://jira.mariadb.org/browse/MDEV-7318
• Query rewriting? - https://jira.mariadb.org/browse/MDEV-5561
• GIS: GeoJSON functions? Geohash functions?
• SELECT
ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111
12.22222)’),2);
• SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15);
22. Tools
• including new tools like mysql_ssl_rsa_setup ? mysqlpump?
• why will xtrabackup not work with MariaDB Server encryption
or compression? https://jira.mariadb.org/browse/MDEV-10367
• When merging XtraDB, why isn’t it complete, with backup
locks? https://jira.mariadb.org/browse/MDEV-5336
• tools that require MySQL GTID don’t work with MariaDB
Server - ideas? (e.g. mysqlfailover, mysqlrpladmin, MHA, etc.)
• vitess, started life on just MariaDB Server, but note they
support 5.6/5.7 and only 10.0
23. Contributions?
• SPIDER
• SPIDER works better if its recompiled (doesn’t matter if its
included, it isn’t “feature complete”)
• Open since March 2015. Priority provided since May 2016.
• https://jira.mariadb.org/browse/MDEV-7698
• Are people still using HandlerSocket?
• What needs to get deprecated so focus can happen on other
things?
24. Open ended…
• How often are the 5.6/5.7 mysqltest’s run on
MariaDB Server?
• How often are upgrades from 5.6/5.7 tested?
26. The future
• MySQL 8 brings roles, CTEs, (soon window
functions), transactional data dictionary,
histograms, SDIs (instead of FRMs), etc.
• http://mysqlserverteam.com/the-mysql-8-0-0-
milestone-release-is-available/
• Will MariaDB Server 10.3 aim to be compatible with
MySQL 8?