MariaDB Foundation vs. Open Database Alliance

So lots of folks are talking about the newly announced MariaDB Foundation. Some folks are confused as to what happened to the Open Database Alliance?

The MariaDB Foundation members include Monty Program, SkySQL, David Axmark, and Allan Larsson.

The Open Database Alliance members include Monty Program, FromDual, Open query, Percona and SoftMethod. [SkySQL was not founded when the ODBA was announced.]

The mission of the MariaDB Foundationwell, its not on the MariaDB Foundation web page yet, but the blog announcement says:

In its mission statement, the MariaDB Foundation exists to improve database technology, including standards implementation, interoperability with other databases, and building bridges to other types of database such as transactional and NoSQL. To deliver this the Foundation provides technical work in reviewing, merging, testing, and releasing the MariaDB product suite. The Foundation also provides infrastructure for the MariaDB project and the user and developer communities.

The mission of the Open Database Alliance (from http://odba.org/about/):

The Open Database Alliance (ODBA) is a non-profit organization dedicated to the promotion of the commercial and non-commercial ecosystem around Open Source Database Technologies. Whereas proprietary software forces strong dependencies upon a single vendor, Open Source (a.k.a. Free Software, Libre Software, FOSS or FLOSS) enables an ecosystem of commercial offerings around certain technologies, e.g. GNU, Samba, Apache, the Linux Kernel.

Databases are an essential base technology for most higher applications, from desktop search over web services to the entire spectrum of enterprise IT. Enabling, growing and protecting that ecosystem for all Open Source Database Technologies are primary activities of the ODBA.

According to h-online, there are already 1 million euros pledged to the MariaDB Foundation for this.

According to the ODBA fee schedule, a Silver member pays at least US$7k (depending on how many employees the company has) and a Gold member pays at least US$35k per year.

There is nothing on what the Open Database Alliance has done, or is currently doing, or is planning to do, other than doing the work of a business analyst and getting referral fees for it. And certainly, theres nothing concrete.

The MariaDB Foundation has nothing concrete planned, but theyre fairly new. And their mission makes it clear that their organization focuses on MariaDB, whereas the ODBA is vague, and could apply to Perconas patched MySQL, or Oracles version of MySQL.

If the MariaDB Foundation succeeds in getting 501(c)3 designation, they will have to be extremely careful they do not lose it. There are huge potentials for conflicts of interest (for example, does a bounty get paid by the MariaDB Foundation or the Monty Program?), which is grounds for revoking a 501(c)3 designation. (I know, because in the past I have been the Treasurer for national and international organizations, and currently server as the Treasurer for Technocation and a local fiber guild.)

With such similar members, what is the MariaDB foundation doing that the Open Database Alliance cannot do especially considering http://odba.org/legal/ says MariaDB is a trademark of Monty Program Ab. The Open Database Alliance and its members has broad usage rights of this trademark?

What happened to all that money that went into the Open Database Alliance? What is the MariaDB Foundation going to do with all the money it is gathering?

Is the Open Database Alliance even a valid organization any more? It was founded May 13, 2009 well over 3 years ago. What happened to it?

November News From the Mozilla DB Team

You may have noticed that I stopped posting the “weekly news” from the Mozilla DB Team. After going through the Operations Report Card and applying it to DBAs in OurSQL Podcast numbers 111, 112, 114, 115 and 116, I started thinking that the updates were really more like metrics, and it would better serve my own purposes better to do the updates monthly.

The purposes of doing this type of blog post are:
0) Answering “So what does a DBA do, anyway?”
1) Answering “DBA? At Mozilla? Does Firefox have a database? Why does Mozilla have databases, and what for?”
2) Showing what the DB team does for Mozilla, so that folks will understand that “just keeping things working” is actually a lot of work. It also helps compile yearly reviews of accomplishments.

We are also starting to get some metrics information. This month we started easy – number of MySQL and Postgres machines, number of unique databases (mysql, information_schema, performance_schema and test are ignored, and duplicates, like the same database on a master and 2 slaves, are ignored), and version information.

As of today, we have 9 unique databases across 8 Postgres servers in 4 clusters, with 6 being Postgres 9.0 and 2 being Postgres 9.2 – we are currently upgrading all our Postgres databases to 9.2 and expect that by the end of December all servers will be using 9.2.

We have 427 unique databases across 98 MySQL DB machines in 20 clusters, with 3 being MySQL 5.0, 71 being MySQL 5.1 (mostly Percona’s patched 5.1), and 24 being MariaDB 5.5.

And in the last week of October and the month of November, we have:

  • Documented 4 more of our Nagios checks.
  • Started to upgrade Postgres databases to Postgres 9.2
  • Decommissioned a legacy database cluster for Firefox themes.
  • Built a new database cluster (complete with monitoring and backups) for a new Sentry implementation.
  • Upgraded X machines for general operating system updating purposes and to ensure that be2net drivers are up-to-date; out-of-date drivers can (and have!) caused servers to crash. (b1-db1, b1-db2, addons1, addons2, 3,4,5,
  • Upgraded MySQL 5.0 to MySQL 5.1 across X clusters and Y machines (a01, b02, b2, 7)
  • Did a quarterly purge of Crash Stats data.
  • Had to re-sync 6 slaves when a transaction rolled back on the master, but some of the tables modified were MyISAM. So the master had data in some tables that was out of sync with the slaves.
  • Assisted in converting to use UTC timestamps in the Elmo database behind the Mozilla localization portal and the Bugzilla Anthropology Project, prompting a blog post on converting timezone-specific times in MySQL.
  • Decommissioned a legacy “production generic” database cluster that had over 60 databases on it.
  • Built a 5th database backup instance due to growing backup needs.
  • Changed binary log format to MIXED on our JIRA installation due to JIRA requirements and an upgrade to MySQL 5.1 issuing warnings that MySQL 5.0 had not.
  • Added checksums to the database cluster that runs Input and Firefox about:home snippets.
  • Archived and dropped the database behind Rock Your Firefox.
  • Exported Bugzilla data for a research project. Did you know if you are doing academic research, you can get a copy of Mozilla’s public Bugzilla data?
  • Gave read-only database access to a developer behind the Datazilla project.
  • Updated the email list for vouched Mozillians.
  • Backfilled missing crash-stats data after some failed cron scripts.
  • Cleared some junk data from the Datazilla databases.
  • Added new custom fields to our implementation of Bugzilla for upcoming release versions: Firefox 20, Thunderbird 20, Thunderbird ESR 20 and seamonkey 217.
  • Added 10 new machines to the Graphs database, and added new sets of machines for Mozilla ESR 17 and Thunderbird ESR 17.
  • Gave read-only database access to the two main leads of the Air Mozilla project.
  • Debugged and turned off a 10-second timeout in our load balancing pool that was causing Postgres monitors and processors to lose connection to their databases.
  • Discovered that the plugins database actually does better with the query_cache turned on, and tuned its size.
  • Tweaked tokudb_cache_size and innodb_buffer_pool_size on our Datazilla databases so that less swap would be used.
  • Created 2 read/write accounts for 2 people to access the development database for Mozillians.
  • Gave access to Datazilla databases for staging.

Wednesday, Nov 28th was my 1-year anniversary at Mozilla. Tomorrow is December! 2012 went by very quickly.

You may have noticed that I stopped posting the weekly news from the Mozilla DB Team. After going through the Operations Report Card and applying it to DBAs in OurSQL Podcast numbers 111, 112, 114, 115 and 116, I started thinking that the updates were really more like metrics, and it would better serve my own purposes better to do the updates monthly.

The purposes of doing this type of blog post are:
0) Answering So what does a DBA do, anyway?
1) Answering DBA? At Mozilla? Does Firefox have a database? Why does Mozilla have databases, and what for?
2) Showing what the DB team does for Mozilla, so that folks will understand that just keeping things working is actually a lot of work. It also helps compile yearly reviews of accomplishments.

We are also starting to get some metrics information. This month we started easy number of MySQL and Postgres machines, number of unique databases (mysql, information_schema, performance_schema and test are ignored, and duplicates, like the same database on a master and 2 slaves, are ignored), and version information.

As of today, we have 9 unique databases across 8 Postgres servers in 4 clusters, with 6 being Postgres 9.0 and 2 being Postgres 9.2 we are currently upgrading all our Postgres databases to 9.2 and expect that by the end of December all servers will be using 9.2.

We have 427 unique databases across 98 MySQL DB machines in 20 clusters, with 3 being MySQL 5.0, 71 being MySQL 5.1 (mostly Perconas patched 5.1), and 24 being MariaDB 5.5.

And in the last week of October and the month of November, we have:

  • Documented 4 more of our Nagios checks.
  • Started to upgrade Postgres databases to Postgres 9.2
  • Decommissioned a legacy database cluster for Firefox themes.
  • Built a new database cluster (complete with monitoring and backups) for a new Sentry implementation.
  • Upgraded 14 machines for general operating system updating purposes and to ensure that be2net drivers are up-to-date; out-of-date drivers can (and have!) caused servers to crash.
  • Upgraded MySQL 5.0 to MySQL 5.1 across 3 clusters and 7 machines.
  • Did a quarterly purge of Crash Stats data.
  • Had to re-sync 6 slaves when a transaction rolled back on the master, but some of the tables modified were MyISAM. So the master had data in some tables that was out of sync with the slaves.
  • Assisted in converting to use UTC timestamps in the Elmo database behind the Mozilla localization portal and the Bugzilla Anthropology Project, prompting a blog post on converting timezone-specific times in MySQL.
  • Decommissioned a legacy production generic database cluster that had over 60 databases on it.
  • Built a 5th database backup instance due to growing backup needs.
  • Changed binary log format to MIXED on our JIRA installation due to JIRA requirements and an upgrade to MySQL 5.1 issuing warnings that MySQL 5.0 had not.
  • Added checksums to the database cluster that runs Input and Firefox about:home snippets.
  • Archived and dropped the database behind Rock Your Firefox.
  • Exported Bugzilla data for a research project. Did you know if you are doing academic research, you can get a copy of Mozillas public Bugzilla data?
  • Gave read-only database access to a developer behind the Datazilla project.
  • Updated the email list for vouched Mozillians.
  • Backfilled missing crash-stats data after some failed cron scripts.
  • Cleared some junk data from the Datazilla databases.
  • Added new custom fields to our implementation of Bugzilla for upcoming release versions: Firefox 20, Thunderbird 20, Thunderbird ESR 20 and seamonkey 217.
  • Added 10 new machines to the Graphs database, and added new sets of machines for Mozilla ESR 17 and Thunderbird ESR 17.
  • Gave read-only database access to the two main leads of the Air Mozilla project.
  • Debugged and turned off a 10-second timeout in our load balancing pool that was causing Postgres monitors and processors to lose connection to their databases.
  • Discovered that the plugins database actually does better with the query_cache turned on, and tuned its size.
  • Tweaked tokudb_cache_size and innodb_buffer_pool_size on our Datazilla databases so that less swap would be used.
  • Created 2 read/write accounts for 2 people to access the development database for Mozillians.
  • Gave access to Datazilla databases for staging.

Wednesday, Nov 28th was my 1-year anniversary at Mozilla. Tomorrow is December! 2012 went by very quickly.

Learn MySQL For Free During a Virtual Self-Study Group!

Back in the summer, I heard about how Gene Babon of Boston’s PHP Meetup Group was brilliantly helping folks learn web programming through PHP Percolate, jQuery Jam and HTML5 Brunch. While he was explaining this, I thought to myself, “this … Continue reading

Back in the summer, I heard about how Gene Babon of Bostons PHP Meetup Group was brilliantly helping folks learn web programming through PHP Percolate, jQuery Jam and HTML5 Brunch. While he was explaining this, I thought to myself, this needs to be done for MySQL!

And so it will be. Starting in just over a month, January 1st, 2013, the first MySQL Marinate group will happen. We already have over 50 people signed up for the event itself, and as of right now there are 85 people in the meetup group itself, with over 30% of the group being female.

I found a book that teaches MySQL with exercises that students can do OReillys Learning MySQL. All you need to do is sign up for the event and acquire a copy of the book maybe you can find a used copy, maybe your library has it, or you can buy it new in paper or electronic version. Starting January 1st, read a chapter per week and do the exercises. We will go through chapter 12. The first few chapters cover database basics and installing and connecting to MySQL, so if you cannot start exactly on January 1st, thats fine. And you can do exercises ahead of time.

The best part is that each chapter (each week) has its own message thread so if you have a question about something in the book, or are having problems, there is a place to connect with others. Gerry Narvaja will be leading a group in Seattle in some in-person discussions/office hours, and I will do the same in the Boston area. I will also do some live office hours online in IRC, details forthcoming.

Its a study group. For MySQL. Where a few top experts are around to help out. Sign up today what do you have to lose?

About Master/Master Replication, from Books

It started with a tweet from a coworker asking if I can recommend reading for making a master/master MySQL server. There are plenty of caveats about writing to only one master at a time, and that master/master is not write … Continue reading

It started with a tweet from a coworker asking if I can recommend reading for making a master/master MySQL server. There are plenty of caveats about writing to only one master at a time, and that master/master is not write scaling, but I think I tackled it pretty well in the MySQL Administrators Bible. It is not a very long topic, so I made a PDF of the relevant pages. High Performance MySQL also has a few pages that I would recommend reading, and the third edition has similar information as the Bible, although it goes into more detail about why you might use master/master replication and what might go wrong. Unfortunately I could not find a resource for the few pages of text from High Performance MySQL, and I am not sure if this person needs the whole book for just a few pages.

Converting Timezone-Specific Times in MySQL

Twice last week, a developer wanted to convert the existing datetime values in a database to UTC. The datetime values were the default for the server, which was the US/Pacific time zone, which is subject to Daylight Saving Time changes. Both developers for both applications wanted to convert all the times to UTC, so there would not be any changes due to Daylight Saving Time, and asked me for an easy query to know which times should be changed by adding 7 hours and which times should have 8 hours added to them.

The good news is that MySQL has some built-in functionality to make this easier. You may know about the CONVERT_TZ() function in MySQL, and that you can use it in a query to convert times like this:

mysql> SELECT CONVERT_TZ(NOW(),'-8:00','-0:00');
+-----------------------------------+
| CONVERT_TZ(NOW(),'-8:00','-0:00') |
+-----------------------------------+
| 2012-11-16 20:07:24 |
+-----------------------------------+
1 row in set (0.00 sec)

However, that is not much of a help, because if you know the timezone offset you can just add the right number of hours:

mysql> SELECT NOW()+INTERVAL 8 HOUR;
+-----------------------+
| NOW()+INTERVAL 8 HOUR |
+-----------------------+
| 2012-11-16 20:08:35 |
+-----------------------+
1 row in set (0.00 sec)

The Easier Way
A much easier way would be to set up the MySQL timezone tables so you could run a query like:

mysql> SELECT CONVERT_TZ(NOW(),'US/Pacific','UTC');
+--------------------------------------+
| CONVERT_TZ(NOW(),'US/Pacific','UTC') |
+--------------------------------------+
| 2012-11-16 20:10:30 |
+--------------------------------------+
1 row in set (0.00 sec)

And just to prove that this does the proper time conversion, consider this same time, 2 weeks ago, before the Daylight Saving Time change:

mysql> SELECT CONVERT_TZ(NOW()-interval 14 day,'US/Pacific','UTC');
+------------------------------------------------------+
| CONVERT_TZ(NOW()-interval 14 day,'US/Pacific','UTC') |
+------------------------------------------------------+
| 2012-11-02 19:10:52 |
+------------------------------------------------------+
1 row in set (0.00 sec)

MySQL knows when to add 8 hours, and when to add 7 hours. Magic!

Well, not quite magic. MySQL can only do this if you give it the timezone information. Luckily, servers have that information, and there is a tool that ships with MySQL that converts this timezone information to the right tables. Just follow the instructions on this page to populate the timezone tables. It’s typically as simple as running a command like this in the shell:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

Once that table is populated you can use the CONVERT_TZ() function to update the existing values in the database, using the text values for time zones.

Note: If you are living somewhere with Daylight Saving Time or Summer Time, there may be several different choices for what text you use for the timezone. Make sure you know exactly what these timezones do. For example, PDT is Pacific Daylight Time, which is UTC-7. PST is Pacific Standard Time, which is UTC-8. US/Pacific is the name for the timezone that is PDT in the summer and PST in the winter, so if you wanted to automatically convert dates that might fall under either PDT or PST, you want to use the US/Pacific time zone.

Twice last week, a developer wanted to convert the existing datetime values in a database to UTC. The datetime values were the default for the server, which was the US/Pacific time zone, which is subject to Daylight Saving Time changes. Both developers for both applications wanted to convert all the times to UTC, so there would not be any changes due to Daylight Saving Time, and asked me for an easy query to know which times should be changed by adding 7 hours and which times should have 8 hours added to them.

The good news is that MySQL has some built-in functionality to make this easier. You may know about the CONVERT_TZ() function in MySQL, and that you can use it in a query to convert times like this:

mysql> SELECT CONVERT_TZ(NOW(),'-8:00','-0:00');
+-----------------------------------+
| CONVERT_TZ(NOW(),'-8:00','-0:00') |
+-----------------------------------+
| 2012-11-16 20:07:24 |
+-----------------------------------+
1 row in set (0.00 sec)

However, that is not much of a help, because if you know the timezone offset you can just add the right number of hours:

mysql> SELECT NOW()+INTERVAL 8 HOUR;
+-----------------------+
| NOW()+INTERVAL 8 HOUR |
+-----------------------+
| 2012-11-16 20:08:35 |
+-----------------------+
1 row in set (0.00 sec)

The Easier Way
A much easier way would be to set up the MySQL timezone tables so you could run a query like:

mysql> SELECT CONVERT_TZ(NOW(),'US/Pacific','UTC');
+--------------------------------------+
| CONVERT_TZ(NOW(),'US/Pacific','UTC') |
+--------------------------------------+
| 2012-11-16 20:10:30 |
+--------------------------------------+
1 row in set (0.00 sec)

And just to prove that this does the proper time conversion, consider this same time, 2 weeks ago, before the Daylight Saving Time change:

mysql> SELECT CONVERT_TZ(NOW()-interval 14 day,'US/Pacific','UTC');
+------------------------------------------------------+
| CONVERT_TZ(NOW()-interval 14 day,'US/Pacific','UTC') |
+------------------------------------------------------+
| 2012-11-02 19:10:52 |
+------------------------------------------------------+
1 row in set (0.00 sec)

MySQL knows when to add 8 hours, and when to add 7 hours. Magic!

Well, not quite magic. MySQL can only do this if you give it the timezone information. Luckily, servers have that information, and there is a tool that ships with MySQL that converts this timezone information to the right tables. Just follow the instructions on this page to populate the timezone tables. Its typically as simple as running a command like this in the shell:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

Once that table is populated you can use the CONVERT_TZ() function to update the existing values in the database, using the text values for time zones.

Note: If you are living somewhere with Daylight Saving Time or Summer Time, there may be several different choices for what text you use for the timezone. Make sure you know exactly what these timezones do. For example, PDT is Pacific Daylight Time, which is UTC-7. PST is Pacific Standard Time, which is UTC-8. US/Pacific is the name for the timezone that is PDT in the summer and PST in the winter, so if you wanted to automatically convert dates that might fall under either PDT or PST, you want to use the US/Pacific time zone.

Out of Resources? Check table_open_cache

We have a backup server that, from time to time, gets errors when doing mysqldump backups (we do physical backups and logical backups, but the physical backups work fine). The errors look like this:

mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'mozillians_org'': Out of resources when opening file '/tmp/#sql_3b63_0.MYI' (Errcode: 24) (23)
mysqldump: Error: 'Out of resources when opening file '/tmp/#sql_3b63_2.MYI' (Errcode: 24)' when trying to dump tablespaces

I tried restarting MySQL, and that helped, for a while. It helped to the point that we put in a cron job to restart MySQL every 4 hours so we would not run out of resources.

But that did not last forever. We tried restarting more frequently. We tried increasing ulimits. Again, this helped for a while, or seemed to.

When it happened again today, I decided to look around again for what other folks’ experience was. I ended up finding someone who had this problem on Windows, and what fixed it for them was changing table_cache (table_open_cache in MySQL 5.1 and higher).

Now, I am a staunch fighter for the Battle Against Any Guess. So I thought about it, and asked myself, “Does this make sense? Would changing this actually free up any resources?” and I decided to give it a try. It made sense, especially when I considered what might be happening when I rebooted or raised the ulimits – the resources were freed. I thought about it, and realized that if the resources were not tied up in the table_open_cache, that might also help.

I reduced the table_open_cache from 1024 to 200 – since the server in question is a backup server, it does not need such a large value. Well, as you can guess from the title, it worked!

We have a backup server that, from time to time, gets errors when doing mysqldump backups (we do physical backups and logical backups, but the physical backups work fine). The errors look like this:

mysqldump: Couldn't execute 'SHOW FUNCTION STATUS WHERE Db = 'mozillians_org'': Out of resources when opening file '/tmp/#sql_3b63_0.MYI' (Errcode: 24) (23)
mysqldump: Error: 'Out of resources when opening file '/tmp/#sql_3b63_2.MYI' (Errcode: 24)' when trying to dump tablespaces

I tried restarting MySQL, and that helped, for a while. It helped to the point that we put in a cron job to restart MySQL every 4 hours so we would not run out of resources.

But that did not last forever. We tried restarting more frequently. We tried increasing ulimits. Again, this helped for a while, or seemed to.

When it happened again today, I decided to look around again for what other folks experience was. I ended up finding someone who had this problem on Windows, and what fixed it for them was changing table_cache (table_open_cache in MySQL 5.1 and higher).

Now, I am a staunch fighter for the Battle Against Any Guess. So I thought about it, and asked myself, Does this make sense? Would changing this actually free up any resources? and I decided to give it a try. It made sense, especially when I considered what might be happening when I rebooted or raised the ulimits the resources were freed. I thought about it, and realized that if the resources were not tied up in the table_open_cache, that might also help.

I reduced the table_open_cache from 1024 to 200 since the server in question is a backup server, it does not need such a large value. Well, as you can guess from the title, it worked!

Liveblog: Secrets and Success in the Style of GLEE

Today and tomorrow I am at CodeConnexx – An Open Source Technology and Life Conference. There are some great talks…the first talk this morning is Secrets and Success in the Style of GLEE – a bunch of songs and how they relate to being successful. By Jennifer Marsman of Microsoft. Taylor Swift, “Speak Now” –… Read more

Today and tomorrow I am at CodeConnexx An Open Source Technology and Life Conference. There are some great talksthe first talk this morning is Secrets and Success in the Style of GLEE a bunch of songs and how they relate to being successful. By Jennifer Marsman of Microsoft.

Taylor Swift, Speak Now be vocal, if you have an idea, do not be shy about it. In an interview, dont stop talking meaning show them your passion but dont force it, of course. Ask lots of questions, do not make assumptions. And if you get stuck in a problem, you can reason your way through it by talking out log.

Bonnie Raitt Lets Give Them Something To Talk About. Communicate! Let your manager know whats going on and what you are doing. Give them stories to tell about you and good ones too! Trip reports if you go on a trip, summary status e-mails, one-on-one meetings, etc.

Aretha Franklin Respect. At the end of the day, diversity of opinion, education levels, backgrounds, is key to having successful business ideas. You can learn something from everyone. You can go around at a party, meet people and figure out what they are better than you at.

Frank Sinatra Luck Be a Lady. At some other conference, Jennifer saw a formula for success: Success = hard work + intelligence + luck. She did not like that, because luck is a bunch of randomness, and if we work hard and are smart, we should be successful, right? But its completely true that luck is part of the equation. For example, in an interview. You can control working hard and you can control learning, and you will be well-positioned for when opportunity knocks.

Bette Middler Wind Beneath My Wings. Role models people that you worship from afar, perhaps stalk on Twitter, but probably wont have a relationship with. Mentors are folks that are actively helping you grow, which you have a relationship with. You can choose a mentor to help you work on a skill or set of skills, and you can choose different people based on what they are good at. Someone who is good at MySQL might not be good at blogging or work/life balance. Jennifer challenges all of us to be role models to other people by speaking and blogging, because those folks are seen as industry experts, so you will become a role model.

Brittany Spears Oops I Did It Again. The importance of making mistakes making mistakes is good. Take big risks, because when a mistake does happen, you can learn from them. When a panel of successful tech women were asked what they would do differently, they said they would have taking more big risks.

Bill Withers Lean on Me. Delegate if you need to. Ask people for help. Out of time, health and money, you can have any 2 of the 3. Young folks usually have time and health but not money. In your 30s, you might have health and money but not time. And when you get older, you have time and money, but not health. Optimize for what you do not have. If you do not have time, then make it so you have more time e.g. buying pre-made salad or getting a cleaning lady is a money/time tradeoff.

Journey Dont Stop Believing. Believe in yourself. Imposter Syndrome at Wikipedia. If you do not know, say you do not know something.

Conference Tips

As many folks know, I do a bit of traveling, both going to conferences, and speaking at them (MySQL and others). So I have compiled a list of tips and tricks, from the basics like “do not forget to eat breakfast” to putting your business cards inside your bag. I have a list with pictures… Read more

As many folks know, I do a bit of traveling, both going to conferences, and speaking at them (MySQL and others). So I have compiled a list of tips and tricks, from the basics like do not forget to eat breakfast to putting your business cards inside your bag. I have a list with pictures that I will add to as I think of more. I hope you enjoy this tumblr-style list of conference tips!

Mozilla DB News, Fri 26 October: puppetizing backups

This week was a great catch-up week. There is only one conference I am doing for the rest of the year, CodeConnexx, though submissions for conferences in the first quarter of 2013 are happening, too. We have some great candidates we are interviewing for our open Database Administrator position. The database team has gotten a… Read more

This week was a great catch-up week. There is only one conference I am doing for the rest of the year, CodeConnexx, though submissions for conferences in the first quarter of 2013 are happening, too. We have some great candidates we are interviewing for our open Database Administrator position.

The database team has gotten a lot of great stuff done this week (I know, I say that all the time, but its true!):

  • Audited and got rid of legacy MyISAM tables in our Addons database.
  • Decommissioned an old MySQL cluster that has not been in use for a while. It is the database that used to back the predecessor to Mozillians.
  • Moved half our backups in one data center to another machine in the same data center, as they were on a netapp thats having problems with being overloaded. Our Storage Team is talking to NetApp, but for now we alleviated some of the problems by moving the backups to another head. We also opened the process to get hardware allocated so our backups arent using NFS.
  • We took the move as an opportunity to puppetize the backup servers. Now all the backup scripts and backup instances are puppetized, with just a few more challenging items remaining: config files and startup scripts for each backup instance.
  • We have enabled a Nagios check for pt-config-diff so that we will be alerted (by e-mail only) when a running configuration on MySQL is different from the configuration file.
  • Fixed automatic slow query log copying from Addons to a machine our web developers use.
  • The entire IT team is working on documenting our Nagios checks specifically, what to do for each Nagios check so our oncall folks can handle more problems before we have to be called in. We have documented 6 checks so far.
  • Fixed a fascinating problem in which ulimits we put in place were not being read by Percona, when we upgraded from MySQL 5.1 to Percona 5.1. (I have to blog about this, actually, with all the details)
  • We upgraded the kernel for 3 different Addons database servers due to a crashing bug.
  • Finished work on one of our multi-use staging clusters upgrading and converting to innodb_file_per_table.
  • Reduced the innodb_buffer_pool_size on one of our multi-use staging clusters, so that swapping and its corresponding cpu load would be reduced.
  • Loaded in missing data due to a failed cron job on our Crash Stats cluster.
  • Deleted some spam comments in Bugzilla.
  • Created two new read/write accounts for the development database cluster for Mozillians.
  • Moved our soon-to-be deprecated cacti database off an SSH jump host, which means the jump host no longer has a MySQL installation on it.
  • Ran a query to figure out how many Bugzilla e-mail addresses have + or in them as a percentage of total emails.

Next week is Halloween! Are you ready?

Slides From Northeast PHP Talks

I was asked about slides for my talks at Northeast PHP, so I figured I would post them here so folks could benefit. I gave three MySQL talks. In the list below, the talk name links to the description on the conference website, and you can get the slides by clicking the “PDF slides” links.

Are You Getting the Best Out of Your MySQL IndexesPDF slides
Getting Rid of Scheduled Tasks Using MySQL EventsPDF slides
Better JOINs and SubqueriesPDF slides

Hope you enjoy them!

I was asked about slides for my talks at Northeast PHP, so I figured I would post them here so folks could benefit. I gave three MySQL talks. In the list below, the talk name links to the description on the conference website, and you can get the slides by clicking the PDF slides links.

Are You Getting the Best Out of Your MySQL Indexes PDF slides
Getting Rid of Scheduled Tasks Using MySQL Events PDF slides
Better JOINs and Subqueries PDF slides

Hope you enjoy them!