MariaDB: Replaces Mysql, gives you more (without effort!)

By Freeaqingme on Saturday 1 January 2011 20:59 - Comments (21)
Category: Linux, Views: 22.729

Mysql. It seems these days everybody doing something in the IT branch has used it, or still does. However, there are some problems: you only get the fun stuff (like clustering etc) if you pay big time, its development is stalling (more and more core developers are leaving), a seemingly evil company is running it, and last but not least, the community is being excluded.

There is a solution though. It's called MariaDB. MariaDB is a fork of Mysql, and was started by Michael Widenius (aka Monty), the original author of Mysql. MariaDB is a project that actually is as open to the community as can be, releases all its code under a truly open license like the BSD/MIT license whenever possible and is able to add new functionality at a much faster pace than Oracle does. Last but not least, MariaDB is 100% backwards compatible with Mysql, and therefore can be used as a drop-in replacement.


I assume the first thing you want to do now is replace Mysql on your server/pc with Mariadb, but if you want to read/know more about MariaDb first, you can always check out the source code, see its launchpad page, checkout the contribute page, join all mariadb experts on Freenode (irc) or just leave a comment below.

So, besides assuming that you want to replace your installation of Mysql with MariaDB, I'll make some more assumptions. I assume that...
  • You backed up the universe & everything around it
  • Mysql was running fine before upgrading
  • Mysql's version is either 5.0 or 5.1
  • You're running Centos 5.5 (chances are that on different distros this will work just as well)
Installing it is relatively simple, we stop & remove mysql, we download & extract mariadb, install another version of the init script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
# /etc/init.d/mysqld stop
# yum remove mysql
# cd /usr/local/
# wget http://askmonty.org/downloads/r/http://mirrors.supportex.net/mariadb/mariadb-5.2.4/kvm-bintar-hardy-amd64/mariadb-5.2.4-Linux-x86_64.tar.gz
# tar xvf mariadb-5.2.4-Linux-x86_64.tar.gz
# ln -s mariadb-5.2.4-Linux-x86_64 mysql
# cd mysql
# ./scripts/mysql_install_db --user=mysql
# cp support-files/mysql.server /etc/init.d/mysqld 
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
# chown -R root .
# chown -R mysql data



Now edit /etc/init.d/mysqld, and replace the datadir and basedir directives with:
basedir=/usr/local/mysql/
datadir=/var/lib/mysql/
And then start MariaDb: /etc/init.d/mysqld start

Now there are a few things left. First of all, you probably need to upgrade your mysql tables, for that you need the password of the administrative user. If you're using DirectAdmin you can find this in /usr/local/directadmin/conf/mysql.conf. If you're not running DirectAdmin, you probably know the password of the root account (or another account with all rights required) yourself.

After having found or thought of your password, upgrade the tables MariaDB uses internally. Please note, without this step everything will probably work just as well, but eventually you supposedly will run into problems, we restart MariaDB afterwards (if your root account isn't called 'da_admin' you need to replace that with the actual username):
./bin/mysql_upgrade -u da_admin -p
/etc/init.d/mysqld restart
If there are still any problems MariaDb will tell you about them in either /var/log/messages or /var/lib/mysql/yourhostname.tld.err

Finally, if using DirectAdmin, make sure to set mysql_inst to 'no' in /usr/local/directadmin/custombuild/options.conf, to ensure that mysql won't be reinstalled with a next upgrade.

Volgende: PHP, JS & Service layers: Blend like never before 03-'11 PHP, JS & Service layers: Blend like never before
Volgende: "Please moderate" 12-'10 "Please moderate"

Comments


By Tweakers user analog_, Saturday 1 January 2011 21:22

mompelt iets over een mariadb rpm/deb package.

By Tweakers user Freeaqingme, Saturday 1 January 2011 21:30

analog_ wrote on Saturday 01 January 2011 @ 21:22:
mompelt iets over een mariadb rpm/deb package.
There are indeed ready to use software packages available. However, most of them do nothing but fail miserably, especially when Mysql has been installed already. Which is why I chose to use this method.

By Tweakers user TRRoads, Saturday 1 January 2011 21:48

Jammer alleen dat de meestgevraagde functie die niet in de gratis MySQL versie zit clustering is en clustering helaas ook niet in MariaDB zit AFAIK.

By Tweakers user i-chat, Saturday 1 January 2011 22:18

TRRoads wrote on Saturday 01 January 2011 @ 21:48:
Jammer alleen dat de meestgevraagde functie die niet in de gratis MySQL versie zit clustering is en clustering helaas ook niet in MariaDB zit AFAIK.
dat zou best kunnen als het een mysql fork is dan verbaasd het me weinig dat clustering nie werkt, 't zou wel eens kunnen dat hij er geen (c) op heeft dan dan zal dat dus opnieuw moeten worden uitgevonden, - dat kan dan nog wel eff duren. ik vraag me dan ook af of je 'als je dan toch overstapt' niet beter naar een DB moet gaan waar je WEL wat meer functies hebt. (zo'n upgrade is echt niet het meeste werk)

By Tweakers user Freeaqingme, Saturday 1 January 2011 22:55

(I respond in English so the English readers can also understand it)

TRRoads, yes, it's too bad there's no clustering support yet. However, of course the people behind MariaDB will have to start somewhere. They did already add quite a lot of new functionality. Also, they are busy on adding commercial grade clustering, but that is something that takes time.

i-chat, all the commercial-only functionality in mysql has a proprietary license and all copyrights were owned by Mysql AB, later Sun, and now Oracle. This means that all of that functionality needs to be redone, re-thought, and improved.

I think moving to a completely different RDBMS isn't as easy as you pretend it to be. Rewriting every single query in your application takes time, testing them even more. Usually when you need to cluster your db, you usually have a fairly large application, meaning a lot of queries ;) Also, mysql/mariadb is a fairly good rdbms nonetheless. Other RDBMS's will result in other disadvantages for sure.

By Tweakers user Sgreehder, Saturday 1 January 2011 23:59

"Rewriting every single query in your application" is something no-one should ever have to do. You might have had to exploit some MySQL specific quircks, but I doubt a direct fork of MySQL suddenly decided to do everything differently.

By Tweakers user Freeaqingme, Sunday 2 January 2011 00:08

Oh, no, that's not what I meant. What I meant was that if you switch to a completely different RDBMS like Oracle, Postgres or Mssql, chances are you'll have to rewrite about everything that interacts with the RDBMS. Since MariaDB intends to be (and generally is) 100% backwards compatible with Mysql, upgrading from Mysql to Mariadb indeed should be painless (meaning not having to rewrite anything).

By Tweakers user TRRoads, Sunday 2 January 2011 02:38

IMHO is een traditionele DBMS van (bijna) 0 opnieuw bouwen anno 2011 compleet zinloos. Misschien leuk als afstudeerproject voor een student, maar om daadwerkelijk te gaan gebruiken? No way...

De markt voor DBMS'en in de traditionele vorm is gewoon al propvol. Met geweldige producten die reeds tientallen jaren actief zijn op de markt. Denk bijvoorbeeld aan een IBM DB2, Oracle Corp Oracle, Microsoft MSSQL, UoC Berkeley DB en PostgreSQL. Stuk voor stuk gewoon goede databases die al jaren ingezet worden in hun eigen deel van de markt.

MySQL is al een nageboorte van deze markt zonder bijzondere features, gebrekkige ondersteuning voor standaarden, niet gebouwd op tientallen jaren ervaring (en dat is ernstig te merken), een onzekere persoonlijkheid/positionering in de markt en op z'n zachts gezegd een chaotisch ontwikkelpad. Het is dat PHP erg populair is geworden onder de hobbybouwers waarbij MySQL heeft meegelift en alsnog redelijk veel gebruikt is momenteel. Maar kijken we naar de complete markt van databases dan is het maar een spetter poep op de gloeiende plaat.

Waarom iemand hier een fork van zou willen maken is me echt een compleet raadsel. Steek die tijd liever in het meehelpen aan bijvoorbeeld PostgreSQL.

Veel meer is er te behalen in het bouwen van een compleet nieuwe soort DBMS, waarbij het nu nog compleet onzeker is wat voor soort database dat zal zijn. Ik vermoed een cloud achtige vorm waarbij algoritmes gebaseerd op natuurlijke structuren gebruikt zullen worden om bijvoorbeeld patroonherkenning en relaties met een veel grotere performance te kunnen maken. Maar goed, in de toekomst kijken is altijd koffiedik kijken, maar er zijn toch wel veelbelovende projecten die lopen op het moment, veel proeftuinen vooral.

En alles herschrijven omdat je van DB systeem gaat wijzigen? Dan heb je toch echt een ernstige fout in de structuur van je app, het uitwisselen van de datalaag is zoals andere mensen ook al zeiden niet zoveel werk. Er zijn ook goede standaarden op dit gebied waardoor een wisseling in de onderliggende dataopslag minimale consequenties heeft voor de applicatie zelf. Wel vinden vooral systeembeheerders het zeer irritant omdat zij het meeste tijd kwijt zijn met het tweaken van de database op de wensen en eisen van de app.

Lezen hier echt Engelsen mee? Ik verwacht het niet, Tweakblogs is net zoals Tweakers zelf een redelijk Nederlands gebeuren. Op z'n tijd zijn er wel eens artikelen van Tweakers in het Engels, maar dat is al een extreme uitzondering. Die artikelen zijn dan ook echt de hoogwaardige artikelen waarvan bekend is dat ze aandacht op internet gaan trekken. En dan heb je het nog over Tweakers zelf, niet het aangekoekte blog mini siteje

[Comment edited on Sunday 2 January 2011 02:40]


By Tweakers user Blokker_1999, Sunday 2 January 2011 09:34

"Rewriting every single query in your application" is something no-one should ever have to do. You might have had to exploit some MySQL specific quircks, but I doubt a direct fork of MySQL suddenly decided to do everything differently.
Even if you migrate to another sql server you shouldn't have to rewrite much. SQL is mostly standard on most systems. In theory all you have to do is change how you connect. But that off course is the theory.

By Tweakers user BitProcessor, Sunday 2 January 2011 10:19

@Blokker_1999 : ik begrijp dat je in 't Engels wil schrijven, maar OFF course is nog altijd met 1 enkele F hoor :-)

http://www.yourdictionary.com/off

[Comment edited on Sunday 2 January 2011 10:19]


By Tweakers user Xudonax, Sunday 2 January 2011 11:13

Just tried this myself on my Slackware server, and it took a bit more trouble than I liked. Replacing MySQL with MariaDB was easy, but then my PHP installation caused some trouble, I had no PHP->MariaDB connection. Fixing this took a few hours due to recompiling PHP... Anyways, everything is working now and it works fine as far as I can see.

By Tweakers user chaozz, Sunday 2 January 2011 12:34

I recently replaced mysql with mariadb on my server too. It worked without a single adjustment to my installation or PHP code.

I think MariaDB is a very good development. MySQL is now in the hands of a commercial party which already has it's own database system. Who knows what their plans are with MySQL?

By Tweakers user terje7601, Sunday 2 January 2011 12:57

Yeah, how popular it is nowadays to write a blog post about Oracle & its assumed evilness :X

a) if you really think MariaDB is as free as a bird, you obviously didn't come across this post
a) you 're bashing MySQL because it hasn't got cluster support for free & then you advise everyone to switch to another RDBMS which hasn't got it at all?
b) MySQL 5.5 was released recently. What are the advantages of migrating to MariaDB, instead of upgrading to MySQL 5.5?

By Tweakers user Blokker_1999, Sunday 2 January 2011 14:02

BitProcessor wrote on Sunday 02 January 2011 @ 10:19:
@Blokker_1999 : ik begrijp dat je in 't Engels wil schrijven, maar OFF course is nog altijd met 1 enkele F hoor :-)

http://www.yourdictionary.com/off
mja, engels is en blijft een moeilijke taal voor mij. Ze hebben teveel woorden die eenzelfde klank hebben maar verschillende schrijfwijze. Laat me er altijd aan vangen. Niet dat men nederlands perfect is.

By Tweakers user i-chat, Sunday 2 January 2011 14:51

TRRoads wrote on Sunday 02 January 2011 @ 02:38:
IMHO is een traditionele DBMS van (bijna) 0 opnieuw bouwen anno 2011 compleet zinloos. Misschien leuk als afstudeerproject voor een student, maar om daadwerkelijk te gaan gebruiken? No way...

De markt voor DBMS'en in de traditionele vorm is gewoon al propvol. Met geweldige producten die reeds tientallen jaren actief zijn op de markt. Denk bijvoorbeeld aan een IBM DB2, Oracle Corp Oracle, Microsoft MSSQL, UoC Berkeley DB en PostgreSQL. Stuk voor stuk gewoon goede databases die al jaren ingezet worden in hun eigen deel van de markt.
ben ik het niet mee eens, de meeste websevers draaien *nix met apache (en dat is niet voor niets), en dat betekend direct al dat MSSQL al afvalt en dat is naar mijn idee maar goed ook, ik heb er wel eens wat mee gedaan en ik moet zeggen dat ik het aanzienlijk minder goed vind dan mysql.

databases als oracle en db2 en misschien ook wel postgres doen in ieder geval een hele andere tak van sport waar een simpel php / perl / python / jsp webscriptje totaal GEEN voordeel aan zal hebben. naar mijn beste weten zouden vooral mysql en mssql daar de geschiktste en simpelste databases voor zijn, maar om het voorgaande blijft dan alleen mysql dus over.

bovendien zeg je dat een nieuwe db bouwen ano 20xx geen meerwaarde kan hebben, en ook dat vind ik erg kort door de bocht, denk bijv aan sqlite (ook pas in 2000 gestart) wat op z'n eigen vlak een stuk beter presteert wat betref kosten per query dan een oracle DB.
MySQL is al een nageboorte van deze markt zonder bijzondere features, gebrekkige ondersteuning voor standaarden, niet gebouwd op tientallen jaren ervaring (en dat is ernstig te merken), een onzekere persoonlijkheid/positionering in de markt en op z'n zachts gezegd een chaotisch ontwikkelpad. Het is dat PHP erg populair is geworden onder de hobbybouwers waarbij MySQL heeft meegelift en alsnog redelijk veel gebruikt is momenteel. Maar kijken we naar de complete markt van databases dan is het maar een spetter poep op de gloeiende plaat.
hoewel 't technisch gezien wel waar zou kunnen zijn, denk ik niet dat je de hoeveelheid myql queries moet onderschatten, het WWW is behoorlijk groot en bijna elk shared webhosting account maakt er gebruik van. gezamelijk zou het WWW welk eens aanzienlijk meer kunnen trekken dan welk andere db dan ook,

let wel tientallen miljoenen databases met 10 queries per minuut tellen nogaltijd meer dan 1 data base met een miljoen queries p/min ook al is die laatste natuurlijk veel 1337'er

dat er een hoop gedaan kan worden om mysql te verbeteren wil ik 300% beamen, maar onderschat het niet want je zou er wel eens flink naast kunnen zitten.

By Tweakers user Freeaqingme, Sunday 2 January 2011 17:16

Lezen hier echt Engelsen mee? Ik verwacht het niet, Tweakblogs is net zoals Tweakers zelf een redelijk Nederlands gebeuren. Op z'n tijd zijn er wel eens artikelen van Tweakers in het Engels, maar dat is al een extreme uitzondering. Die artikelen zijn dan ook echt de hoogwaardige artikelen waarvan bekend is dat ze aandacht op internet gaan trekken. En dan heb je het nog over Tweakers zelf, niet het aangekoekte blog mini siteje
Via tweakblogs.net verwacht ik niet zoveel internationale bezoekers. Maar via google/twitter hoop/verwacht ik wel wat buitenlands publiek aan te trekken. Daarnaast kan ik mij beter uitdrukken in het Engels dan in het Nederlands, en is het een gegeven dat de meeste Nederlanders wel Engels kunnen, maar de meeste Engels-sprekende mensen geen Nederlands. In ieder geval, ik wacht de stats af, mocht er over een maand of zo nog geen buitenlander te bekennen zijn, bestaat de kans dat ik alsnog over ga op 't Nederlands (of Frans, of Duits...). ;)
terje7601 wrote on Sunday 02 January 2011 @ 12:57:
Yeah, how popular it is nowadays to write a blog post about Oracle & its assumed evilness :X
That is something I didn't want to do. I could have written a book on all problems there are with Oracle taking over cool FOSS projects and the potential advantages that may bring. But I think there are already enough of these blogposts, so I chose to only refer to them in the introduction, rather than describing them at full length. Also, the word 'bash' (see your second bullet 'A') implies something that is needlessly done, and I think that's not the case here. With Oracle suing Google, closing the Opensolaris project, etc, they have proven themself to be evil not that friendly.
terje7601 wrote on Sunday 02 January 2011 @ 12:57:
a) if you really think MariaDB is as free as a bird, you obviously didn't come across this post
Affirmative, I don't recall having read that page. The article makes sense though, nobody is perfect, and when you have a project you need to make a living of, it makes sense that you protect at least a bit of it (trademarks e.g.). Frankly I don't care that much about trademarks, if I would want to fork a project (in case someone decides to make much worse decisions) the license is way more important than the trademarks. You also may want to read Monty's response if you haven't done so already.
terje7601 wrote on Sunday 02 January 2011 @ 12:57:
a) you 're bashing MySQL because it hasn't got cluster support for free & then you advise everyone to switch to another RDBMS which hasn't got it at all?
Yes I do 8-). That is, I advise everybody now using Mysql to at least take a look at MariaDB. If one has an application that large that he requires clustering, I expect him to do some research, testing and benchmarking himeself before making any choice at all.

There's so much more that is important when picking an RDBMS besides clustering that I still think MariaDB is worth looking for. Also, I've seen the commits here and there, so I'm confident free (as in beer (and speech?)) clustering support will come to MariaDB.
terje7601 wrote on Sunday 02 January 2011 @ 12:57:
b) MySQL 5.5 was released recently. What are the advantages of migrating to MariaDB, instead of upgrading to MySQL 5.5?
You may want to read this blogpost on that. I could repeat most of that, but I figured linking would be just as easy ;)

The folks at MariaDB have focused _a lot_ on performance, and therefore quite some internal changes were made (while still being able to run Mysql's testsuite). This means that porting the changes from Mysql to MariaDB will take a while, but still it's the intention to port all of them. My guess is that somewhere in Q2 2011 all ported changes from Mysql5.5 will be released in a MariaDB GA release.
Blokker_1999 wrote on Sunday 02 January 2011 @ 14:02:
[...]
mja, engels is en blijft een moeilijke taal voor mij.
Het gaat er vooral om dat mensen je begrijpen, ik denk dat dat hier wel het geval was ;)

Once again, thank you all for replying(!).

By Tweakers user analog_, Sunday 2 January 2011 17:36

If you want cluster support for free there are ghetto solutions like MySQL Proxy which allows you to split writes from reads and distribute them in a particular method to your liking. It's kind of similar to the way varnish works, you actually program the logic while configuring (varnish uses some c language, mysql proxy lua).

By Tweakers user Paul - K, Monday 3 January 2011 17:34

I'm running some tracker, reaching up too 1600 Queries per second (50% select, 25% update, 25% delete & insert). Using both MyISAM & InnoDB.

What would the performance difference be? What's the point why I should switch?

By Tweakers user Freeaqingme, Monday 3 January 2011 21:22

Paul - K wrote on Monday 03 January 2011 @ 17:34:
I'm running some tracker, reaching up too 1600 Queries per second (50% select, 25% update, 25% delete & insert). Using both MyISAM & InnoDB.

What would the performance difference be? What's the point why I should switch?
That would actually depend on many factors. I haven't seen any benchmarks yet, but mysql 5.5 did get quite a lot of performance improvements, so I can imagine it's currently faster. However, MariaDB has been getting lots of performance improvements as well (on trunk) apart from mysql, and all the improvements made to mysql will also be ported to MariaDB, so I can imagine that once MariaDB's opponent of mysql5.5 has been released, it's faster.

If performance is a problem for you, you also may want to check out some other engines like Xtradb (which gets shipped with MariaDB by default), or the Aria engine (guess what... also shipped with MariaDB). Alternatively you may want to read High Performance MySQL, Second Edition by <insert lots of authors>.

[Comment edited on Monday 3 January 2011 21:22]


By Tweakers user kwaakvaak_v2, Tuesday 4 January 2011 17:26

analog_ wrote on Saturday 01 January 2011 @ 21:22:
mompelt iets over een mariadb rpm/deb package.
Mompelt ook iets over Percona server 5.1 wat gebaseerd is op mariaDB en hun eigen innoDB replacement xtraDB.

Heb het sinds een goede twee maanden op een redelijk druk bezochte server staan waar een aantal phpBB3 installatie's op draaien. (alle tabellen op xtraDB behalve posts ivm fulltext search)

En moet zeggen bevalt mij prima. Gewoon hun aptitude repo in mijn apt.conf gezet. En als er een update is, komt deze keurig mee als ik de boel upgrade.

By Tweakers user terje7601, Thursday 6 January 2011 10:56

Freeaqingme wrote on Sunday 02 January 2011 @ 17:16:
That is something I didn't want to do. I could have written a book on all problems there are with Oracle taking over cool FOSS projects and the potential advantages that may bring. But I think there are already enough of these blogposts, so I chose to only refer to them in the introduction, rather than describing them at full length. Also, the word 'bash' (see your second bullet 'A') implies something that is needlessly done, and I think that's not the case here. With Oracle suing Google, closing the Opensolaris project, etc, they have proven themself to be evil not that friendly.
True, this post is about MariaDB, so I 'll try to keep it short by referring to this blog post, which pretty much sums up my thoughts on "Oracle in 2010". Oracle delivered Solaris Express 11, VirtualBox 4, MySQL 5.5... and will bring us OO.org 3.3, Java 7, JavaFX 2, GlassFish 3.1 (with free clustering, btw ;) ), NetBeans 7... in the first half of 2011... & all of this for free, so personally I don't see any reason to complain :)

As for Oracle suing Google: I support Oracle here, for the sole reason that the Dalvik VM uses its own bytecode, instead of Java bytecode (where 's the WORA in that?). I would much rather see "Java SE for Embedded" on Android smartphones.

[Comment edited on Thursday 6 January 2011 10:58]


Comments are closed