All posts by Michael "Monty" Widenius

Upgrading Between Major MariaDB Versions

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2020/04/upgrading-between-major-mariadb-versions.html

Hello world, I am still alive (even if this blog hasn’t been that much alive lately)!

There have been way too long since my last blog, so I thought it’s time to remedy that and write some updates about what I have been doing with MariaDB lately

I am a believer in easy upgrades (this is why we do our best in MariaDB to not removed old syntax, features or variables). This is why I designed MariaDB from the start to be able to upgrade from any previous version directly to any newer version. One should be able to “trivially” upgrade from the first MySQL version (1.0) to the current without any issues (as long as the data is in one of the supported storage engines).

Recently I was involved in a discussion if it’s safe to upgrade between major versions of MariaDB (like 10.1 directly to 10.4) and I noticed that had not been documented properly.

I have now fixed that by writing an article about upgrading MariaDB.

I have included the article here to make it easier for everyone to read it.

Happy upgrading!

Upgrading Between Major MariaDB Versions

MariaDB is designed to allow easy upgrades. You should be able to trivially upgrade from ANY earlier MariaDB version to the latest one (for example MariaDB 5.5.x to MariaDB 10.5.x), usually in a few seconds. This is also mainly true for any MySQL version < 8.0 to MariaDB 10.4 and up.

Upgrades are normally easy because:

  • All MariaDB table data files are backward compatible
  • The MariaDB connection protocol is backward compatible.
  • A MariaDB slave can be of any newer version than the master.

MariaDB Corporation regularly runs tests to check that one can upgrade from MariaDB 5.5 to the latest MariaDB version without any trouble. All older versions should work too (as long as the storage engines you were using are still around).

Requirements for Doing an Upgrade Between Major Versions

* Go through the individual version upgrade notes (listed below) to look for any major changes or configuration options that have changed.
* Ensure that the innodb_fast_shutdown variable is not 2 (fast crash shutdown). The default of this variable is 1. The most safe option for upgrades is 0, but the shutdown time may be notable larger with 0 than for 1 as there is a lot more cleanups done for 0.
* Clean shutdown of the server. This is necessary because even if data files are compatible between versions, recovery logs may not be.
* Backup of the database (just in case). At least, take a copy of the mysql data directory with mysqldump –add-drop-table mysql as most of the upgrade changes are done there (adding new fields and new system tables etc).

Note that rpms don”t support upgrading between major versions, only minor like 10.4.1 to 10.4.2. If you are using rpms, you should de-install the old MariaDB rpms and install the new MariaDB rpms before running mysql_upgrade. Note that when installing the new rpms, mysql_upgrade may be run automatically. There is no problem with running mysql_upgrade many times.

Recommended Steps

* If you have a master-slave setup, first upgrade one slave and when you have verified that the slave works well, upgrade the rest of the slaves (if any). Then upgrade one slave to master, upgrade the master, and change the master to a slave.

* If you don’t have a master-slave setup, then take a backup, shutdown MariaDB and do the upgrade.

Work Done by mysql_upgrade

The main work done when upgrading is done by running mysql_upgrade. The main things it does are:

* Updating the system tables in the mysql database to the newest version. This is very quick.
* mysql_upgrade also runs mysqlcheck –check-upgrade to check if there have been any collation changes between the major versions. This recreates indexes in old tables that are using any of the changed collations. This can take a bit of time if there are a lot of tables or there are many tables which used the changed collation. The last time a collation changed was in MariaDB/MySQL 5.1.23.

Post Upgrade Work

Check the MariaDB error log for any problems during upgrade.
The common errors are:
* Using obsolete options.  If this is the case, remove them from your my.cnf files.
* Check the manual for new features that have been added since your last MariaDB version.
* Test that your application works as before. The main difference from before is that because of optimizer improvements your application should work better than before, but in some rare cases the optimizer may get something wrong. In this case, you can try to use explain, optimizer trace or optimizer_switch to fix the queries.

If Something Goes Wrong

* First, check the MariaDB error log to see if you are using configure options that are not supported anymore.
* Check the upgrade notices for the MariaDB release that you are upgrading to.
* File an issue in the MariaDB bug tracker so that we know about the issue and can provide a fix to make upgrades even better.
* Add a comment to this manual entry for how we can improve it.

Disaster Recovery

In the unlikely event something goes wrong, you can try the following:

  • Remove the InnoDB tables from the mysql data directory. They are in MariaDB 10.5:
    • gtid_slave_pos
    • innodb_table_stats
    • innodb_index_stats
    • transaction_registry
  • Move the mysql data directory to mysql-old and run mysql_install_db to generate a new one.
  • After the above, you have to add back your old users.
  • When done, delete the mysql-old data directory.

Downgrading

MariaDB server is not designed for downgrading. That said, in most cases, as long as you don’t have done any ALTER TABLE or CREATE TABLE statements and you have a mysqldump of your old mysql database , you should be able to downgrade to your previous version by doing the following:

* Do a clean shutdown. For this special case you have to set innodb_fast_shutdown to 0, before taking down the new MariaDB server, to ensure there are no redo or undo logs that need to be applied on the downgraded server.
* Delete the tables in the mysql database (if you didn’t use the option –add-drop-table to mysqldump).
* Delete the new MariaDB installation
* Install the old MariaDB version
* Start the server with mysqld –skip-grant-tables
* Install the old mysql database
* Execute in the mysql client FLUSH PRIVILEGES

Congratulations to Oracle on MySQL 8.0

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2018/04/congratulations-to-oracle-on-mysql-80.html


Last week, Oracle announced the general availability of MySQL 8.0. This is good news for database users, as it means Oracle is still developing MySQL.

I decide to celebrate the event by doing a quick test of MySQL 8.0. Here follows a step-by-step description of my first experience with MySQL 8.0.
Note that I did the following without reading the release notes, as is what I
have done with every MySQL / MariaDB release up to date; In this case it
was not the right thing to do.

I pulled MySQL 8.0 from [email protected]:mysql/mysql-server.git
I was pleasantly surprised that ‘cmake . ; make‘ worked without without any compiler warnings! I even checked the used compiler options and noticed that MySQL was compiled with -Wall + several other warning flags. Good job MySQL team!

I did have a little trouble finding the mysqld binary as Oracle had moved it to ‘runtime_output_directory’; Unexpected, but no big thing.

Now it’s was time to install MySQL 8.0.

I did know that MySQL 8.0 has removed mysql_install_db, so I had to use the mysqld binary directly to install the default databases:
(I have specified datadir=/my/data3 in the /tmp/my.cnf file)

> cd runtime_output_directory
> mkdir /my/data3
> ./mysqld –defaults-file=/tmp/my.cnf –install

2018-04-22T12:38:18.332967Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2018-04-22T12:38:18.333109Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-04-22T12:38:18.333135Z 0 [ERROR] [MY-010119] [Server] Aborting

A quick look in mysqld –help –verbose output showed that the right command option is –-initialize. My bad, lets try again,

> ./mysqld –defaults-file=/tmp/my.cnf –initialize

2018-04-22T12:39:31.910509Z 0 [ERROR] [MY-010457] [Server] –initialize specified but the data directory has files in it. Aborting.
2018-04-22T12:39:31.910578Z 0 [ERROR] [MY-010119] [Server] Aborting

Now I used the right options, but still didn’t work.
I took a quick look around:

> ls /my/data3/
binlog.index

So even if the mysqld noticed that the data3 directory was wrong, it still wrote things into it.  This even if I didn’t have –log-binlog enabled in the my.cnf file. Strange, but easy to fix:

> rm /my/data3/binlog.index
> ./mysqld –defaults-file=/tmp/my.cnf –initialize


2018-04-22T12:40:45.633637Z 0 [ERROR] [MY-011071] [Server] unknown variable ‘max-tmp-tables=100’
2018-04-22T12:40:45.633657Z 0 [Warning] [MY-010952] [Server] The privilege system failed to initialize correctly. If you have upgraded your server, make sure you’re executing mysql_upgrade to correct the issue.
2018-04-22T12:40:45.633663Z 0 [ERROR] [MY-010119] [Server] Aborting

The warning about the privilege system confused me a bit, but I ignored it for the time being and removed from my configuration files the variables that MySQL 8.0 doesn’t support anymore. I couldn’t find a list of the removed variables anywhere so this was done with the trial and error method.

> ./mysqld –defaults-file=/tmp/my.cnf

2018-04-22T12:42:56.626583Z 0 [ERROR] [MY-010735] [Server] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
2018-04-22T12:42:56.827685Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table ‘mysql.gtid_executed’ cannot be opened.
2018-04-22T12:42:56.838501Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-04-22T12:42:56.848375Z 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables
2018-04-22T12:42:56.848863Z 0 [ERROR] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we’re sending the information to the error-log instead: MY-001146 – Table ‘mysql.component’ doesn’t exist
2018-04-22T12:42:56.848916Z 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we’re sending the information to the error-log instead: MY-003543 – The mysql.component table is missing or has an incorrect definition.
….
2018-04-22T12:42:56.854141Z 0 [System] [MY-010931] [Server] /home/my/mysql-8.0/runtime_output_directory/mysqld: ready for connections. Version: ‘8.0.11’ socket: ‘/tmp/mysql.sock’ port: 3306 Source distribution.

I figured out that if there is a single wrong variable in the configuration file, running mysqld –initialize will leave the database in an inconsistent state. NOT GOOD! I am happy I didn’t try this in a production system!

Time to start over from the beginning:

> rm -r /my/data3/*
> ./mysqld –defaults-file=/tmp/my.cnf –initialize

2018-04-22T12:44:45.548960Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: px)NaaSp?6um
2018-04-22T12:44:51.221751Z 0 [System] [MY-013170] [Server] /home/my/mysql-8.0/runtime_output_directory/mysqld (mysqld 8.0.11) initializing of server has completed

Success!

I wonder why the temporary password is so complex; It could easily have been something that one could easily remember without decreasing security, it’s temporary after all. No big deal, one can always paste it from the logs. (Side note: MariaDB uses socket authentication on many system and thus doesn’t need temporary installation passwords).

Now lets start the MySQL server for real to do some testing:

> ./mysqld –defaults-file=/tmp/my.cnf

2018-04-22T12:45:43.683484Z 0 [System] [MY-010931] [Server] /home/my/mysql-8.0/runtime_output_directory/mysqld: ready for connections. Version: ‘8.0.11’ socket: ‘/tmp/mysql.sock’ port: 3306 Source distribution.

And the lets start the client:

> ./client/mysql –socket=/tmp/mysql.sock –user=root –password=”px)NaaSp?6um”
ERROR 2059 (HY000): Plugin caching_sha2_password could not be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

Apparently MySQL 8.0 doesn’t work with old MySQL / MariaDB clients by default 🙁

I was testing this in a system with MariaDB installed, like all modern Linux system today, and didn’t want to use the MySQL clients or libraries.

I decided to try to fix this by changing the authentication to the native (original) MySQL authentication method.

> mysqld –skip-grant-tables

> ./client/mysql –socket=/tmp/mysql.sock –user=root
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

Apparently –skip-grant-tables is not good enough anymore. Let’s try again with:

> mysqld –skip-grant-tables –default_authentication_plugin=mysql_native_password

> ./client/mysql –socket=/tmp/mysql.sock –user=root mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.11 Source distribution

Great, we are getting somewhere, now lets fix “root”  to work with the old authenticaion:

MySQL [mysql]> update mysql.user set plugin=”mysql_native_password”,authentication_string=password(“test”) where user=”root”;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(“test”) where user=”root”‘ at line 1

A quick look in the MySQL 8.0 release notes told me that the PASSWORD() function is removed in 8.0. Why???? I don’t know how one in MySQL 8.0 is supposed to generate passwords compatible with old installations of MySQL. One could of course start an old MySQL or MariaDB version, execute the password() function and copy the result.

I decided to fix this the easy way and use an empty password:

(Update:: I later discovered that the right way would have been to use: FLUSH PRIVILEGES;  ALTER USER’ root’@’localhost’ identified by ‘test’  ; I however dislike this syntax as it has the password in clear text which is easy to grab and the command can’t be used to easily update the mysql.user table. One must also disable the –skip-grant mode to do use this)

MySQL [mysql]> update mysql.user set plugin=”mysql_native_password”,authentication_string=”” where user=”root”;
Query OK, 1 row affected (0.077 sec)
Rows matched: 1 Changed: 1 Warnings: 0
 
I restarted mysqld:
> mysqld –default_authentication_plugin=mysql_native_password

> ./client/mysql –user=root –password=”” mysql
ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

Ouch, forgot that. Lets try again:


> mysqld –skip-grant-tables –default_authentication_plugin=mysql_native_password

> ./client/mysql –user=root –password=”” mysql
MySQL [mysql]> update mysql.user set password_expired=”N” where user=”root”;

Now restart and test worked:

> ./mysqld –default_authentication_plugin=mysql_native_password

>./client/mysql –user=root –password=”” mysql

Finally I had a working account that I can use to create other users!

When looking at mysqld –help –verbose again. I noticed the option:

–initialize-insecure
Create the default database and exit. Create a super user
with empty password.

I decided to check if this would have made things easier:

> rm -r /my/data3/*
> ./mysqld –defaults-file=/tmp/my.cnf –initialize-insecure

2018-04-22T13:18:06.629548Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the –initialize-insecure option.

Hm. Don’t understand the warning as–initialize-insecure is not an option that one would use more than one time and thus nothing one would ‘switch off’.

> ./mysqld –defaults-file=/tmp/my.cnf

> ./client/mysql –user=root –password=”” mysql
ERROR 2059 (HY000): Plugin caching_sha2_password could not be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

Back to the beginning 🙁

To get things to work with old clients, one has to initialize the database with:
> ./mysqld –defaults-file=/tmp/my.cnf –initialize-insecure –default_authentication_plugin=mysql_native_password

Now I finally had MySQL 8.0 up and running and thought I would take it up for a spin by running the “standard” MySQL/MariaDB sql-bench test suite. This was removed in MySQL 5.7, but as I happened to have MariaDB 10.3 installed, I decided to run it from there.

sql-bench is a single threaded benchmark that measures the “raw” speed for some common operations. It gives you the ‘maximum’ performance for a single query. Its different from other benchmarks that measures the maximum throughput when you have a lot of users, but sql-bench still tells you a lot about what kind of performance to expect from the database.

I tried first to be clever and create the “test” database, that I needed for sql-bench, with
> mkdir /my/data3/test

but when I tried to run the benchmark, MySQL 8.0 complained that the test database didn’t exist.

MySQL 8.0 has gone away from the original concept of MySQL where the user can easily
create directories and copy databases into the database directory. This may have serious
implication for anyone doing backup of databases and/or trying to restore a backup with normal OS commands.

I created the ‘test’ database with mysqladmin and then tried to run sql-bench:

> ./run-all-tests –user=root

The first run failed in test-ATIS:

Can’t execute command ‘create table class_of_service (class_code char(2) NOT NULL,rank tinyint(2) NOT NULL,class_description char(80) NOT NULL,PRIMARY KEY (class_code))’
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘rank tinyint(2) NOT NULL,class_description char(80) NOT NULL,PRIMARY KEY (class_’ at line 1

This happened because ‘rank‘ is now a reserved word in MySQL 8.0. This is also reserved in ANSI SQL, but I don’t know of any other database that has failed to run test-ATIS before. I have in the past run it against Oracle, PostgreSQL, Mimer, MSSQL etc without any problems.

MariaDB also has ‘rank’ as a keyword in 10.2 and 10.3 but one can still use it as an identifier.

I fixed test-ATIS and then managed to run all tests on MySQL 8.0.

I did run the test both with MySQL 8.0 and MariaDB 10.3 with the InnoDB storage engine and by having identical values for all InnoDB variables, table-definition-cache and table-open-cache. I turned off performance schema for both databases. All test are run with a user with an empty password (to keep things comparable and because it’s was too complex to generate a password in MySQL 8.0)

The result are as follows
Results per test in seconds:


Operation         |MariaDB|MySQL-8|

———————————–
ATIS              | 153.00| 228.00|
alter-table       |  92.00| 792.00|
big-tables        | 990.00|2079.00|
connect           | 186.00| 227.00|
create            | 575.00|4465.00|
insert            |4552.00|8458.00|
select            | 333.00| 412.00|
table-elimination |1900.00|3916.00|
wisconsin         | 272.00| 590.00|
———————————–

This is of course just a first view of the performance of MySQL 8.0 in a single user environment. Some reflections about the results:

  • Alter-table test is slower (as expected) in 8.0 as some of the alter tests benefits of the instant add column in MariaDB 10.3.
  • connect test is also better for MariaDB as we put a lot of efforts to speed this up in MariaDB 10.2
  • table-elimination shows an optimization in MariaDB for the  Anchor table model, which MySQL doesn’t have.
  • CREATE and DROP TABLE is almost 8 times slower in MySQL 8.0 than in MariaDB 10.3. I assume this is the cost of ‘atomic DDL’. This may also cause performance problems for any thread using the data dictionary when another thread is creating/dropping tables.
  • When looking at the individual test results, MySQL 8.0 was slower in almost every test, in many significantly slower.
  • The only test where MySQL was faster was “update_with_key_prefix”. I checked this and noticed that there was a bug in the test and the columns was updated to it’s original value (which should be instant with any storage engine). This is an old bug that MySQL has found and fixed and that we have not been aware of in the test or in MariaDB.
  • While writing this, I noticed that MySQL 8.0 is now using utf8mb4 as the default character set instead of latin1. This may affect some of the benchmarks slightly (not much as most tests works with numbers and Oracle claims that utf8mb4 is only 20% slower than latin1), but needs to be verified.
  • Oracle claims that MySQL 8.0 is much faster on multi user benchmarks. The above test indicates that they may have done this by sacrificing single user performance.
  •  We need to do more and many different benchmarks to better understand exactly what is going on. Stay tuned!

Short summary of my first run with MySQL 8.0:

  • Using the new caching_sha2_password authentication as default for new installation is likely to cause a lot of problems for users. No old application will be able to use MySQL 8.0, installed with default options, without moving to MySQL’s client libraries. While working on this blog I saw MySQL users complain on IRC that not even MySQL Workbench can authenticate with MySQL 8.0. This is the first time in MySQL’s history where such an incompatible change has ever been done!
  • Atomic DDL is a good thing (We plan to have this in MariaDB 10.4), but it should not have such a drastic impact on performance. I am also a bit skeptical of MySQL 8.0 having just one copy of the data dictionary as if this gets corrupted you will lose all your data. (Single point of failure)
  • MySQL 8.0 has several new reserved words and has removed a lot of variables, which makes upgrades hard. Before upgrading to MySQL 8.0 one has to check all one’s databases and applications to ensure that there are no conflicts.
  • As my test above shows, if you have a single deprecated variable in your configuration files, the installation of MySQL will abort and can leave the database in inconsistent state. I did of course my tests by installing into an empty data dictionary, but one can assume that some of the problems may also happen when upgrading an old installation.

Conclusions:
In many ways, MySQL 8.0 has caught up with some earlier versions of MariaDB. For instance, in MariaDB 10.0, we introduced roles (four years ago). In MariaDB 10.1, we introduced encrypted redo/undo logs (three years ago). In MariaDB 10.2, we introduced window functions and CTEs (a year ago). However, some catch-up of MariaDB Server 10.2 features still remains for MySQL (such as check constraints, binlog compression, and log-based rollback).

MySQL 8.0 has a few new interesting features (mostly Atomic DDL and JSON TABLE functions), but at the same time MySQL has strayed away from some of the fundamental corner stone principles of MySQL:

From the start of the first version of MySQL in 1995, all development has been focused around 3 core principles:

  • Ease of use
  • Performance
  • Stability

With MySQL 8.0, Oracle has sacrifices 2 of 3 of these.

In addition (as part of ease of use), while I was working on MySQL, we did our best to ensure that the following should hold:

  • Upgrades should be trivial
  • Things should be kept compatible, if possible (don’t remove features/options/functions that are used)
  • Minimize reserved words, don’t remove server variables
  • One should be able to use normal OS commands to create and drop databases, copy and move tables around within the same system or between different systems. With 8.0 and data dictionary taking backups of specific tables will be hard, even if the server is not running.
  • mysqldump should always be usable backups and to move to new releases
  • Old clients and application should be able to use ‘any’ MySQL server version unchanged. (Some Oracle client libraries, like C++, by default only supports the new X protocol and can thus not be used with older MySQL or any MariaDB version)

We plan to add a data dictionary to MariaDB 10.4 or MariaDB 10.5, but in a way to not sacrifice any of the above principles!

The competition between MySQL and MariaDB is not just about a tactical arms race on features. It’s about design philosophy, or strategic vision, if you will.

This shows in two main ways: our respective view of the Storage Engine structure, and of the top-level direction of the roadmap.

On the Storage Engine side, MySQL is converging on InnoDB, even for clustering and partitioning. In doing so, they are abandoning the advantages of multiple ways of storing data. By contrast, MariaDB sees lots of value in the Storage Engine architecture: MariaDB Server 10.3 will see the general availability of MyRocks (for write-intensive workloads) and Spider (for scalable workloads). On top of that, we have ColumnStore for analytical workloads. One can use the CONNECT engine to join with other databases. The use of different storage engines for different workloads and different hardware is a competitive differentiator, now more than ever.

On the roadmap side, MySQL is carefully steering clear of features that close the gap between MySQL and Oracle. MariaDB has no such constraints. With MariaDB 10.3, we are introducing PL/SQL compatibility (Oracle’s stored procedures) and AS OF (built-in system versioned tables with point-in-time querying). For both of those features, MariaDB is the first Open Source database doing so. I don’t except Oracle to provide any of the above features in MySQL!

Also on the roadmap side, MySQL is not working with the ecosystem in extending the functionality. In 2017, MariaDB accepted more code contributions in one year, than MySQL has done during its entire lifetime, and the rate is increasing!

I am sure that the experience I had with testing MySQL 8.0 would have been significantly better if MySQL would have an open development model where the community could easily participate in developing and testing MySQL continuously. Most of the confusing error messages and strange behavior would have been found and fixed long before the GA release.

Before upgrading to MySQL 8.0 please read https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html to see what problems you can run into! Don’t expect that old installations or applications will work out of the box without testing as a lot of features and options has been removed (query cache, partition of myisam tables etc)! You probably also have to revise your backup methods, especially if you want to ever restore just a few tables. (With 8.0, I don’t know how this can be easily done).

According to the MySQL 8.0 release notes, one can’t use mysqldump to copy a database to MySQL 8.0.
One has to first to move to a MySQL 5.7 GA version (with mysqldump, as
recommended by Oracle) and then to MySQL 8.0 with in-place update. I assume this means that all old mysqldump backups are useless for MySQL 8.0?

MySQL 8.0 seams to be a one way street to an unknown future. Up to MySQL 5.7 it has been trivial to move to MariaDB and one could always move back to MySQL with mysqldump. All MySQL client libraries has worked with MariaDB and all MariaDB client libraries has worked with MySQL. With MySQL 8.0 this has changed in the wrong direction.

As long as you are using MySQL 5.7 and below you have choices for your future, after MySQL 8.0 you have very little choice. But don’t despair, as MariaDB will always be able to load a mysqldump file and it’s very easy to upgrade your old MySQL installation to MariaDB 🙂

I wish you good luck to try MySQL 8.0 (and also the upcoming MariaDB 10.3)!

MariaDB 10.2 GA released with several advanced features

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2017/05/mariadb-102-ga-released-with-several.html

MariaDB
10.2.6 GA is now released
. It’s a release where we have concentrated
on adding new advanced features to MariaDB

The most noteworthy ones are:

  • Windows Functions gives you the ability to do advanced calculation over a sliding window.
  • Common table expressions allows you to do more complex SQL statements without having to do explicit temporary tables.
  • We finally have a DEFAULT clause that can take expressions and also CHECK CONSTRAINT.
  • Multiple triggers for the same event. This is important for anyone trying to use tools, like pt-online-schema-change, which requires multiple triggers for the same table.
  • A new storage engine, MyRocks, that gives you high compression of your data without sacrificing speed. It has been developed in cooperation with Facebook and MariaDB to allow you to handle more data with less resources.
  • flashback, a feature that can rollback instances/databases/tables to an old snapshot. The version in MariaDB 10.2 is DML only. In MariaDB 10.3 we will also allow rollback over DML (like DROP TABLE).
  • Compression of events in the binary log.
  • JSON functions added. In 10.2.7 we will also add support for CREATE TABLE … (a JSON).

A few smaller but still noteworthy new features:

  • Connection setup was made faster by moving creation of THD to a new thread. This, in addition with better thread caching, can give a connection speedup for up to 85 % in some cases.
  • Table cache can automatically partition itself as needed to reduce the contention.
  • NO PAD collations, which means that end space are significant in comparisons.
  • InnoDB is now the default storage engine. Until MariaDB 10.1, MariaDB used the XtraDB storage engine as default. XtraDB in 10.2 is not up to date with the latest features of InnoDB and cannot be used. The main reason for this change is that most of the important features of XtraDB are nowadays implemented in InnoDB . As the MariaDB team is doing a lot more InnoDB development than ever before, we can’t anymore manage updating two almost identical engines. The InnoDB version in MariaDB contains the best features of MySQL InnoDB and XtraDB and a lot more. As the InnoDB on disk format is identical to XtraDB’s this will not cause any problems when upgrading to MariaDB 10.2
  • The old GPL client library is gone; now MariaDB Server comes with the LGPL Connector/C client library.

There are a lot of other new features, performance enhancements and variables in MariaDB 10.2 for you to explore!

I am happy to see that a lot of the new features have come from the MariadB community! (Note to myself; This list doesn’t include all contributors to MariadB 10.2, needs to be update.)

Thanks a lot to everyone that has contributed to MariaDB!

MariaDB 10.3-alpha released

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2017/04/mariadb-103-alpha-released.html

While most of the MariaDB developers have been working hard on getting MariaDB 10.2 out as GA, a small team, including me, has been working on the next release, MariaDB 10.3.

The theme of MariaDB 10.2 is complex operations, like window functions, common table expressions, JSON functions, the theme of MariaDB 10.3 is compatibility.

Compatibility refers to functionality that exist in other databases but have been missing in MariaDB:

In MariaDB 10.2 ORACLE mode was limited to removing MariaDB specific options in SHOW CREATE TABLE, SHOW CREATE VIEW and setting SQL_MODE to “PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ORACLE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER”.

In MariaDB 10.3, SQL_MODE=ORACLE mode allows MariaDB to understand a large subset of Oracle’s PL/SQL language. The documentation for what is supported is still lacking, but the interested can find what is supported in the test suite in the “mysql-test/suite/compat/oracle” directory.

If things go as planned, the features we will add to 10.3 prior to beta are:

Most of the above features are already close to be ready (to be added in future Alphas), so I expect that it willl not take many months before we can make a first MariaDB 10.3 beta!

This is in line what was discussed on the MariaDB developer conference in New York one week ago, where most attendees wanted to see new MariaDB releases more often.

MariaDB 10.3 can be downloaded here

Happy testing!

Applying the Business Source Licensing (BSL)

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2016/08/applying-business-source-licensing-bsl.html

I believe that Open Source is one of the best ways to develop software. However, as I have written in blogs before, the Open Source model presents challenges to creating a software company that has the needed resources to continually invest in product development and innovation.

One reason for this is a lack of understanding of the costs associated with developing and extending software. As one example of what I regard to be unrealistic user expectations, here is a statement from a large software company when I asked them to support MariaDB development with financial support:

As you may remember, we’re a fairly traditional and conservative company. A donation from us would require feature work in exchange for the donation. Unfortunately, I cannot think of a feature that I would want developed that we would be willing to pay for this year.”

This thinking is flawed on many fronts — a new feature can take more than a year to develop! It also shows that the company saw that features create value they would invest in, but was not willing to pay for features that had already been developed and was not prepared to invest into keeping alive a product they depend upon. They also don’t trust the development team with the ability to independently define new features that would bring value. Without that investment, a technology company cannot invest in ongoing research and development, thereby dooming its survival.

To be able to compete with closed source technology companies who have massive profit margins, one needs income.

Dual licensing on Free Software, as we applied it at MySQL, works only for a limited subset of products (something I have called ‘infrastructure software’) that customers need to combine with their own closed source software and distribute to their customers. Most software products are not like that. This is why David Axmark and I created the Business Source license (BSL), a license designed to harmonize producing Open Source software and running a successful software company.

The intent of BSL is to increase the overall freedom and innovation in the software industry, for customers, developers, user and vendors. Finally, I hope that BSL will pave the way for a new business model that sustains software development without relying primarily on support.

For those who are interested in the background, Linus Nyman, a doctoral student from Hanken School of Economics in Finland), and I worked together on an academic article on the BSL.

Today, MariaDB Corporation is excited to introduce the beta release of MariaDB MaxScale 2.0, our database proxy, which is released under BSL. I am very happy to see MariaDB MaxScale being released under BSL, rather than under an Open Core or Closed Source license.  Developing software under BSL will provide more resources to enhance it for future releases, in similar ways as Dual
Licensing did for MySQL. MariaDB Corporation will over time create more BSL
products. Even with new products coming under BSL, MariaDB Server will
continue to be licensed under GPL in perpetuity. Keep in mind that
because MariaDB Server extends earlier MySQL GPL code it is forever legally
bound by the original GPL license of MySQL.

In addition to putting MaxScale under BSL, we have also created a framework to make it easy for anyone else to license their software under BSL.

Here follows the copyright notice used in the MaxScale 2.0 source code:

/*
* Copyright (c) 2016 MariaDB Corporation Ab
*
* Use of this software is governed by the Business Source License
* included in the LICENSE.TXT file and at www.mariadb.com/bsl.
*
* Change Date: 2019-01-01
*
* On the date above, in accordance with the Business Source
* License, use of this software will be governed by version 2
* or later of the General Public License.
*/

Two out of three top characteristics of the BSL are already shown here: The Change Date and the Change License. Starting on 1 January 2019 (the Change Date), MaxScale 2.0 is governed by GPLv2 or later (the Change License).

The centrepiece of the LICENSE.TXT file itself is this text:

Use Limitation: Usage of the software is free when your application uses the Software with a total of less than three database server instances for production purposes.

This third top characteristic is in effect until the Change Date.

What this means is that the software can be distributed, used, modified, etc., for free, within the use limitation. Beyond it, a commercial relationship is required – which, in the case of MaxScale 2.0, is a MariaDB Enterprise Subscription, which permits the use of MaxScale with three or more database servers.

You can find the full license text for MaxScale at mariadb.com/bsl and a general BSL FAQ at mariadb.com/bsl-faq-adopting. Feel free to copy or refer to them for your own BSL software!

The key characteristics of BSL are as follows:

  • The source code of BSL software is available in full from day one.
  • Users of BSL software can modify, distribute and compile the source.
  • Code contributions are encouraged and accepted through the “new BSD” license.
  • The BSL is purposefully designed to avoid vendor lock-in. With vendor lock in, I here mean that users of BSL software are not depending on one single vendor for support, fixing bugs or enhancing the BSL product.
  • The Change Date and Change License provide a time-delayed safety net for users, should the vendor stop developing the software.
  • Testing BSL software is always free of cost.
  • Production use of the software is free of cost within the use limitation.
  • Adoption of BSL software is encouraged with use limitations that provide ample freedom.
  • Monetisation of BSL software is driven by incremental sales in cases where the use limitation applies.

Whether BSL will be widely adopted remains to be seen. It’s certainly my desire that this new business model will inspire companies who develop Closed Source software or Open Core software to switch to BSL, which will ultimately result in more Open Source software in the community. With BSL, companies can realize a similar amount of revenue for the company, as they could with closed source or open core, while the free of cost usage in core production scenarios establishes a much larger user base to drive testing, innovation and adoption.

Foundation report for 2015

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2016/02/foundation-report-for-2015.html

This is a repost of Otto Kekäläinen’s blog of the MariaDB foundations work in 2015.

The mariadb.org website had over one million page views in 2015, a growth of about 9% since 2014. Good growth has been visible all over the MariaDB ecosystem and we can conclude that 2015 was a successful year for MariaDB.

Increased adoption

MariaDB was included for the first time in an official Debian release (version 8.0 “Jessie”) and there has been strong adoption of MariaDB 10.0 in Linux distributions that already shipped 5.5. MariaDB is now available from all major Linux distributions including SUSE, RedHat, Debian and Ubuntu.

Adoption of MariaDB in other platforms also increased, and MariaDB is now available as a database option on, among others, Amazon RDS, 1&1, Azure and Juju Charm Store (Ubuntu).

Active maintenance and active development

In 2015 there were 6 releases of the 5.5 series, 8 releases of the 10.0 series and 8 releases of the 10.1 series. The 10.1 series was announced for general availability in October 2015 with the release of 10.1.8. In addition, there were also multiple releases of MariaDB Galera Cluster, and the C, Java and OBDC connectors as well as many other MariaDB tools. The announcements for each release can be read on the Mariadb.org blog archives with further details in the Knowledge Base.

Some of the notable new features in 10.1 include:

We are also proud that the release remains backwards compatible and it is easy to upgrade to 10.1 from any previous MariaDB or MySQL release.

10.1 was also a success in terms of collaboration and included major contributions from multiple companies and developers.

MariaDB events and talks

The main event organized by the MariaDB Foundation in the year was the MariaDB Developer Meetup in Amsterdam in October, at the Booking.com offices. It was a success with over 60 attendees

In addition there were about a dozen events in 2015 at which MariaDB Foundation staff spoke.

We are planning a new MariaDB developer event in early April 2016 in Berlin. We will make a proper announcement of this as soon as we have the date and place fixed.

Staff, board and members

In 2015 the staff included:

  • Otto Kekäläinen, CEO
  • Michael “Monty” Widenius, Founder and core developer
  • Andrea Spåre-Strachan, personal assistant to Mr Widenius
  • Sergey Vojtovich, core developer
  • Alexander Barkov, core developer
  • Vicențiu Ciorbaru, developer
  • Ian Gilfillan, documentation writer and webmaster

Our staffing will slightly increase as Vicențiu will start working full time in 2016 for the Foundation.

Our developers worked a lot on performance and scalability issues, ported the best features from new MySQL releases, improved MariaDB portability for platforms like ARM, AIX, IBM s390 and Power8, fixed security issues and other bugs. A lot of time was also invested in cleaning up the code base as the current 2,2 million lines of code includes quite a lot of legacy code in it. Version control and issue tracker statistics shows that the foundation staff made 528 commits, reported 373 bugs or issues and closed 424 bugs or other issues.

In total there were 2400 commits made by 91 contributors in 2015.

The Board of Directors in 2015 consisted of:

  • Chairman Rasmus Johansson, VP Engineering at MariaDB Corporation
  • Michael “Monty” Widenius, Founder and CTO of MariaDB Corporation
  • Jeremy Zawodny, Software Engineer at Craigslist
  • Sergei Golubchik, Chief Architect at MariaDB Corporation
  • Espen Håkonsen, CIO of Visma and Managing Director of Visma IT & Communications
  • Eric Herman, Principal Developer at Booking.com

MariaDB Foundation CEO Otto Kekäläinen served as the secretary of the board.

In 2015 we welcomed as new major sponsors Booking.com, Visma, Verkkokauppa.com. Acronis just joined to be a member for 2016. Please check out the full list of supporters.

If you want to help the MariaDB Foundation in the mission to guarantee continuity and open collaboration, please support us as with individual or corporate sponsorship.

What will 2016 bring?

We expect steady growth in the adoption of MariaDB in 2016. There are many migrations from legacy database solutions underway, and as the world becomes increasingly digital, there are a ton of new software projects starting that use MariaDB to for their SQL and no-SQL data needs. In 2016 many will upgrade to 10.1 and the quickest ones will start using MariaDB 10.2 which is scheduled to be released some time during 2016. MariaDB also has a lot of plugins and storage engines that are getting more and more attention, and we expect more buzz around them when software developers figure out new ways to manage data in fast, secure and scalable ways.

Foundation report for 2014

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2015/01/foundation-report-for-2014.html

2014 was a productive year for the MariaDB Foundation.

Here is a list of some of the things MariaDB Foundation employees have
accomplished during 2014:

The 3 full-time MariaDB Foundation developers have worked hard to make MariaDB better:

  • Some 260 commits
  • Some 25 reviews of code from the MariaDB community.
  • Fixed some 170 bugs and new features. For a full list, please check Jira.
  • Reported some 160 bugs.

Some of the main new features Foundation developers have worked on in 2014 are:

  • Porting and improving MariaDB on IBM Power8.
  • Porting Galera to MariaDB 10.1 as a standard feature.
  • Query timeouts (MDEV-4427)
  • Some coding and reviews of Parallel replication in MariaDB 10.1.
  • Working with code from Google and Eperi to get table space and table level encryption for InnoDB and XtraDB.
  • Allowing storage engines to shortcut group by queries (for ScaleDB) (MDEV-6080).
  • Moronga storage engine (reviews and porting help)
  • Connect storage engine (reviews and porting help)
  • Spider storage engine (merging code with MariaDB)
  • Query timeouts (MDEV-4427)
  • Merge INET6_ATON() and INET6_NTOA() from MySQL-5.6 (MDEV-4051)
  • Make “CAST(time_expr AS DATETIME)” compatible…SQL Standard) (MDEV-5372)
  • Command line variable to choose MariaDB-5.3 vs MySQL-5.6 temporal data formats (MDEV-5528)
  • Added syntax CREATE OR REPLACE to tables, databases, stored procedures, UDF:s and Views (MDEV-5491. The original TABLE code was done by Monty, other parts was done as a Google Summer Of Code project by Sriram Patil with Alexander Barkov as a mentor.
  • Upgraded the bundled Perl Compatible Regular Expression library (PCRE) to 8.34 (MDEV-5304)
  • Reduced usage of LOCK_open (MDEV-5403) (MDEV-5492) (MDEV-5587)
  • Ported patches from WebScaleSQL to MariaDB (MDEV-6039)
  • Better preallocation of memory (MDEV-7004)
  • Lock-free hash for table definition cache (MDEV-7324)
  • A lot of speed optimizations (changing mutex usage, better memory allocations, optimized bottlenecks, memory barriers etc).

The MariaDB documentation/knowledgebase:
has now 3685 articles about MariaDB and MySQL. Foundation employees added during 2014 223 new ones and did 6045 edits.

Some of the main new articles from us are:

We also have a lot of outside contributors and translators. Thanks a lot to all of you!

We also visited and talked about MariaDB at a lot of conferences:

In addition I had several talks at different companies who were moving big installations to MariaDB and needed advice.

We where also able to finalize the MariaDB trademark agreement between the MariaDB corporation and the MariaDB Foundation. This ensures that that anyone can be part of MariaDB development on equal terms. The actual trademark agreement can be found here.

On the personnel side, we were sad to see Simon Phipps leave the position as CEO of the Foundation.

One the plus side, we just had 2 new persons join the MariaDB foundation this week:

  • We are happy to have Otto Kekäläinen join us as the new CEO for the MariaDB foundation! Otto has in the past done a great work to get MariaDB into Debian and I am looking forward to his work on improving everything we do in the MariaDB foundation.
  • Vicențiu Ciorbaru has joined the MariaDB foundation as a developer. In the past Vicențiu added ROLES to MariaDB, as part of a Google Summer of Code project and he is now interested to start working on the MariaDB optimizer. A special thanks to Jean-Paul Smets at Nexedi for sponsoring his work at the foundation!

Last, I want to give my thanks to the MariaDB foundation members who made all the foundation work possible for 2014:

For 2015 we welcome a new member, Visma. Visma will be part of the foundation board and will help push MariaDB development forwards.

As the above shows, the MariaDB Foundation is not only a guarantee that MariaDB will always be an actively developed open source project, we also do a lot of development and practical work. This is however only possible if we have active members who sponsor our work!
If you are interested in helping us, either as a member, sponsor, or by giving development resources to the MariaDB foundation, please email us at foundation at mariadb.org !

MariaDB foundation trademark agreement

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/10/mariadb-foundation-trademark-agreement.html


We have now published the trademark agreement between the MariaDB Corporation (formerly SkySQL) and the MariaDB Foundation. This agreement guarantees that MariaDB Foundation has the rights needed to protect the MariaDB server project!

With this protection, I mean to ensure that the MariaDB Foundation in turn ensures that anyone can be part of MariaDB development on equal terms (like with any other open source project).

I have received some emails and read some blog posts from people who are confusing trademarks with the rights and possibilities for community developers to be part of an open source project.

The MariaDB foundation was never created to protect the MariaDB trademark. It was created to ensure that what happened to MySQL would never happen to MariaDB: That people from the community could not be part of driving and developing MySQL on equal terms as other companies.

I have personally never seen a conflict with having one company own the trademark of an open source product, as long as anyone can participate in the development of the product! Having a strong driver for an open source project usually ensures that there are more full-time developers working on a project than would otherwise be possible. This makes the product better and makes it useful for more people. In most cases, people are participating in an open source project because they are using it, not because they directly make money on the project.

This is certainly the case with MySQL and MariaDB, but also with other projects. If the MySQL or the MariaDB trademark would have been fully owned by a foundation from a start, I think that neither project would have been as successful as they are! More about this later.

Some examples of open source projects that have the trademark used or owned by a commercial parent company are WordPress (wordpress.com and WordPress.org) and Mozilla.

Even when it comes to projects like Linux that are developed by many companies, the trademark is not owned by the Linux Foundation.

There has been some concern that MariaDB Corporation has more developers and Maria captains (people with write access to the MariaDB repositories) on the MariaDB project than anyone else. This means that the MariaDB Corporation has more say about the MariaDB roadmap than anyone else.

This is right and actually how things should be; the biggest contributors to a project are usually the ones that drive the project forward.

This doesn’t, however, mean that no one else can join the development of the MariaDB project and be part of driving the road map.

The MariaDB Foundation was created exactly to guarantee this.

It’s the MariaDB Foundation that governs the rules of how the project is developed, under what criteria one can become a Maria captain, the rights of the Maria captains, and how conflicts in the project are resolved.

Those rules are not yet fully defined, as we have had very few conflicts when it comes to accepting patches. The work on these rules have been initiated and I hope that we’ll have nice and equal rules in place soon. In all cases the rules will be what you would expect from an open source project. Any company that wants to ensure that MariaDB will continue to be a free project and wants to be part of defining the rules of the project can join the MariaDB Foundation and be part of this process!

Some of the things that I think went wrong with MySQL and would not have happened if we had created a foundation similar to the MariaDB Foundation for MySQL early on:

  • Claims that companies like Google and Ebay can’t get their patches into MySQL if they don’t pay (this was before MySQL was bought by Sun).
  • Closed source components in MySQL, developed by the company that owns the trademark to MySQL (almost happened to MySQL in Sun and has happened in MySQL Enterprise from Oracle).
  • Not giving community access to the roadmap.
  • Not giving community developers write access to the official repositories of MySQL.
  • Hiding code and critical test cases from the community.
  • No guarantee that a patch will ever be reviewed.

The MariaDB Foundation guarantees that the above things will never happen to MariaDB. In addition, the MariaDB Foundation employs people to perform reviews, provide documentation, and work actively to incorporate external contributions into the MariaDB project.

This doesn’t mean that anyone can push anything into MariaDB. Any changes need to follow project guidelines and need to be reviewed and approved by at least one Maria captain. Also no MariaDB captain can object to the inclusion of a given patch except on technical merits. If things can’t be resolved among the captains and/or the user community, the MariaDB Foundation has the final word.

I claimed earlier that MariaDB would never have been successful if the trademark had been fully owned by a foundation. The reason I can claim this is that we tried to do it this way and it failed! If we would have continued on this route MariaDB would probably be a dead project today!

To be able to understand this, you will need a little background in MariaDB history. The main points are:

  • Some parts of the MariaDB team and I left Sun in February 2009 to work on the Maria storage engine (now renamed to Aria).
  • Oracle started to acquire Sun in April 2009.
  • Monty Program Ab then hired the rest of the MariaDB engineers and started to focus on MariaDB.
  • I was part of founding SkySQL in July 2010, as a home for MySQL support, consultants, trainers, and sales people.
  • The MariaDB Foundation was announced in November 2012.
  • Monty Program Ab and SkySQL Ab joined forces in April 2013.
  • SkySQL Ab renamed itself to MariaDB Corporation in October 2014

During the 4 years before the MariaDB foundation was formed, I had contacted most of the big companies that had MySQL to thank them for their success and to ask them to be part of MariaDB development. The answers were almost all the same:

We are very interested in you succeeding, but we can’t help you with money or resources until we are using MariaDB ourselves. This is only going to happen when you have proved that MariaDB will take over MySQL.”

It didn’t help that most of the companies that used to pay for MySQL support had gotten scared of MySQL being sold to Oracle and had purchased 2-4 year support contracts to protect themselves against sudden price increases in MySQL support.

In May 2012, after 4 years and spending close to 4 million Euros of my own money, to make MariaDB possible, I realized that something would have to change.

I contacted some of the big technology companies in Silicon Valley and asked if they would be interested in being part of creating a MariaDB Foundation, where they could play bigger roles. The idea was that all the MariaDB developers from Monty Program Ab, the MariaDB trademark and other resources would move to the foundation. For this to happen, I need guarantees that the foundation would have resources to pay salaries to the MariaDB developers for at least the next 5 years.

In the end two companies showed interest in doing this, but after months of discussions they both said that “now was not yet the right time to do this”.

In the end I created the MariaDB Foundation with a smaller role, just to protect the MariaDB server, and got some great companies to support our work:

  • Booking.com
  • SkySQL (2 years!)
  • Parallels (2 years!)
  • Automattic
  • Zenimax

There was also some smaller donations from a variety of companies.

See the whole list at https://mariadb.org/en/supporters.

During this time, SkySQL had become the biggest supporter of MariaDB and also the biggest customer of Monty Program Ab. SkySQL provided front line support for MySQL and MariaDB and Monty Program Ab did the “level 3” support (bug fixes and enhancements for MariaDB).

In the end there were only two ways to go forward to secure the financing of the MariaDB project:

a) Get investors for Monty Program Ab
b) Sell Monty Program Ab.

Note that neither of the above options would have been possible if Monty Program Ab had not owned the MariaDB trademark!

Selling to SkySQL was in the end the right and logical thing to do:

  • They have good investors who are committed to SkySQL and MariaDB.
  • Most of the people in the two companies already know each other as most come from the old MySQL team.
  • The MariaDB trademark was much more known than SkySQL and by owning it would make it much easier for SkySQL to expand their business.
  • As SkySQL was the biggest supporter of the MariaDB project this felt like the right thing to do.

However, to ensure the future of the MariaDB project, SkySQL and Monty Program Ab both agreed that the MariaDB Foundation was critically needed and we had to put a formal trademark agreement in place. Until now there was just a verbal promise for the MariaDB trademarks to the foundation and we had to do this legally right.

This took, because of a lot of reasons too boring to bring up here, much longer time than expected. You can find the trademark agreement publicly available here.

However, now this is finally done and I am happy to say that the future of MariaDB, as an open source project, is protected and there will never again be a reason for me to fork it!

So feel free to join the MariaDB project, either as a developer or community contributor or as a member of the MariaDB Foundation!

Why SkySQL becoming MariaDB Corporation will be good for the MariaDB Foundation

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/10/why-skysql-becoming-mariadb-corporation.html

Today SkySQL is changing its name to MariaDB Corporation. This is something that I had both anticipated and I think it’s a great step for MariaDB.

I wanted here to to share my thoughts on how this change affects the MariaDB community.

The short version: As the MariaDB Corporation is the main driving force behind the development of the MariaDB server and the biggest support provider for it, it makes sense to give it a name that clearly communicates this fact.  The name change doesn’t of course stop the company to continue it’s excellent support for MySQL.

For MariaDB users and customers, the name change should not affect them in any way, except that it will make it easier for them to find more information about MariaDB as there is fewer names involved.

For the MariaDB Foundation, there is no big change either. After all, the MariaDB foundation was created to protect the MariaDB server, not the MariaDB trademark as such.

The longer version, for those who want more context, starts with some history.

After the Sun acquisition of MySQL AB, I started Monty Program to work on a branch of the MySQL code base named MariaDB after my youngest daughter. In 2010, I was one of the founders behind SkySQL as an alternative service provider for Oracle MySQL customers. Last year SkySQL merged with Monty Program to increase the support behind MariaDB. As the adoption of MariaDB has grown, SkySQL’s business has evolved to provide products and services to over 2 million MariaDB users.

Talking about a company called SkySQL, that provides subscription services for MariaDB while also supporting MySQL, was becoming too complicated and confusing. To make things simpler, and reinforce the company’s focus, I both agreed and recommended that a name change was due.

Having the company using the MariaDB name will also help ensure that the company will focus on MariaDB and put even more development resources on MariaDB.

I assume that some people will wonder if the MariaDB Foundation is needed anymore?  I think it’s needed now more than ever to ensure that the MariaDB server is always guaranteed to be open for development by the community! The Foundation will continue in its role at the center of the open, independent and dynamic community that drives the adoption of MariaDB.  The Foundation will also need more paying members to be able to continue interacting with the ever growing external MariaDB developer community.

We’ve been working with the team at MariaDB Corporation (formerly SkySQL!) and have come to agreement on how the trademark will be used. Details of this will be published soon on http://www.mariadb.org.

I continue to believe passionately that the world needs an open, actively developed relational database platform that is adopting to your needs and is better suited for modern web scale application development than other alternatives. MariaDB is that platform. We, the MariaDB developers and all other people at the MariaDB foundation and MariaDB Corporation, are all excited that so many of you are choosing MariaDB. We are all committed to making this choice a success.

MariaDB would not be what it is today without your support!  Thank you for this!

Logs and more logs, who has time to read them ?

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/08/logs-and-more-logs-who-has-time-to-read.html

While working on some new features in MariaDB 10.1, I noticed that a normal user couldn’t disable the slow query log, which I thought was a bit silly.

While implementing and documenting this feature, I noticed that the information about the different logs is quite spread around and it’s not that trivial to find out how to enable/disable the different logs.

To solve this, I created a new MariaDB kb entry, “Overview of the MariaDB logs that I hope MariaDB and MySQL users will be find useful.

Here follows a copy of the kb entry.
If you have any comments or things that could be added, please do it in the kb entry so that it will benefit as many as possible!

Overview of MariaDB logs

There are many variables in MariaDB that you can use to define what to log and when to log.

This article will give you an overview of the different logs and how to enable/disable logging to these.

The error log

  • Always enabled
  • Usually a file in the data directory, but some distributions may move this to other locations.
  • All critical errors are logged here.
  • One can get warnings to be logged by setting log_warnings.
  • With the mysqld_safe –syslog option one can duplicate the messages to the system’s syslog.

General query log

  • Enabled with –general-log
  • Logs all queries to a file or table.
  • Useful for debugging or auditing queries.
  • The super user can disable logging to it for a connection by setting SQL_LOG_OFF to 1.

Slow Query log

The binary log

Examples

If you know that your next query will be slow and you don’t want to log it in the slow query log, do:

SET LOCAL SLOW_QUERY_LOG=0;

If you are a super user running a log batch job that you don’t want to have logged (for example mysqldump), do:

SET LOCAL SQL_LOG_OFF=1, LOCAL SLOW_QUERY_LOG=0;

mysqldump in MariaDB 10.1 will do this automatically if you run it with the –disable-log-querys option.

See also

For your eyes only (or Adding better encryption to MariaDB)

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/05/for-your-eyes-only-or-adding-better.html

With MariaDB and MySQL we have always taken security seriously.

In MariaDB 10.0 we added roles to make it easier to administrate many users.

MariaDB and MySQL has also many different encryption functions, but what has been neglected in the past is to make encryption easy to use.

This is now about to change.

I recently had a meeting with Elmar Eperiesi-Beck from eperi about simplifying the usage of encryption. We agreed to start a close collaboration around encryption for MariaDB with an agenda to deliver something very secure and easy to use soon.

The things we are initially focusing on are:

  • Adding column level encryption.
    • This will be done at the field level, invisible for the storage engine.
  • Block level encryption for certain storage engines.
    • Initially we will target InnoDB and XtraDB.

MariaDB will initially support storing the security keys on a remote file systems, accessed only at startup, and later also support using a daemon for key management.

The above will make your encrypted data in MariaDB secure for:

  • Database users that has user access to the database.
  • Anyone that would attempt to steal the hard disk with the database.

By using the daemon approach a MariaDB installation will even be secure against database administrators, as they will not have any way to access the key data.

eperi has 11 years of experience with encryption and I am very happy to see them engage with MariaDB to provide better security to MariaDB users!

conference, conferences…

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/04/conference-conferences.html

It’s now 3 weeks since the MariaDB & MySQL community day in Santa Clara.

Thanks everyone for coming!

Personally I think it was a success, especially considering the short
time we had to put it together! 11 great speakers and 100+ participants.

We had a small issue with the camera that we used to record all talks: The slides are not very visible. We have been working on editing the videos for all talks to fix this and will update the conference page with both slides and videos for the talks as soon as the editing is finished. The first video is already available! Hope you like it!

We plan to have another MariaDB & MySQL community day in mid November in Florida and another one in Europa after the summer.

Please contact me at ‘foundation ‘at’ mariadb (dot) org’ if you want to participate in any of these events!

For the Santa Clara community day we didn’t have time to involve the community in selecting the speakers. For the next community days we will work openly with the MariaDB community to select the speakers and plan the event!

I am now attending the LinuxFest Northwest conference where I have a talk about “MariaDB 10.0”, which is now declared stable, and “How to make money with open source”. Look me up if you want to talk with me about these topics or if you want to discuss, sponsor, or be part of developing any of the features we plan for MariaDB 10.1.

Scheduled talks for the MariaDB & MySQL community event in Santa Clara

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/03/scheduled-talks-for-mariadb-mysql.html


We have now a great set of talks for the MariaDB & MySQL community event in Santa Clara on 3rd of April!

You can find the current scheduled talks here.

Initially we had a few additional talks by other community members, who however had to cancel because of contractual reasons with Percona Live.

We can still fit in a few extra talks by adjusting the schedule. If you want to present something that you think is important for most of the MariaDB and MySQL community, please connect with us at ‘foundation’ ‘at’ mariadb (dot) org’ or add a comment to this blog.

This is going to be the best event this year if you want to know more about MariaDB and what is happening around MariaDB and MySQL!

You will not only be able to attend great talks, you will also get to talk directly with many of the original creators of MariaDB and MySQL!

Don’t worry if you happen to miss some of the talks. We plan to put all talks on YouTube, so that you can view them later at your convenience.

Because of the rush of setting up this conference we did not have time to have a proper community board choose and review the talks. We plan to fix this for the next MariaDB & MySQL community event. The vision is to organize 2-4 free community events per year where all companies in the MariaDB and MySQL community can participate on equal terms.

We are thinking about having the next MariaDB foundation conference in Europa and the following one on the USA east coast. These will be standalone events later this year.

Please contact me if you want to be part of organizing or participate in these or future events

MariaDB & MySQL community event 2014 in Santa Clara

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/03/mariadb-mysql-community-event-2014-in.html

I am happy to announce that the MariaDB Foundation is organising a MariaDB & MySQL community event in Santa Clara on Thursday the 3rd of April. The venue is the Hilton Santa Clara hotel, a short walk from the Percona Live 2014 event.

The community event is hosted by the MariaDB Foundation with support from AccelerationDB. This is a free community event to complement the Percona Live event. The community event will be a full day focusing on many things that are not presented at Percona Live.

If you are coming to the community event, why not also go to the expo hall ($75) in the convention center as well and support all the vendors there.

We were partly inspired to do this by Baron Schwartz blog post announcing the Percona Performance conference in 2009. We believe that there should be more free conferences about MariaDB and MySQL that will allow anyone to participate. Personally I would also like to see more conferences where the speakers are drawn from all the people that create and continue to innovate in the technology, rather than conferences where a majority of the speakers come from a single company.

The themes for this community event are MariaDB 10.0 GA, High availability and Performance.

In the next MariaDB & MySQL community event we plan to also host a MariaDB and MySQL bootcamp. We where not able to do it this year because of lack of funding and time (if anyone would like to help us do it this time, please contact me!).

We already have a lot of proposed talks from MariaDB developers, Galera developers and some other active community members.

Topics include:

  • MariaDB 10.0 GA, the new features
  • Spider, storage engine with built in sharding
  • Connect, storage engine that allows you to talk with the world (Oracle, PostgreSQL, files etc…)
  • Galera overview and case studies
  • Show case how to insert continuously 1M rows/seconds while doing concurrent reads with MariaDB and ScaleDB
  • How we optimized MariaDB; True case studies from the programmers vault
  • MySQL MHA and Continuent Tungsten shootout 2.0
  • MariaDB multi source replication capability
  • Scaling MySQL (case study)
  • Using ROLES to get more security

We are still looking for more speakers from different companies to make this the best free and community driven MariaDB and MYSQL event in 2014! If you want to talk at the community event, please send an email to ‘foundation ‘at’ mariadb (dot) org’.

We will also organise a dinner that will happen on the same Thursday at the Taste restaurant, a very cool place right around the corner from Birks and Pedros. As the event is free, you will need to pay for the food but we hope to get some further sponsorships for some free drinks (in addition to the inevitable black vodka).

You can register to attend the conference and/or dinner here.

You can use the ‘foundation ‘at’ mariadb (dot) org’ email address if you want to sponsor the community event. As MariaDB foundation is a non profit organisation, all sponsorships will go to pay for the event venue, hotel and travel for speakers (who could not otherwise afford to attend); in the event there’s anything left over the Foundation will use it for further community activities.

The final piece of the puzzle

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2014/02/the-final-piece-of-puzzle.html

I just pushed the new CREATE OR REPLACE TABLE syntax into MariaDB 10.0, for the soon to be released 10.0.8-gamma (RC). (Before we had only CREATE OR REPLACE for views)

When using the new syntax, the CREATE statement will automatically DROP the old table if it existed.

This is the last feature (which is also a bug fix) depending on me that needed to be pushed before we could release 10.0 gamma (RC). Next, I will start working on speed optimizations and features in 10.1.

The CREATE OR REPLACE TABLE syntax was needed to make global transaction id (GTID) work reliably with CREATE … SELECT, both in statement-based and row-based replication.

We (Kristian Nielsen and I) didn’t think that the solution used in MySQL 5.6 (to give an error message “CREATE TABLE … SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1”) when using CREATE … SELECT was good enough. We wanted something better.

The solution now implemented ensures that we can store DROP TABLE + CREATE TABLE + INSERT INTO TABLE under one GTID.  The GTID entry can also be re-executed in case of slave failure during execution.

While developing CREATE OR REPLACE, I noticed several possible problems in the replication code that were not properly taken care of (neither in MySQL or MariaDB):

  • Having different storage engines on master and slave for any table would not work well together with the GTID code and would cause inconsistencies between GTID’s in the master and slave.
  • If CREATE SELECT would fail on the slave, there was no way the slave could continue as it could not roll back the CREATE statement.
  • Slave failure during a DROP TABLE would make the slave stop and it would be unable to restart without user intervention.
  • Having different replication modes on master and slave (like statement based on master and row based on slave) would cause inconsistencies in GTID generation.
To fix these and make the slave more robust, I introduced the following things:
  • While the slave is running a transaction, it will treat all tables as transactional tables when it comes to the caching of statements for the binary log.
  • Commits will only happen when the binary log says so.  This ensures that the slave will log and commit changes in the same order as the master, independent of the storage engine used.
  • CREATE is replayed on the slave as CREATE OR REPLACE.  This makes CREATE SELECT statements repeatable on the slave.
  • DROP TABLE statements are replayed on the slave as DROP TABLE IF EXISTS.  This makes DROP TABLE statements repeatable on the slave.
  • One can now have a mix of DDL and DML statments in the binary log (we use this fact to handle CREATE … SELECT which is logged as BEGIN ; DROP; CREATE ; INSERTS ; COMMITS). This can be very useful also for other things in the future.
The end effect of the above is that the slave in 10.0.8 is going to be more robust than ever before.  In addition, the replication mode will not affect how GTID’s are generated anymore.

I also added a variable ‘slave-ddl-exec-mode’ that one can set to STRICT if one prefers the old behavior that the the slave will fail if the DDL would fail on the slave for any reason, including if it fails to repeat a command on restart.

As a bonus, I also fixed that if one used LOCK TABLES with CREATE OR REPLACE TABLE, the lock will be held while the table is deleted and re-created and the lock is then added to the new table. This makes it possible to replace a table with an empty one without other users noticing it.

Here is an extract from the documentation of CREATE OR REPLACE :

The CREATE OR REPLACE TABLE syntax was added in MariaDB 10.0.8 to make replication more robust if it has to rollback and repeat statements like CREATE … SELECT on slaves.

CREATE OR REPLACE TABLE table_name (a int);

is basically the same as:

DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (a int);

with the following exceptions:

  • If table_name was locked with LOCK TABLES it will continue to be locked after the statement.
  • Temporary tables are only dropped if the TEMPORARY key word was used. (With DROP TABLE temporary tables are preferred to be dropped before normal tables).

MariaDB Foundation achivements 2012-12 – 2013-09

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2013/10/mariadb-foundation-achivements-2012-12.html

I recently read some comments that we at the MariaDB Foundation have not been very open about what we are doing.

We are very sorry about this. The problem is not that we are secret about what we are doing, the problem is that not many of us working at the MariaDB Foundation are very active bloggers.

I will try to address this concern by starting a monthly blog about the MariaDB development that MariaDB Foundation employees are doing. This together with Simon Phipps’ state of the sea lion blog, which is published on the MariaDB Foundation blog, should hopefully give everyone a better idea of what we are doing.

At the MariaDB Foundation we are now 4 people working full time on code, documentation, and spreading MariaDB. Here are the things we have done since the Foundation was formed in December 2012:

Major development efforts based on code from the community:

  • MDEV-4568 Port Percona response time distribution as audit plugin
  • MDEV-4911 Add KILL query id, and add query id information to process list
  • MDEV-4684 Enhancement request: –init-command support for mysqlslap

Major new development efforts:

  • MDEV-4702 Reduce usage of LOCK_open
  • MDEV-4011 Per thread memory usage
  • MDEV-4902 sql_yacc.yy incompatible with bison 3
  • MDEV-4950 mysql_upgrade fails with disabled InnoDB (a bug that is not fixed in MySQL)
  • MDEV-21 LGPL C client library
  • LGPL Java client library.
  • Some work on a new LGPL ODBC driver for MySQL and MariaDB.
  • Better error messages (the error code in an error message now has descriptive text)
  • Faster connect (lots of small fixes).
  • MDEV-3941 CREATE TABLE xxx IF NOT EXISTS should not block if table exists.

The MariaDB Foundation has also done a lot of work on the merge of MySQL 5.6 to MariaDB 10.0. The most notable features done by the Foundation are:

  • All InnoDB changes
  • All performance schema changes
  • Cleaned up the HANDLER interfaces (to make life easier for storage engine writers).
  • TRANSACTION READ ONLY | READ WRITE
  • MySQL-5.6 TIME/TIMESTAMP/DATETIME data types with fractional seconds
  • MySQL-5.6 temporal literals
  • utf16le character set
  • TO_BASE64 and FROM_BASE64 SQL functions
  • MySQL-5.6 collation customization improvements (in progress)

Note that the above is not a complete list of what is in MariaDB 10.0!

We are working with external entities and contributors to get features into MariaDB. Some of these have required a lot of work on the MariaDB Foundation side:

  • CONNECT storage engine
    • Porting to various operating systems (*BSD, Linux flavors, Solaris)
    • Porting to unixODBC
    • Fixing compiler warnings
    • Testing and writing mtr tests
    • Checking, reporting and fixing valgrind warnings
    • Reviewing the author’s code
    • Adding MySQL/MariaDB security support (FILE privilege and secure_file_priv)
    • Adding ConnectSE support in embedded server
    • Globalization: making ConnectSE support multiple MariaDB character sets
    • Discussing many aspects of better integration of ConnectSE into MariaDB with the author.
    • Packaging (RPMs, DEBs, MSI)
  • TokuDB storage engine
    • Review of code
    • Some small integration changes.
  • Parallel slave
  • Multi source replication
    • Worked closely with the original author to extend the code from a working proof of concept to production level code.
  • MDEV-4438 Spider storage engine
    • Continuously working with Kentoku
  • MDEV-4425 REGEXP enhancements (a Google Summer of Code project, in progress)
    • Mentoring Sudheera Palihakkara (the student)
    • Student’s code reviews (for RLIKE and RLIKE_REPLACE)
    • Code enhancements proposals
    • CMake related enhancements
    • Wrote RLIKE_SUBSTR and RLIKE_INSTR functions
  • Added support for –crash-script in mysqld_safe.

A lot of basic system maintenence:

  • Reported a lot of bugs (this is not a full list):
    • MDEV-4489 Replication of big5, cp932, gbk, sjis strings makes wrong values on slave
    • MDEV-4634 Crash in CONVERT_TZ
    • MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DATE(‘2020′,’%Y’))
    • MDEV-4651 Crash in my_decimal2decimal in a ORDER BY query
    • MDEV-4652 Wrong result for CONCAT(GREATEST(TIME(’00:00:01′),TIME(’00:00:00′))
    • MDEV-4653 Wrong result for CONVERT_TZ(TIME(’00:00:00′),’+00:00′,’+7:5′)
    • MDEV-4654 Wrong warning for CAST(TIME(’10:20:30′) AS DATE) + INTERVAL 1 DAY
    • MDEV-4655 Difference in how GREATEST and COALESCE process arguments
    • MDEV-4714 Wrong TIME value from a long string
    • MDEV-4724 MAKETIME does not preserve microseconds
    • MDEV-4838 Wrong metadata for DATE_ADD(‘string’, INVERVAL)
    • MDEV-4841 “Wrong character set of ADDTIME() and DATE_ADD()”
    • MDEV-4842 STR_TO_DATE does not work with UCS2/UTF16/UTF32
    • MDEV-4843 Wrong data type for TIMESTAMP(‘2001-01-01′,’10:10:10’)
    • MDEV-4844 Redundant warning in SELECT TIME(’00:00:00.’)
    • MDEV-4848 Wrong metadata or column type for LEAST(1.0,’10’)
    • MDEV-4850 MATCH uses a wrong fulltext index with mismatching collation
    • MDEV-4857 Wrong result of HOUR(‘1 00:00:00’)
    • MDEV-4858 Wrong error message for a huge unsigned value inserted into a TIME column
    • MDEV-4859 Wrong value and data type of “SELECT MAX(time_column) + 1 FROM t1”
    • MDEV-4861 TIME/DATETIME arithmetics does not preserve INTERVAL precision
    • MDEV-4862 Wrong result of MAKETIME(0, 0, 59.9)
    • MDEV-4863 COALESCE(time) returns wrong results in numeric context
    • MDEV-4868 Length of CURRENT_TIME is too long
    • MDEV-4869 Wrong result of MAKETIME(0, 0, -0.1)
    • MDEV-4870 Wrong values of CASE, COALESCE, IFNULL on a combination of different temporal types
    • MDEV-4871 Temporal literals do not accept nanoseconds
    • MDEV-4872 Inserting a huge number into a TIME column produces a wrong result
    • MDEV-4898 Too many warnings when inserting a bad value into a TIMESTAMP column
    • MDEV-4900 Bad value inserted into a TIME field on truncation
  • Fixed a LOT of bugs (the following is not a full list):
    • MDEV-4489 Replication of big5, cp932, gbk, sjis strings makes wrong values on slave
    • MDEV-4512 Valgrind warnings in my_long10_to_str_8bit on INTERVAL and DATE_ADD with incorrect types
    • MDEV-4518 Server crashes in is_white_space when it’s run with query cache…
    • MDEV-4634 Crash in CONVERT_TZ
    • MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DATE(‘2020′,’%Y’))
    • MDEV-4639 my_datetime_to_str: Conditional jump or move depends on uninitialized value
    • MDEV-4651 Crash in my_decimal2decimal in a ORDER BY query
    • MDEV-4652 Wrong result for CONCAT(GREATEST(TIME(’00:00:01′),TIME(’00:00:00′))
    • MDEV-4653 Wrong result for CONVERT_TZ(TIME(’00:00:00′),’+00:00′,’+7:5′)
    • MDEV-4724 MAKETIME does not preserve microseconds
    • MDEV-4804 Date comparing false result
    • MDEV-4819 Upgrade from MySQL 5.6 does not work
    • MDEV-4841 “Wrong character set of ADDTIME() and DATE_ADD()”
    • MDEV-4843 Wrong data type for TIMESTAMP(‘2001-01-01′,’10:10:10’)
    • MDEV-4863 COALESCE(time) returns wrong results in numeric context
    • MDEV-4871 Temporal literals do not accept nanoseconds
    • Fixed MySQL bug #69861 LAST_INSERT_ID is replicated incorrectly if replication filters are used.
    • Fixed issues with partitions and create temporary table SELECT
    • If one declared several continue handler for the same condition on different level of stored procedures, all of them where executed. Now we only execute the innermost of them (the most relevant).
    • Don’t abort InnoDB if one can’t allocate resources for AIO
    • Added some fixes that should make MyISAM & Aria REPAIR work with more than 4G records.
    • MDEV-4352 LOAD DATA was not multi-source safe
    • MDEV-4394 Sporadic failures in multi_source tests
    • MDEV-4033 Unable to use slave’s temporary directory /tmp – Can’t create/write to file ‘/tmp/SQL_LOAD-‘ (Errcode: 17 “File exists”)
    • Increase default value of max_binlog_cache_size and max_binlog_stmt_cache_size to ulonglong_max.
    • MDEV-4319 mysqlbinlog output ambiguous escaping (patch by Ian Good)
    • OPTION is now a valid identifier (not a reserved word)
    • Fixed issue with LOCK TABLE + ALTER TABLE ENABLE KEYS + SHOW commands.
    • MDEV-628 Querying myisam table metadata may corrupt the table.
    • Replace with an auto_increment primary key and another unique key didn’t replicate correctly with REPLACE.
    • BUG#51763 Can’t delete rows from MEMORY table with HASH key.
    • MDEV-389 Server crash inserting record on a temporary table after truncating it.
    • Fixed crashing bug in GROUP_CONCAT with ROLLUP
    • MDEV-4013 Password length in replication setup
    • MDEV-4009 main.delayed sporadically fails with “query ‘REPLACE DELAYED t1 VALUES (5)’ failed: 1317: Query execution was interrupted”
    • Fixed CREATE TABLE IF EXIST generates warnings instead of errors
    • Removed lock wait timeout warning when using CREATE TABLE IF EXISTS
  • Code cleanups and code rewrites.
  • Continued work to ensure that MariaDB works on many operating systems.
    • Did lots of small fixes for Solaris.
  • Review of code from the community.
  • Removed valgrind and compiler warnings.
  • Added new test cases.
  • QA & benchmarking.

Talked about MariaDB and Open Source/Free Software at a lot of conferences:

  • Percona Live London 2012
  • SkySQL Roadshow, Stuttgart
  • Vista developer Conference, Riga
  • PHP Conference, Pasila, Finland
  • SkySQL Roadshow, Amsterdam
  • Percona Live, Santa Clara
  • SkySQL Roadshow, London
  • MySQL Meetup, NYC
  • Suomen Arkistointi Seminaari, Mikkeli, Finland
  • SkySQL Roadshow, Berlin
  • Ali Baba Conference, Hangzhou, China
  • OSCON, Portland
  • Debconf, Switzerland
  • Froscon, St Augustin, Germany
  • Haaga-Helia Talks, Finland
  • IDCEE Conference, Ukraina
  • Latinux, Brazil & Peru
  • Highload Conference, Moscow
  • Foscon, Gotenburg, Sweden
  • Percona Live 2013, London

Other things people from the MariaDB foundation have done:

  • Created +200 and updated +3000 articles in the MariaDB Knowledge Base. Some of the notable things are:
    • Complete documentation of all system variables
    • Complete documentation of all status variables
    • Clients and utilities
    • Geographic functions
    • Performance schema
    • Log files
    • Internationalization, character sets, collation
    • XtraDB and InnoDB content
    • Global Transaction ID (from Kristian’s content)
    • Triggers
    • Stored Functions
    • Stored Procedures
    • Views
    • Dynamic Columns
    • Fulltext indexes
    • Replication
    • Date and time
    • Updating fill_help_tables.sql so that MariaDB HELP output will point
    • the Knowledge Base
    • Reformatted most articles for improved readability
    • Replaced many of the external links with links to newly created internal articles
  • Visited a lot of companies to talk about the MariaDB Foundation.
  • Worked closely with OS distributions to get MariaDB accepted as a standard part of their distributions. Partly thanks to the MariaDB Foundation, the following distributions now have MariaDB packages:
    • GNU/Linux KDu
    • Mageia
    • Gentoo
    • openSUSE
    • Slackware
    • Arch Linux
    • ALTLinux
    • MariaDB Debian Live Images
    • Parabola GNU/Linux
    • TurboLinux
    • The Chakra Project
    • Fedora
    • Red Hat Enterprise Linux
    • FreeBSD
    • OpenBSD
    • Debian now has MariaDB packages in ‘unstable’.
    • For a full list and to see which distributions are replacing MySQL with MariaDB, see this page.
  • Updated SHOW AUTHORS and SHOW CONTRIBUTORS to give more merit to active contributors and sponsors.

We are very thankfull to the MariaDB Foundation members and supporters that have made this work possible!

The current members are:

If you want the MariaDB foundation to do even more work like the above, you should ensure that your company becomes member in the MariaDB Foundation! You can also sponsor the foundation as a private person!

MariaDB and MySQL room at Froscon

Post Syndicated from Michael "Monty" Widenius original http://monty-says.blogspot.com/2013/08/mariadb-and-mysql-room-at-froscon.html

Froscon, the German Free Software and Open Source conference, is happening again this weekend in University of Applied Sciences Bonn-Rhein-Sieg.

This year we have a MariaDB/MySQL room, C 217, where we can meet, discuss and present MariaDB and MySQL related issues.

I will probably be in the room or at the MariaDB booth most of the time. I welcome people to come to the room with their database problems so that we can try to solve them ‘live’ (assuming that the Internet is reliable enough).

I will also hold a keynote, How to make money from Open Source today. This includes some information about Business source, a topic that has been discussed in many places lately

If you are looking for information about MariaDB, MySQL, how to make money with Open Source or just have a craving for black vodka, seek me out at Froscon!