A beginners guide to MariaDB

26
A Beginner’s Guide to MariaDB Colin Charles, Monty Program Ab [email protected] http://montyprogram.com / http://mariadb.org / http://bytebot.net/blog / @bytebot on Twitter O’Reilly MySQL Conference & Expo - 12 April 2011

description

MariaDB started life as a database to host the Maria storage engine in 2009. Not long after its inception, the MySQL community went through yet another change in ownership, and it was deemed that MariaDB will be a complete database branch developed to extend MySQL, but with constant merging of upstream changes. The goal of the MariaDB project is to ensure that everyone is part of the community, including employees of the major steering companies. MariaDB also features enhanced features, some of which are common with the Percona Performance Server. Most importantly, MariaDB is a drop-in replacement and is completely backward compatible with MySQL. In 2010, MariaDB released 5.1 in February, and 5.2 in November – two major releases in a span of one calendar year is a feat that was achieved! DBAs and developers alike will gain an introduction to MariaDB, what is different with MySQL, how to make use of the feature enhancements, and more.

Transcript of A beginners guide to MariaDB

Page 1: A beginners guide to MariaDB

A Beginner’s Guide to MariaDB

Colin Charles, Monty Program [email protected]

http://montyprogram.com / http://mariadb.org/ http://bytebot.net/blog / @bytebot on Twitter

O’Reilly MySQL Conference & Expo - 12 April 2011

Page 2: A beginners guide to MariaDB

Aims

• Give you an update of what we’ve done in the past year (plus since project inception)

• Discuss the broader MySQL ecosystem

Page 3: A beginners guide to MariaDB

What is it?

• A branch of MySQL with more features?

• A branch of MySQL with better features?

• A fork?

Page 4: A beginners guide to MariaDB

MariaDB is...

• Community Developed

• Feature Enhanced

• Backward Compatible

Page 5: A beginners guide to MariaDB

Who’s behind it?

• MySQL (database) owned by MySQL AB (company)

• Monty Program is just a sponsor of MariaDB

• MariaDB: Open Database Alliance, Percona, PrimeBase, Open Query, etc.

Page 6: A beginners guide to MariaDB

When did this begin?

• Sun buys MySQL AB in January 2008

• Oracle proposes acquisition of Sun Microsystems in April 2009

• Monty decides that beyond the engine (Febuary 2009), focus on MariaDB, a complete database solution

Page 7: A beginners guide to MariaDB

Why MariaDB?

• MySQL - an open source product or project?

• MariaDB is an open source project

Page 8: A beginners guide to MariaDB

Aims of MariaDB

• 100% compatible, drop-in replacement to MySQL

• Stable (bug-free) releases

• GPLv2

Page 9: A beginners guide to MariaDB

Compatibility with MySQL

• There is no NDB cluster storage engine

• Client libraries, client-server protocol, SQL dialect, replication master-slave all similar

• Data files are supported as long as its similar between versions

• Tools are similar (some additional tools for Aria, PBXT)

• XtraDB enabled by default; InnoDB and InnoDB plugin are included, but not enabled by default

• http://kb.askmonty.org/v/mariadb-versus-mysql-compatibility

Page 10: A beginners guide to MariaDB

What’s in MariaDB 5.1• Released February 2010

• Create external buildsystem using Buildbot + VMs for test+builds

• Release filled with storage engines

• XtraDB, PBXT, FederatedX, (M)Aria

• Croatian collations

• Numerous bug fixes

• Test cases and coverage improvements

• Removal of mutexes

• Compiler warnings gone!

Page 11: A beginners guide to MariaDB

What’s in MariaDB 5.1• Percona XtraDB

(ENGINE=InnoDB)

• enhanced InnoDB designed to better scale on modern hardware; backward compatible, scale better on many cores, use memory more efficiently

• See InnoDB & XtraDB Architecture & Performance Optimization slides from Peter Zaitsev at tutorial on Monday

• http://www.percona.com/docs/wiki/percona-xtradb:start

Page 12: A beginners guide to MariaDB

What’s in MariaDB 5.1• PrimeBase PBXT

• Transactional, foreign keys, ACID, MVCC (read w/o locking)

• Row-level locking during (SELECT FOR) UPDATE

• Rollback transactions, recovery after restart very fast (identifies garbage making undo unnecessary)

• Write once w/log-based storage; write data to DB, without first writing in transaction log

• http://kb.askmonty.org/v/about-pbxt

• Wednesday, 04/13/2011 - Ballroom D - 10.50am - Update on the PBXT Storage Engine by Paul McCullagh

Page 13: A beginners guide to MariaDB

What’s in MariaDB 5.1• Extended statistics for slow query log

• based on microslow from Percona http://kb.askmonty.org/v/slow-query-log-extended-statistics

• PROCESSLIST with microsecond precision

• TIME_MS in INFORMATION_SCHEMA.PROCESSLIST http://kb.askmonty.org/v/time_ms-column-in-information_schemaprocesslist

• Table elimination

• Query highly normalised data, it is sometimes possible to resolve a query without accessing some tables the query refers to e.g. http://kb.askmonty.org/v/what-is-table-elimination

• Pool of threads (MySQL 6 backport)

• Use a limited set of threads to handle all queries vs one-thread-per-connection http://kb.askmonty.org/v/pool-of-threads

Page 14: A beginners guide to MariaDB

What’s in MariaDB 5.2• Released November 2010

• MariaDB 5.2.5 (MariaDB 5.1.55 - changes up to MySQL 5.1.55)

• Pluggable authentication

• authentication of users handled by plugins

• mysql_native_password (20 byte) and mysql_old_password (8 byte) included by default

• CREATE USER foo IDENTIFIED VIA mysql_native_password USING ‘pass’; == CREATE user foo IDENTIFIED BY PASSWORD ‘pass’;

• Use socket_peercred - if already logged in via Unix credentials, MariaDB will trust it

• http://kb.askmonty.org/v/development-pluggable-authentication

• User Statistics (userstatsv2)

• Percona, Google, Weldon Whipple. Understand server activity better, identify database loads http://kb.askmonty.org/v/user-statistics

Page 15: A beginners guide to MariaDB

What’s in MariaDB 5.2• Virtual columns

• PERSISTENT (stored - default) & VIRTUAL (generated-only)

• http://kb.askmonty.org/v/virtual-columns

• Segmented MyISAM keycache

• mitigates thread contention for key cache lock, with notable 250% performance improvements http://kb.askmonty.org/v/segmented-key-cache

• New storage engines: OQENGINE, SphinxSE

• INFORMATION_SCHEMA.PLUGINS now has PLUGIN_MATURITY & PLUGIN_AUTH_VERSION columns

• CREATE TABLE can be extended via storage engine API

• Add additional attributes per index, field or table

• http://kb.askmonty.org/v/extending-create-table

Page 17: A beginners guide to MariaDB

Worklog• Funding (bounties)

• Votes

• http://askmonty.org/worklog/

Page 18: A beginners guide to MariaDB

Knowledgebase• http://kb.askmonty.org/

Page 19: A beginners guide to MariaDB

Deployments, deployments, deployments

“MariaDB had the same bugs that we ran into with MySQL. However the big difference was that when we reported these bugs, they were quickly resolved within 48 hours!” -- Dreas van Donselaar, Chief Technology Officer, SpamExpertsB.V. after migrating over 300 servers from MySQL 5.0 to MariaDB 5.1. “Migrating from MySQL 5.1 to MariaDB 5.2 was as

simple as removing MySQL RPMs and installing the MariaDB packages, then running mysql_upgrade.” - Panayot Belchev, proprietor, Host Bulgaria on providingMariaDB to over 7,000 of their web hosting customers.

Page 20: A beginners guide to MariaDB

Getting MariaDB

• http://mariadb.org/ is the site + downloads

• Get it via OpenSUSE build service

• Its in Gentoo, FreeBSD

• http://kb.askmonty.org/v/distributions-which-include-mariadb

Page 21: A beginners guide to MariaDB

The future?• There is no “one” tree

• MySQL, Percona Performance Server, MariaDB

• GIS

• HandlerSocket

• Merging takes time

• New config files?

• Row based replication improvements

• Group commit

• Tonnes of optimiser features

• index condition pushdown, multi-range-read (MRR) table access (with keys & row ID sorting), block nested loop for outer joins, batched key access, classic hash join, numerous subquery optimisations (possible materialisation for non-correleated subqueries), merged derived tables, index merge enhancements

• dynamic columns support

Page 22: A beginners guide to MariaDB

What else do we need?

• InnoDB focus

• Replication focus

• More benchmarks

• http://kb.askmonty.org/v/benchmarks

• Spreading the good word

Page 23: A beginners guide to MariaDB

Your roadmap• (past) What are the new optimiser

features and how can I benefit from them - Sergey Petrunya - Ballroom G - 11.55am - 12/04/2011

• (past) Plugin development tutorial by Sergei Golubchik

• State of MariaDB keynote - Michael Widenius - 9am - 13/04/2011

• Group commit and related enhancements in the MariaDB binary log - 2pm - 13/04/2011 - Ballroom H

• Dynamic Columns - 3.05pm - 13/04/2011 - Ballroom G

• OQGRAPH Dealing with graphs and hierarchies in plain SQL - Antony Curtis - 10.50am 14/04/2011 - Ballroom D

• A BoF on Wednesday evening to plan MariaDB future features

• http://kb.askmonty.org/v/plans-for-56

Page 24: A beginners guide to MariaDB

Plugins & Storage Engine Summit

• Interested in plugins and storage engines for MySQL/MariaDB/Drizzle?

• Be at the summit!

• April 15 2011, 10am-4pm, The Facebook Campus

• Sign up here: http://kb.askmonty.org/v/storage-engine-summit-2011

Page 25: A beginners guide to MariaDB

Booth 411

• Expo Hall

• Auction for a t-shirt (signed) + dinner with Monty - proceeds go to Japan