November 29, 2007

Packing for company meeting in Egypt

Posted by peter

Our company, Percona is even more Virtual than MySQL AB - we have no offices and 100% of staff members work out of their homes (or traveling, onsite with customers etc). We also probably have just couple of cities where more than one Employee lives.

Working as a virtual company has a lot of benefits both for company and employee - office expenses savings, saving time spent commuting, flexible work time, access to more talents but it also has challenges as we typically able to communicate more efficiently with people we personally met and there are also many things which are better made or discussed in the groups. While working for MySQL I learned the great solution to this problem is periodic meetings - company wide or group wide organized both for sake of working together as well as team building as having fun together.
[read more...]

November 26, 2007

Data Recovery Toolkit for InnoDB Version 0.1 Released

Posted by Alexey Kovyrin

As Peter mentioned in one of previous posts, we’ve done huge work developing robust strategies of InnoDB data recovery to provide our customers effective data recovery services and one of major parts of these strategies is our toolkit for InnoDB data recovery. Today I’m proud to announce its first public release which was used to help some of our customers to recover 95-100% of their deleted data.

This release already has a pretty decent set of features:

  • Supports both REDUNDANT (pre mysql 5.0) and COMPACT (mysql 5.0+) versions of tablespaces
  • Works with single tablespaces and file-per-table tablespaces
  • Able to recover data even when processed InnoDB page has been reassigned to another table and/or was partially destroyed
  • Supports all MySQL data types except BLOBs, SETs and BITs (will be implemented in next releases)
  • Has really great set of data filters to define data ranges (for numbers), field lengths (for variable length fields), character sets (for strings), date periods (for dates), etc.
  • Shipped with easy to use tool which could be used to create innodb table definitions based on CREATE TABLE clauses, so you don’t need to write table definitions yourself - you just need to add data filters and get your data back (well, in most of the cases)
  • Results are presented in CSV file format which could be used with MySQL’s LOAD DATA function

So, if you intrigued enough and would like to check it out, welcome to Google Code page of the project where you can find latest version of the toolset code and more links to information resources related to InnoDB data structures and recovery procedures.

November 25, 2007

Slides from Zurich talk are now posted

Posted by peter

I have now posted slides for the talk I gave in Zurich last week in MySQL Performance Presentations section.

That was fun talk and fun trip in general. Thank you for inviting.

November 22, 2007

Pitfall of proxying HTTP requests through Lighttpd

Posted by Maciej Dobrzanski

Recently I had a case with a web server farm where a random node went down every few minutes. I don’t mean any of them rebooted except once or twice, but rather they were slowing down so much that practically stopped serving any requests and were being pulled out from the LVS cluster. The traffic was not any different than usual, all other elements of the system worked perfectly fine (e.g. databases, storage), no one started any backup in the middle of the day as it happens sometimes… so what was happening?
[read more...]

November 18, 2007

Giving a talk in Zurich

Posted by peter

I’m visiting customer in Zurich next week and also was invited to give a talk on MySQL Performance Wednesday November 21.
If you’re in the area please feel free to drop by I’ll start by talking about Query Optimization and we’ll keep it interactive to see what else audience would like to know.

MySQL: Data Storage or Data Processing

Posted by peter

I was thinking today of how people tend to use MySQL in modern applications and it stroke me in many cases MySQL is not used to process the data, at least not on the large scale - instead it is used for data storage and light duty data retrieval. Even in this case however the cache (ie memcache) is often implemented to offload MySQL.

When it comes to large scale data processing other techniques are used. Google uses some bigtable based technologies for search and Google Analytics (which is quite typical log processing application), when you look at recommendation task as well as a lot of other personalized services they may not use MySQL (and SQL at all). In many cases you would see absolutely custom solutions are implemented, in other cases you would see Hadoop or Sphinx used to crunch data in parallel or it even could be special wrapper on top of MySQL do do the work
[read more...]

November 13, 2007

10+ Ways to Crash or Overload MySQL

Posted by peter

People are sometimes contacting me and asking about bugs like this which provide a trivial way to crash MySQL to the user with basic privileges and asking me what to do.

My answer to them is - there is nothing new to it and they just sit should back and relax :)

Really - there are many ways to crash or otherwise made unavailable server with any MySQL version if you have access to it with normal privileges. We’re constantly helping people to fix mistakes in the applications which make MySQL Server useless (though few of them cause crashes to be honest) so obviously it is even easier if you have intent.
[read more...]

November 12, 2007

Innodb Undelete and Sphinx Support

Posted by peter

At Percona we are pleased to announce couple of services which should be helpful to MySQL Community and which are not offered by MySQL, Oracle and other companies I know about.

First we now do Data Recovery for MySQL. We’re mainly focused on Innodb with this one because it has distinct page structure which allows good data recovery possibilities even in extreme cases such as melt down file system or broken down RAID. We can undelete Innodb data - Heikki was very nice and treats deleted rows very gently allowing them to be 100% recovered if they were not overwritten yet, as well as recover dropped Innodb tables. We also can get some data recovered from covering indexes and other areas, continually improving our tool set.
[read more...]

How we work on High Performance MySQL Second Edition

Posted by peter

Baron have been updating you a lot about chapter by chapter progress so I should not repeat it, instead I thought it would be a good idea to write a bit about how we work on the book.

Generally, quite similar to the previous book this is long process, which is probably what happens when busy people attempt to get time to write a book. I started working on book Outline with Andy Oram (our great editor) about a year ago.
[read more...]

November 7, 2007

Filtered MySQL Replication

Posted by peter

To get this straight - I’m not a big fan of filtered or partial MySQL Replication (as of version MySQL 5.0) - there is enough gotchas with replication itself and getting things right with filtering can get quite bumpy road. In some applications however it is very helpful so lets see what one should do or should not do to make it work.

Experience shared here mainly applies to logical level replication. MySQL 5.1 can use row level replication which alleviates some of these issues but I guess it will still take some time before it becomes massively used.
[read more...]