MySQL University
This afternoon I sat down and really looked at MySQL’s “University”. This is an excellent resource for the MySQL DBA. I had been intending to do this for some time and now I regret not getting to this sooner. These sessions are not just fluff material but can be quite in-depth on each given subject.
In addition, these sessions are taught by the experts at MySQL. People who really know what they are talking about. I am actually listening to the NDB engine (cluster engine) architecture session taugh by Mikael Ronström who is a Senior MySQL Architect at MySQL.
There is a schedule of upcoming classes on the website, which is here. In addition you can download previous sessions and listen to them and view the slides at any time.
7 Comments so far
Leave a reply
I wasn’t quite aware that a piece of crap RDBMS (sorry to take in vain the RDBMS notion, by associating it with MySQL) needs an University.
It needs an architect, a vision and, above all, a re-write.
Cheers!
Thanks for stopping by. Glad you are reading the site.
Wow, I haven’t heard such vitriol in quite a while
I have fun .. suppose thats all that matters. The data of my employer is safe, secure and I don’t spend a great deal of time up late at night dealing with “issues”. I am paid well, enjoy what I do and look forward to going to work on Mondays.
Have a good week man.
Nope, fun isn’t all that matters. Try to deal with financial transactions on replicated environment, where running “SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1″ is not an option; where holding customers data in myisam tables that are prone to get corrupted each time mysql crashes in the middle of an insert. Try to run a mysql datawarehouse, where a tmp table for a poor written (by some dumb developer) huge select gets as big as 600GB. Try to run with innodb in innodb_flush_log_at_trx_commit = 0 mode, handling financial transactions and without being close to lose your job. Oh, try to use triggers on mysql certified binaries without getting memory leaks. And try to preallocate file system space for a huge myisam table, reinventing wheel and creating mysql user defined functions in order to achieve this. Real databases have tablespaces.
And above all, try to solve these problems with just plain bash/perl/php scripting in an efficient way and not spend countless hours solving some developer’s problem that is not able to write a proper select.
I once I asked one of my friends, an oracle dba, how many night hours he spends a month doing dba work. Keep in mind he’s the only DBA in that company. He answered: “None”.
I very much enjoy what I do. Not with mysql though. I’m past the hacker mentality where everything has to be done quick and dirty. This mentality seem to fit almost every mysql user.
You wonder why do I get mad? Because I see all the hype surrounding this MySQL crap and people praising it and placing it on the same level with enterprise software, but forgetting what MySQL is in fact: some homework project database started 10 years ago, without a clear road map.
And to close this diatribe, fun isn’t all that matters. What really matters is a good job and smartly done. MySQL isn’t one of these jobs.
Cheers again!
Seriously, I am sorry that you have had such a bad experience with MySQL in the past. Believe it or not MySQL has improved over time. Yep, myisam table will absolutely corrupt if the server drops in mid transaction. However, myisam have never been ACID compliant. There are very few reasons at this point to be using myisam. You should be using Innodb for tables that require ACID compliance. You know Innodb?? That would be the storage system that Oracle thought so highly of that they spent A LOT of money to buy.
As for running innodb_flush_log_at_trx_commit = 0 mode… I would point you here: http://www.mysql.com/news-and-events/newsletter/2003-12/a0000000285.html
It very clearly states that you should not be running with commit mode of 0 as you risk data integrity. So why would you do that if you were dealing with financial data? Seriously? And this was from December of 2003. That particular tidbit of wisdom is quite common knowledge. And by the way…MySQL defaults to 1 which means after each commit is executed your data is flushed to disk..the SAFE default. You have to set it to 0 (trying to get extra performance I presume) to have it run in this mode. You as the DBA are responsible for making that choice..not MySQL. They just give you the option (but as with almost every other case..default to the safe option).
There are certainly situations I wouldn’t use MySQL. I think most people would realistically say that about any database system.
I am always looking for ways to automate things. I have enough to do because I handle the data of a fast-growing multi-million dollar company across multiple servers. I don’t have time to do repetitive things.
I happen to like my developers. The management at my company is smart enough to hire smart people. That includes the developers. I am smart enough to realize when there is an inefficient statement (it’s called the slow query log). Easy enough to show it to the developers and let them do their job. I don’t ever waste my time with such foolishness. Sorry you have had that unpleasant experience.
Let’s see..as for the “hacker mentality”..if you knew me you would know that is not what I am about at all. I have never been like that so I didn’t have to get “past it”. My first job out of college back in 1996 was coding SQL and then after a year I was promoted to working as an Oracle DBA. I have always had the mentality that the most important part of a DBA’s job is to insure that the data is always safe. End of story. Everything else is secondary.
So in six months at my current job I have not had one instance at night where my pager went off and I had to go “fix something”. I do work at night for two reasons…I happen to be a night owl and it causes less customer impact for some operations when I do them at night. Not because something broke with MySQL.
I will point out one last thing. You seem to be living very much in the past. You point out problems that were solved many versions ago. I would not look at Oracle, SQL Server, or any other DB from three years ago and compare it to a current offering of any other company. Wouldn’t be fair would it? But its my impression that is what you are trying to do. Might want to check out version 5 of MySQL..or you could even go out on a long limb and try version 5.1 (RC). But, being the conservative guy I am I wouldn’t recommend you use it in production. I would even go so far as to say that you should wait for a few minor releases after 5.1 becomes GA.
And yes, fun is VERY important. I painted the wrong image when I said that fun is “all that matters”. Of course other things are important too.
And by the way..getting mad is just going to get you a heart attack. Raises the blood pressure. Relax. It’s all good.
I don’t know where did you get the idea that I’m living in the past and I’m talking about old versions. I have to deal on daily basis at work with an array of mysql versions starting from 4.1.20 to 5.0.48sp1a for production (98% certified binaries). In the testing/research area, I’m running on 5.1.11beta.
I’m facing all those problems depending on the versions. However, one of the biggest bugs, discovered by one of my colleagues, it’s been on ALL the versions, including 6.0.xx!!! It was about myisam concurrent inserts and tables corruption (or tables marked as corrupted but found in a working state in fact) and also this bugs has been discovered six years ago but nobody did anything. Can you call this technical support and quality assurance?!
Same for the relay log corruptions. When I submitted a ticket about relay logs getting corrupted several times a day, we received an work around. Not to mention, it was not treated even as a bug, they just implied that the servers weren’t correctly configured. And yes, we excluded ANY other possibility like bad hardware, bad OS, bad whatever you want. Of course, my team and I managed eventually to save the day with one single setting which seemed to do the job. But, what can I say, when one single parameter manage to knee the relay logs… (net_buffer_length). Yet the bug STILL exists, because relay logs DON’T HAVE CHECKSUMS. Same for binlogs. About this, maybe replication team is gonna lift their asses and implement the feature in the next ten years.
The worst thing of all, is that people that don’t know mysql internals very well are to decide if we keep using it or not. It’s like placing a time bomb in my hands, but also you just tied my hands and told me to defuse it.
Yes, I’m aware that maybe half of the problem might be those people, but also I’m pretty much sure that I don’t get any help from mysql (rdbms) side. I just cannot trust it. It’s forgiving when it shouldn’t be and it’s not forgiving when it should be.
Now to respond your assertion one by one:
- I’m living in the present, I’m very much aware that innodb exists and Oracle bought it.
- I’m made a compromise and I’m using innodb_flush_log_at_trx_commit=2. It can still lose transactions. 1 as a value is out of the question because of performance reasons. And management is stubborn and won’t buy new more powerful hardware.
- Geez, can I find any situation where I should use MySQL?! Let me see… I’ll let you answer this question.
- I’ll avoid making statements about management and developers. I still have strong opinions about them though.
- I’m automating as much as I can, we’re using a blend of php and perl scripts. At least this part is smartly conceived. Not perfect but perfectible.
- I don’t get it. What normal sane people would quit an Oracle career and start using a MySQL one?! Please… I still believe you might have something from the hacking mentality. You like the hype around MySQL.
- Being an owl that confuses night with day and vice versa… I bet you’re the only one that carry the pager.
- Here’s a good one: “You point out problems that were solved many versions ago.” I got a good laugh at it. I responded to this one in the first two paragraphs.
Wish you good luck at your new job.
Yes, I am the only one who carries the pager. That would be because I am the only DBA at my company. I take care of 20+ production and around half a dozen development database servers day in and day out..week in and week out. 24/7 - you get the picture. And I don’t get burned out because I am not over-worked because things don’t break. I happen to have four children and a wife and spend time at home not buried in work as any responsible father should.
I am actually hiring a junior DBA first quarter of next year. You can send me an email at “kmurphy” AT “icontact.com” if you have interest. It’s part time but it will give you a great chance to learn. Why do I “have” to hire someone? Because we are growing by about 50% every six months. I want to offload some of the more day to day tasks to a junior dba so I can concentrate more on long-term project type stuff. Also, in all honesty, I love to teach. I can train someone up in the proper way to be a DBA. I’ll still carry the pager a good deal of the time though. No reason not to as it doesn’t bother me. Let’s see..the last time it went off was a week ago last Friday I think so I am going on nine days. Nice. Normally when it goes off it is because a slave server gets behind in replication while the slave is running backups. But, I am implementing something that will resolve that. Then it will be weeks at at time before it goes off.
But then again, I’m a hacker so what do I know.
And it really sounds like you aren’t working at the right place if you are so bitter about management and developers.
I make decisions all the time about how we implement technology. It is part of my job and if I couldn’t make those decisions about what is best for the company (when it comes to databases at least) then I wouldn’t be there. How can I be responsible for maintaining a high level of quality of service if someone else tells me what I should or should not doing? I solicit opinions from time to time as there are other people who have a fair amount of knowledge about MySQL but the ultimate decision are in my hands.
Are there cost-constraints? Sure. We don’t have a fibre-SAN for example. I understand our constraints and work within them. However, if I walked up to my manager and said we need to have X to be able to supply this service or this level of user activity or whatever.. I will get what I need.
Example: we are rolling out a new product at 6:00 am Tuesday morning. We have been preparing for this as a company for over six months. A team of 15 - 20 developers have been working on this full time for six months. It’s not a small thing. I understand what the product function is, what it is going to provide and the expected level of user activity and growth. I had initially decided to implement a cluster. I have never used the clustering product in production. I began testing a cluster in development with the project a bit over a month ago. After working with it for several weeks I realized that it was not going to meet the requirements of our application. I went into this knowing that this might happen as I didn’t have a great deal of previous experience with clustering (and none in production). If I had more knowledge about it I would have known from the start that a cluster was not capable of meeting our requirements. However, I wasn’t mandated upon by my management that I had to use clustering. About a week and half ago I made the decision to not use clustering. Instead we are rolling out the application with a much more traditional form of master-slave replication. Within a year the developers will add sharding code to the application as we need to grow. In the meantime we have no reason to believe from previous experience that we can’t handle everything on one reasonable master/slave server pair. I will probably implement drdb and fail-over in the second quarter of next year to improve the response time if we have a hardware failure but that isn’t that big a change. No one is mad at me for this change. It isn’t going to show up badly on my year-end review that this change took place. No recriminations.
Because I know my servers the best and I have knowledge of the requirements of our application it was my responsibility to make that decision (change over from cluster to a master/server). Simple as that.
I made the choices and I will be able to work with them. I wasn’t forced into implementing something inappropriate because someone “upstream” said that is the way it should be done. Makes for a much more pleasant place to work. Maybe I’m just good but so far I have been making an implementing the right choices
I’m not even going to bother refuting your your little checkpoints.. but I will say this…..I began using MySQL in 1998 long before it was a “fad”. So please - this isn’t some bandwagon thing for me. In 1998 there was no “hype” around MySQL. I installed Red Hat (5.0 or 5.1 — it had a blue slipcase for the cds) and needed a database server for the Apache server I set up. HMMM… what’s this? MySQL.. I had probably never heard of it before that day. The MyISAM tables you continually gripe about weren’t even available if I recall. I think they became availabe in 3.23.x and I was initially using 3.22. I don’t know, it’s been a while. In 2000 when I was running MySQL on a Sun Solaris 8-proc (around 200 mhz per cpu I think) E4500 box with 8 gigs of RAM and the entire database in memory tables it wasn’t “hype”. MySQL obviously knows how to market themselves. Good for them. In the work I have been in it has been the best tool for the job. If it wasn’t I would use something else. I also happen to agree very much with their philosophy about open source.
- Use a backup script that knows how to interact with nagios and knows how to schedule automatic downtime.
- I am honored by your offer and by no means, I’m not saying no to this offer at all. But right now I’m focusing on getting my Oracle certification as I want to diversify a lil’ bit on the DBA field. And anyway, if it’s about MySQL, I’m aiming senior DBA or at least DBA in a better organized company. When January 1st, 2008 will come, I’ll start updating my resume.
- Please, don’t compare the stability of your 20+ servers environment with crap I’m used to every day. We have over 250 physical boxes, with some of them running between 2 and 5 MySQL instances for reporting purposes.
- if you were to decide upon which SAN to buy, stay away at least from Hitachi. They have a really bad paradigm when it comes to management. And yes, you have to reboot the whole SAN each time you install a new license and you do need a license for every little new feature the management software comes with. That means unwanted/unnecessary downtime.
- isam was the first engine used for storing data, something a little more than a flat file with some indexes on it. It followed the other crap… I’m not saying its name.
- it seems to me lately that MySQL is more about marketing than solving problems. And anyway, I’m not trying to convince you that MySQL is a piece of crap which deserves at best a complete re-write, because I noticed that indeed it’s futile to steer 180 degrees indoctrinated peoples’ minds.
Have a good one!