- MySQL 5.7 is no longer supported and will not receive any bugfixes or security updates after October 2023. Users need to upgrade to either MySQL 8.0 or MariaDB 10.11.
- MySQL is developed by Oracle while MariaDB has its own independent foundation. MariaDB aims to be compatible with MySQL but also has unique features like storage engines.
- Both MySQL 8.0 and MariaDB 10.11 are good options to upgrade to. Users should consider each product's unique features and governance model as well as test which one works better for their applications and use cases.
2. ● MySQL 5.7 is dead: what now?
● MySQL vs MariaDB:
○ Governance
○ Release policies
○ Compatibility
○ Unique features
○ Testing what works better for your application
Agenda
3. ● Vettabase is not a vendor
● We offer services for MariaDB, MySQL, Percona Server (and
more). All of them are important for us
● That said, I have opinions. Hopefully you have opinions, too.
Let's discuss.
● Criticism helps projects.
Not understanding this damages projects.
● If you work for a vendor, whether you want to say it or not, feel
free to correct any mistake I might make
WARNING
5. ● MySQL 5.7 was released in 2013
● …and went GA in 2015
● Premier support ended in 2020
● Extended support ends on 31st October 2023
MySQL 5.7 is dead
6. This means:
● There will never be another release
● No bugfixes
● No security fixes
● Drivers, libraries and tools will stop supporting MySQL 5.7
(at some point)
● Documentation, binaries download, etc, won't be available
anymore (at some point)
○ Download them just in case!!!
MySQL 5.7 is dead
7. The paths from here:
● MySQL 8.0
● MariaDB 10.11
Let's discuss the pros and cons of both.
MySQL 5.7 is dead
9. ● MySQL was acquired by Oracle in 2009
● There were serious concerns that Oracle just wanted to kill a
competitor
● In reality Oracle invested a lot of resources into MySQL
development
MySQL / MariaDB: governance
10. ● Thought some areas were clearly left behind
(Oracle wants us to buy its more expensive products)
○ Data Warehousing / ETL / analytics
○ Stored procedures
MySQL / MariaDB: governance
11. ● MariaDB belongs to the MariaDB company
● MariaDB Foundation exists to guarantee that:
○ MariaDB remains open source
○ Adoption (users, use cases, platforms)
○ Continuity
(please check mariadb.org as I don't speak for
MariaDB Foundation)
MySQL / MariaDB: governance
12. ● MySQL:
○ GitHub repo is updated from time to time
○ Public bug tracker is not used internally
○ Documentation has a proprietary license
● MariaDB:
○ GitHub has the repo they normally work on
○ MariaDB Foundation helps contributions
○ JIRA can be followed to check day to day activities
○ Documentation is a public wiki with open licenses
(GNU FDL / CC-BY-SA3)
MySQL / MariaDB: governance
13. ● Some MariaDB storage engines were developed by third parties
(and are now supported as the rest of MariaDB code)
○ SPIDER, CONNECT, OQGRAPH, Sphinx
● Galera is maintained by Codership
● Some features were contributed as part of GSoC (roles)
● Some features were contributed by third parties (crypto at rest)
MySQL / MariaDB: governance
14. ● Commercial editions:
○ MariaDB Enterprise
only includes OSS + MaxScale
○ MySQL Enterprise Edition
includes some non-OSS features
● Cloud:
○ MariaDB SkySQL
includes Xpand
○ Oracle Cloud: MySQL HeatWave
MySQL / MariaDB: governance
15. Other editions / forks:
● Percona Server for MySQL
● MySQL Cluster (NDB)
○ RonDB
● MariaDB ColumnStore
MySQL / MariaDB: governance
17. ● Before MySQL 8.0 and MariaDB 10.7:
development → alpha → beta → gamma → RC → Generally Available
● Release Candidates were mostly feature frozen
MySQL / MariaDB: release policies
18. ● MySQL 8.0 is an evergreen version. All releases might
include new features and incompatibilities
● Things that happened after MySQL 8.0 went GA:
○ Compatibility with Percona Xtrabackup was broken
■ Twice! And restoring it took months of efforts from Percona
○ GROUP BY col ASC | DESC syntax was removed
○ A bug in ALTER TABLE ALGORITHM=INSTANT caused
unrecoverable data corruption
MySQL / MariaDB: release policies
19. ● Latest release is 8.0.34:
○ mysqlpump tool is deprecated
○ 8 variables are deprecated
○ 2 mysql_option() flags is deprecated
○ Other options for the Audit Log are deprecated
○ 1 authentication plugin is deprecated
○ Minor syntax deprecation (missing leading space in
executable comments results in a warning)
● Statement format for Binary Log is deprecated
MySQL / MariaDB: release policies
20. ● MariaDB now has LTS versions supported for at least 5
years: 10.6, 10.11
● MariaDB short-term support versions are supported for 1
year, not recommended in production
MySQL / MariaDB: release policies
21. ● MySQL "observed industry trends"
(never name competitors!)
● They now follow the same policy starting from 8.1
(Except it's called an Innovation release rather than STS)
MySQL / MariaDB: release policies
23. ● MariaDB followed MySQL version numbers up to 5.6
● This indicated compatibility. For example:
MariaDB 5.5 = MySQL 5.5 + some unique features
● This was a big constrain for MariaDB
● Starting from version 10.0 they try to be compatible with
MySQL, and they are for most users
● But some advanced features / syntax / configuration are
different
MySQL / MariaDB: compatibility
24. ● Dumps are theoretically compatible with any version
thanks to executable comments:
○ SELECT * /*! , CONCAT_WS(...) */
MySQL and MariaDB
○ SELECT * /*!570000 , CONCAT_WS(...) */
MySQL/MariaDB 5.7+
○ SELECT * /*!M , SFORMAT(...) */
MariaDB
○ SELECT * /*!101100 , SFORMAT(...) */
● This facilitates porting, but unsupported features…
remain unsupported
MySQL / MariaDB: compatibility
25. ● Backup tools for MySQL don't work (or partially work) with
MariaDB due to different file formats, and different features
● MariaDB comes with its own tools:
○ mariadb-dump = mysqldump
○ mariabackup = xtrabackup
● Other tools generally work, but you might have to be careful
when you try to use advanced features
(Ansible MySQL collection, etc)
MySQL / MariaDB: compatibility
26. ● Replication between MySQL 8.0 and MariaDB doesn't work
● For synchronous replication, MySQL and MariaDB use
different solutions
○ MariaDB has Galera
○ MySQL has InnoDB Cluster
○ Percona Server supports both
MySQL / MariaDB: compatibility
28. MySQL unique features:
● Document store (schemaless)
● X protocol
● InnoDB support for memcached
● TEMPTABLE storage engine
● Lateral queries
● Multi-valued indexes (eg: index a JSON array)
● Expressional indexes
● GIS: SRID + new functions
● SET PERSISTENT
● Clone plugin
● Resource groups
MySQL / MariaDB: unique features
30. ● Temporal tables
● Flashback
● 2 phases ALTER TABLE replication
● Types: UUID, INET4, INET6
● DELETE/INSERT/REPLACE … RETURNING
● sql_mode='ORACLE' + PL/SQL+ better stored procedures
○ (but not Oracle built-in packages)
● Table elimination
● Any statement can be prepared
● Handlersocket for InnoDB and SPIDER
MySQL / MariaDB: unique features
31. Some thoughts from me…
● MariaDB is not great at a couple of things:
○ Documenting its features
○ Marketing its features
● There were cases where new MySQL features were
welcomed as absolute novelties from the community…
MariaDB implemented them first, but not many people knew
that
● Binlog compression, hash joins, INTERSECT and EXCEPT,
and more
MySQL / MariaDB: unique features
34. MySQL 8.0 or MariaDB 10.11?
● MariaDB 10.11 could be easier
● Check if one of the unique features is important enough to
affect your choice
● Decide which approach you like most
● Test!
Conclusions
35. Test?
● Try pt-upgrade from Percona:
○ Do your queries return the same results?
○ Which DBMS is faster for your queries?
○ Do you get errors/warnings?
○ Which DBMS consumes more resources? (monitoring)
● Test your tooling
● Test incidents
● Testing is important, but other criteria
might be more important
Conclusions