Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MariaDB 10.1 101

MariaDB 10.1 101

Presentation for SELF 2015

Avatar for Daniel Bartholomew

Daniel Bartholomew

June 12, 2015
Tweet

More Decks by Daniel Bartholomew

Other Decks in Technology

Transcript

  1. Before we begin… • I dislike “wall of text” slide

    presentations, but that's what this is, sorry about that • I am not a “big time” DBA or a developer, so… – Likely unable to answer in-depth questions • Covering a lot of ground, so… – Lots of links – http://speakerdeck.com/dbart
  2. What is MariaDB? • MySQL was named after Monty's oldest

    daughter, My, MariaDB named after his youngest. • Community developed branch/fork/evolution of MySQL • Additional features, storage engines, plugins • Goal is to be compatible & feature complete with MySQL • 5 years old! – Project started in early 2009 – First stable (GA) release: 1 Feb 2010
  3. Backed by MariaDB Foundation • Driver of the MariaDB project

    • Foundation not controlled by a single entity or person; has an independent board • Ensures MariaDB is compatible with MySQL, maintains mariadb.org, keeps community voice • Major sponsors: MariaDB Corp, Parallels, Booking.com, Automattic, OpenQuery, Percona, Webyog, others…
  4. Aims of MariaDB • Compatible, drop-in replacement of MySQL –

    Data on disk & on the wire is the same – Same file names, sockets, port, etc… • Stable (bug-free) releases with no regressions • GPLv2, just like Linux kernel • No closed source “enterprise only” features
  5. MariaDB Popularity • Wikipedia (English, German), Wikidata run MariaDB –

    http://blog.wikimedia.org/2013/04/22/wikipedia-adopts-mariadb/ • Google, Tumblr, SpamExperts, Nimbuzz, Web of Trust, FictionPress, & many others, use MariaDB • Fedora, OpenSUSE, Suse, Red Hat shipping MariaDB as a default – Slackware, Chakra, Arch, Mageia, others also – Available as alternative in Debian & Ubuntu • Many success stories: – https://mariadb.com/kb/en/mariadb/case-studies/
  6. Well supported • Everyone supports MariaDB from a consulting &

    support standpoint – MariaDB Corp, Percona, etc… • Jelastic offers MariaDB as PaaS – http://docs.jelastic.com/connection-to-mariadb • MariaDB in Ubuntu Juju Charm Store – https://jujucharms.com/mariadb/ • Many different Docker containers, Amazon AMIs, Chef cookbooks, Puppet modules, & etc… • All stable (GA) releases supported for 5 years (security & bug fixes, and etc…)
  7. Well supported • Everyone supports MariaDB from a consulting &

    support standpoint (except Oracle) – MariaDB Corp, Percona, etc… • Jelastic offers MariaDB as PaaS – http://docs.jelastic.com/connection-to-mariadb • MariaDB in Ubuntu Juju Charm Store – https://jujucharms.com/mariadb/ • Many different Docker containers, Amazon AMIs, Chef cookbooks, Puppet modules, & etc… • All stable (GA) releases supported for 5 years (security & bug fixes, and etc…)
  8. Where to get MariaDB • Probably already in your distribution's

    package repository (esp. if you're using a recent release) – 5.5 in some, 10.0 in others • https://downloads.mariadb.org/ – Official location for latest MariaDB releases – Repositories (apt & yum), generic binary releases, Windows packages, repository configuration tool
  9. MariaDB 10.1 • Main 10.1 information page: – https://mariadb.com/kb/en/what-is-mariadb-101/ •

    Releases – 30 Jun 2014 – MariaDB 10.1.0 alpha – 17 Oct 2014 – MariaDB 10.1.1 alpha – 7 Dec 2014 – MariaDB 10.1.2 alpha – 2 Mar 2015 – MariaDB 10.1.3 beta – 13 Apr 2015 – MariaDB 10.1.4 beta – 4 Jun 2015 – MariaDB 10.1.5 beta
  10. 10.1 – WebScaleSQL • Many individual patches – https://mariadb.atlassian.net/browse/MDEV-6039 •

    Several of them also backported to 10.0 – …when they were fixing bugs & not changing behavior
  11. 10.1 – Galera Cluster • Full integration of Galera Cluster

    4 into MariaDB 10.1 – not a separate download – No lost transactions – Optimisations for WAN replication – Non-blocking DDL – No limits on transaction size • wsrep_membership & wsrep_status Information Schema tables • https://mariadb.com/kb/en/mariadb-galera-cluster/
  12. 10.1 – Encryption • Table & Tablespace encryption with support

    for rolling keys using the AES algorithm – Table encryption: PAGE_ENCRYPTION=1 – Tablespace encryption: encrypts everything including log files (but not the binlog) • Encryption overhead of ~10% • XtraDB/InnoDB only; w/ Aria for temp tables • New file_key_management plugin • https://mariadb.com/kb/en/table-encryption/
  13. 10.1 – Optimistic parallel replication • Before, only transactions committed

    in parallel on the master could be run in parallel on slaves • Now, when replicating multiple transactions, they will be considered to be run in parallel, giving a performance boost in master-to-slave replication • https://mariadb.atlassian.net/browse/MDEV-6676 • https://mariadb.com/kb/en/parallel-replication/#optimis tic-mode-of-in-order-parallel-replication
  14. 10.1 – Threadpool • Backport/evolution of threadpool improvements in Percona

    server – thread_pool_high_prio_mode – thread_pool_high_prio_tickets – https://mariadb.atlassian.net/browse/MDEV-5533 – https://mariadb.com/kb/en/thread-pool-in-mariadb/
  15. 10.1 – Threadpool • Backport/evolution of threadpool improvements in Percona

    server – thread_pool_high_prio_mode – thread_pool_high_prio_tickets – https://mariadb.atlassian.net/browse/MDEV-5533 – https://mariadb.com/kb/en/thread-pool-in-mariadb/
  16. 10.1 – InnoDB • Multi-threaded flush (also in 5.7, but

    different implementation) – https://mariadb.com/kb/en/fusion-io-multi-threaded-flush/ • Page compression (for InnoDB/XtraDB) – https://mariadb.com/kb/en/innodb-xtradb-page-compr ession/ • Page compression (for FusionIO) – https://blog.mariadb.org/significant-performance-boo st-with-new-mariadb-page-compression-on-fusionio/ • 64KB pages in InnoDB (old limit = 16KB) – https://mariadb.atlassian.net/browse/MDEV-6075
  17. 10.1 – InnoDB cont… • Defragmentation (from Facebook, ported by

    DaumKakao) – https://mariadb.com/kb/en/defragmenting-innodb- tablespaces/ • Forced primary key – If option is true, creating a table without a primary key or unique key where all keyparts are NOT NULL is not allowed, instead an error message is printed – https://mariadb.atlassian.net/browse/MDEV-5335 – https://mariadb.com/kb/en/xtradbinnodb-server-sy stem-variables/#innodb_force_primary_key
  18. 10.1 – InnoDB WebScaleSQL • Buffer pool list scan optimization

    – https://mariadb.atlassian.net/browse/MDEV-6936 • Facebook prefix index queries optimization – https://mariadb.atlassian.net/browse/MDEV-6929 • Lazy flushing (saves wear on flash) – https://mariadb.atlassian.net/browse/MDEV-6932 • LRU (least recently used) flushing regardless of server activity – https://mariadb.atlassian.net/browse/MDEV-6931 • Clustering key is covering key (TokuDB) – https://tokutek.atlassian.net/browse/DB-746 • lock_wait_timeout_thread wakeup in lock_wait_suspend_thread() – https://mariadb.atlassian.net/browse/MDEV-6933
  19. 10.1 – Per query variables • Port from Percona Server

    – https://mariadb.atlassian.net/browse/MDEV-5231 • History: – http://www.bytebot.net/blog/archives/2014/05/04/p er-query-variable-settings-in-mysqlpercona-server webscalesql • Example: – SET STATEMENT max_statement_time=1000 FOR SELECT name FROM name ORDER BY name;
  20. 10.1 – Query timeouts • Statement timeouts patch from Twitter;

    re- written by Monty – https://mariadb.atlassian.net/browse/MDEV-4427 • MAX_STATEMENT_TIME to abort long-running queries – https://mariadb.com/kb/en/aborting-statements/
  21. 10.1 – Optimizer • UNION ALL without temporary tables (5.7)

    – https://mariadb.com/kb/en/union/ • Improve ORDER BY in optimizer – https://mariadb.com/kb/en/improvements-to-order-by/ • EXPLAIN JSON (like 5.6) – https://mariadb.com/kb/en/explain-format-json/ – https://mariadb.com/kb/en/explain-format-json-differences/ • EXPLAIN ANALYZE with FORMAT=JSON – Includes data from the query execution itself – MariaDB only – https://mariadb.com/kb/en/analyze-format-json/
  22. 10.1 – Passwords • Password validation plugin API – https://mariadb.com/kb/en/password-validation/

    • simple_password_check plugin – Can enforce a minimum password length and guarantee that a password contains at least a specified number of upper and lowercase letters, digits, and punctuation characters – https://mariadb.com/kb/en/simple_password_check/ • cracklib_password_check plugin – Allows passwords that are strong enough to pass the CrackLib test (same test that pam_cracklib.so does) – https://mariadb.com/kb/en/cracklib_password_check/
  23. 10.1 – GIS • Full compliance for the OGC standards

    around GIS – https://mariadb.com/kb/en/what-is-mariadb-101/#gis • MariaDB GIS is now OpenGIS compliant, and passes all the OpenGIS conformance tests – https://mariadb.atlassian.net/browse/MDEV-7509
  24. 10.1 – Other bits • Slaves can execute triggers w/

    row-based replication – https://mariadb.atlassian.net/browse/MDEV-5095 • CONNECT has full JSON/BSON support – https://mariadb.com/kb/en/connect/ • CREATE or REPLACE for most database objects minus indexes – https://mariadb.atlassian.net/browse/MDEV-5359 • SET DEFAULT ROLE (there is a default role for current user) – https://mariadb.atlassian.net/browse/MDEV-4397 • Kerberos authentication plugin – https://mariadb.atlassian.net/browse/MDEV-4691
  25. 10.1 – Other bits cont… • FRM files are now

    not created for temporary tables – https://mariadb.atlassian.net/browse/MDEV-4260 • INFORMATION_SCHEMA.SYSTEM_VARIABLES – https://mariadb.atlassian.net/browse/MDEV-6138 – https://mariadb.com/kb/en/information-schema-system_ variables-table/ • Compiled with security hardening options, fortify source – https://mariadb.atlassian.net/browse/MDEV-5730 • @@sql_log_slow can now be controlled on a session basis (not just globally)
  26. 10.1 – Other bits cont… • Audit plugin to track

    password changes – https://mariadb.com/kb/en/mariadb-audit-plugin/ • Ipv6/Ipv4 datatype (pending review) – https://mariadb.atlassian.net/browse/MDEV-274 • Additional character sets (GB18030) for Chinese government mandate (pending review) – https://mariadb.atlassian.net/browse/MDEV-7495 • Overview of new status & system variables in 10.1: – https://mariadb.com/kb/en/system-variables-added-in-mariadb-101/ – https://mariadb.com/kb/en/status-variables-added-in-mariadb-101/
  27. 10.1 – Compatibility • Temporary tables are stored in Aria

    but now there is a --default-tmp-storage-engine option – https://mariadb.atlassian.net/browse/MDEV-6107 • engine_condition_pushdown flag removed (it's always on for engines that support it) – https://mariadb.atlassian.net/browse/MDEV-6513 • --mysql56-temporal-format option to use the MySQL 5.6 low level formats to store TIME, DATETIME, and TIMESTAMP types – https://mariadb.com/kb/en/server-system-variables/#mysql56_te mporal_format • PERFORMANCE_SCHEMA disabled by default (like in 10.0) – https://mariadb.com/kb/en/performance-schema/
  28. 10.1 – How to get it • https://downloads.mariadb.org • Not

    listed in the repository configurator – https://downloads.mariadb.org/mariadb/repositories/ – People were installing it in production when it was still alpha! – Now partially hidden to help save people from themselves – Choose MariaDB 10.0, then in the instructions, replace 10.0 with 10.1 – Will be added to the configuration tool when it reaches gamma (release candidate) stage
  29. Feedback plugin • Disabled by default, consider enabling it to

    show use! – https://mariadb.com/kb/en/feedback-plugin/ – Collected data: http://mariadb.org/feedback_plugin • Data from over 150 countries! • But only ~6000 servers actively uploading data, most of them Windows (so not many production servers) • Can also be used for internal statistics gathering (with feedback-url option)
  30. Online Resources • Knowledge Base: – https://mariadb.com/kb • JIRA (bug/dev

    tracker): – http://mariadb.org/jira • Code: – All dev trees are now on GitHub – https://github.com/MariaDB/server
  31. Online Resources cont… • Low traffic announce list: – http://lists.askmonty.org/cgi-bin/mailman/listinfo/announce

    • Discussion list: – https://launchpad.net/~maria-discuss • Developer list: – https://launchpad.net/~maria-developers • Social: – facebook.com/MariaDB.dbms – Twitter: @mariadb – Google+: +MariaDB – #maria on irc.freenode.net