MariaDB Server Compatibility with MySQL

445 views

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
445
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

MariaDB Server Compatibility with MySQL

  1. 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. 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. 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. 4. Define: compatibility (OED) • A state in which two things are able to exist or occur together without problems or conflict.
  5. 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. 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/
  7. 7. 5.7 JSON • https://jira.mariadb.org/browse/MDEV-9056 - target 10.2, not in the current beta release • what about mysqlsh? (the MySQL Shell)
  8. 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. 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. 10. Multiple triggers per table • Pushed, ready for testing in 10.2.3 • https://jira.mariadb.org/browse/MDEV-6112
  11. 11. 10.0/5.6
  12. 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. 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. 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. 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
  16. 16. Missing! • SUPER readonly mode - https://jira.mariadb.org/ browse/MDEV-9458 • Optimizer trace - https://jira.mariadb.org/browse/ MDEV-6111 • Add replication crash-safety for non-GTID slave - https://jira.mariadb.org/browse/MDEV-8946
  17. 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. 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. 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. 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. 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. 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. 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. 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?
  25. 25. Today we already see this…
  26. 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?

×