Tuesday, April 29, 2008

Sun Employees Connect Party














An excellent ending to a great educational day. The party was outstanding. I didn't realize I had so many dance moves left in me. Thanks to the people that showed me some cool dance moves that made me look good.

In previous times, people discounted the telephone, automobile and Internet as being toys and play things for people with too much idle time. The same people that laugh at how short sighted people were in the past to new technologies, are the same people that laugh at some of today's emerging technologies. Today's event brought together a lot of people that understand there are new and emerging communication vehicles that are changing the way people interact and will work in the future.

Today reminded me not only does the world not stand still, its accelerating. I've been to a lot of outstanding conferences in the last year such as Oracle Open World, Collaborate 2008 and the MySQL Users Conference where I met a lot of outstanding people and exchanged a lot of ideas. Today's Sun Employees Connect reminded me how fast things change and I'd better maintain the eye of the tiger to stay on the leading edge. I can think easily of ten conferences I would like to attend before the year is over. Java One, ODTUG, BEA and a few gaming conferences are at the top of my list.  

Whew, what a long and fruitful day ...

Sun Employees Connect: An excellent day at Sun














I really enjoyed the Sun Employees Connect event. Sun executives such as Jonathan Schwartz, Martin Mickos, Rich Green, Don Grantham, John Fowler, Karie Willyerd, Hal Stern, Lin Lee shared ideas, perspective and direction for the organization. Sun's innovativeness and strategic directions make it a lot of fun to go to work everyday.   I really felt a lot of the same closeness and willingness to share with the employees that I felt about the MySQL culture.  I personally was really motivated to get more involved in Sun activities in and out of work after hearing all the speakers.

The work of Fiona's team and all the volunteers made for a great event. Their outstanding efforts were greatly appreciated. Everything was an incredible amount of fun and a very unique educational opportunity. The things I learned today, the networking connections I made and the realization of emerging technologies made it a unique learning experience.  I spent way to much time in the building workshops but they were a lot of fun.  I wanted to go to Racers Island and race cars but I had too much fun building things. Thanks Whoops!

Hats off to everyone for putting on such a great event!

Tuesday, April 22, 2008

MySQL Users Conference 2008

My wrap up on the MySQL Users Conference 2008:

  • All the rooms were filled for almost all presentations.
  • Any presentations on Falcon, new InnoDB plug in and Maria were packed. The race is on! Falcon drew first blood by being available in the MySQL 6.0 release but the new features in InnoDB look very good.
  • Performance tuning presentations were SRO.
  • I found all the presentations on the query cache, Innodb, and Myisam to be excellent. They all had little tidbits and recommendations that were very useful.
  • I was very impressed that all of my students I seen at the conference were very happy about their MySQL projects.
  • Birds of the Feather were the best BOFs I've ever seen put on at a conference.
  • Great diversity in the presentation topics.

Takeaway thoughts after the conference:
  • Like all database server environments tuning is a high priority for everyone.
  • Data warehousing in MySQL is gaining strong momentum.
  • Customers are using MySQL in ways I never imagined.
  • Lots of enthusiasm for MySQL at the conference.
  • I would not be surprised to see the size of the conference double for next year.
  • I thought the conference had a high ROI for attendees.

Wednesday, April 16, 2008

MySQL Users Conference - Wednesday

Today there are a lot of presentations that stand out. They include:

  • Roland Bouman - Information_schema presenations.
  • Tobias Asplund and Jay Pipes - MySQL Performance.
  • Tom Hanlon - Benchmarking and Monitoring.
  • Balint - Deadlocks, Wait Timeouts and Other Transactional Issues.
  • Grimmer - MySQL Backups using LVM Snapshots.

MySQL Users Conference

It's great seeing all the excitement and enthusiasm at the MySQL conference. From my perspective some of the key highlights from the first two days include:
Monday - Memcache - A big hit with a lot of interest.
Tuesday: Top Highlights
MÃ¥rten and Jonathan's keynotes.
New features in InnoDB - Ken Jacobs showed a number of new features in the new alpha release of InnoDB that really stood out. It's a plug in that needs to be installed in a 5.1.23 or greater release of MySQL. Rebuilding of indexes and performance enhancements definitely will make it worthwhile to look at these features in more detail.

  • Fast index creation without copying data.
  • Data compression.
  • New INFORMATION_SCHMEMA objects for compression and locking.
  • New row format to support long BLOB, TEXT and VARCHAR columns out of line.
  • TRUNCATE TABLE recreates the .ibd file.
  • More dynamic features with innodb_file_per_table.
  • INNODB strict mode.
There were also some excellent presentations on replication and performance. The technical birds of a feather presentations were also very cool.

The competition between InnoDB, Falcon and Maria has definitely stepped up. This competition will be a big win for the user community.

Saturday, April 12, 2008

MySQL Users Conference 2008 - Getting Ready

The MySQL Users Conference is just about to start. With MySQL now part of Sun, it is infusing a lot of energy and enthusiasm into MySQL and the conference. This is shaping up to be the best MySQL conference ever. If this is your first conference, here are my top 10 things I recommend you do to get ready for the conference:

1) Solidify your personal schedule and set backups in case a room is full for a presentation.

2) Plan on spending time in the vendor booth area, plan to ask experts some good questions. Leverage your time there.

3) What is your networking game plan? One of the key benefits is to network at the conference. What are some good things to ask other people while you are there. Try to meet as many people as you can.

4) Look at all the breakfast and evening events. Plan ahead for activities.

5) Have your business cards and other information ready.

6) Maximize attending presentations: Download presentations in advance so you can ask more detailed questions during the presentation. Make sure you check the daily agenda updates. There are always cool things added at the conference.

7) Meet instructors that are part of the MySQL education team. A very cooool group! Tobias, Glynn, Sarah, Kai, Morgan, David, Steve, Max and Tom. You all rock!

8) Read some conference blogs to make sure you are in the loop at the conference.

9) There are some very hot topic areas. Some of them include:

  • Memcache
  • DBRD and Heartbeat
  • Falcon and Maria
  • Enhancements to InnoDB
  • Learning internals
  • All the software available for MySQL The hot area seems to be data warehousing.

10) Introduce yourself to peers, presenters and conference volunteers. They all want to make sure you have a great time.

One more for good luck: Bring an extra bag or suitcase to bring additional things back from the vendor booths, etc.
See you there!

Friday, March 28, 2008

Using INNODB_FILE_PER_TABLE

DBAs are always try to determine the best way to manage their storage for InnoDB. The three main options include:
  1. Having one shared InnoDB tablespace data file.
  2. Setting up individual files per InnoDB table.
  3. Setting up a shared tablespace across multiple files.
Option 1: Having one shared InnoDB tablespace data file.
This is fine if you have a simple and small MySQL database. Great for new DBAs to get comfortable with managing MySQL storage.

Option 2: Setting up individual files per InnoDB table.
I like this option when I need to create large transaction tables. This option works well with partitioned objects. Separating your core tables offers more flexibility in administration, backup and recovery and from a storage perspective makes good common sense. I however, do not like using this for all of my InnoDB tables. The more individual files I have to manage the more a DBA will get nickel and dimed from an administration perspective.

Option 3: Setting up a shared tablespace across multiple files.
I like this option because this gives me more flexibility in separating out my I/O if I do not have a storage array doing the striping for me. This allows me to get a lot of my core tables and separate them from other tables by defining their storage in separate data files where I control their location by defining the path of the tablespace data files.

Obviously having a storage array that does your striping and mirroring makes disk I/O management for databases a lot easier. :)

Tuesday, March 25, 2008

Top Ten DBA Interview Questions

I'm often asked what interview questions should be asked of a new DBA you are considering to hire. Mistakes in a DBA hire can cost an organization a lot of money and hurt morale. There are a lot of factors that determine how well a DBA will fit into an environment. I thought I would share some of the things I consider when I interview a new DBA. These questions can be asked to any type of DBA (MySQL, Oracle, SQL Server, DB2, ..).

Questions you have to answer for yourself before interviewing a new DBA include:
  • What skill sets are you looking for in a DBA? What skills are need to have and which are nice to have?
  • How much time do they have to get up to speed?
  • How important is it you hire the right person? (Or what investment are you willing to make to hire the right person).
When interviewing a potential new DBA it is important to understand:
  • What is their technical depth and experience.
  • What type of environments have they worked in.
  • How well do they interact with customers.
  • How well will they fit in to the team and the company environment.
  • What techniques and methodologies do they use to manage databases.
  • How will they impact the current database management practices.
The type of DBA you are trying to hire greatly impacts how you interview the candidates. I don't care to ask a lot of syntax questions or a lot of technical minutia. I want to understand:
  • The depth and breadth of their knowledge.
  • Their methodology and approach to managing databases.
  • How they solve problems.
  • Their commitment and work ethic.
I could write a white paper on explaining the rationale behind each of these questions, but I'll cut to the quick and give a ten step process to interview a new DBA candidate. These questions assume you are looking for a production DBA. If your organization is new and you do not have the expertise to hire the right candidate, you need to hire a consultant that can help your organization through this process.
  1. What are four errors found in an alert (error) log that can ruin a DBA's appetite and how does the candidate avoid them?
  2. What are four performance bottlenecks that can occur in a database server and how are they detected?
  3. Ask them to explain their philosophy for database management and how they implement best practices and guidelines. This should include questions related to the configuration you are running (replication, cluster, OLTP, data warehouse, etc.).
  4. What area of database internals do they understand the best that helps them troubleshoot problems. Ask them to explain this area so you can get an understanding of their depth of knowledge in this area.
  5. Get ten common types of trouble tickets DBAs have solved in your organization and ask them how they would solve them.
  6. Get five difficult problems your DBAs have had to solve and ask them how they would solve them.
  7. Ask them to explain five things they have learned recently that makes them a better DBA and where they learned them.
  8. Set up a simple database environment. Ask them to use two different methods to back up the database. Break the database. Have them recover the database using the backups they created.
  9. Ask them to give a detailed explanation of setting up an environment for disaster recovery or an upgrade for an important database.
  10. Have them write or build a few things in the sample database to demonstrate their knowledge and experience. This should include typical tasks they will be expected to perform to manage the environment.

I like a three or four interview process. Each interview should only leave the candidates that meet the profile of the type of person you want to hire.
  • First interview I like to get a baseline if they match the resume they sent and do they meet the profile of what you are looking for.
  • Second interview I like to make very technical to see if they meet the technical profile of what you are looking for. Make sure you make this sufficiently in-depth for the position you are hiring. There should be no doubt at the end of this interview as to whether they have the technical skills or not for the position you have open.
  • Third interview I like different members of the team determine how well they will fit into your environment and then perform one more level of technical evaluation to make sure you have the right candidate.
Have fun and good luck. What are some of your favorite questions?

Sunday, March 23, 2008

Setting up Apache and PHP on Mac OS Leopard

Apache is a fairly straight forward setup if you use some utility or distribution to help you. A manual installation will take more time. You can Google installation instructions or use a utility like XAMPP to simplify the installation. XAMPP is a distribution that will walk you through an Apache, MySQL, PHP, phpMyAdmin installation. Once you get comfortable with XAMPP these software components can be installed on a Linux or Windows platform in a few minutes.

I'm running Mac OS (Leopard) which comes with a built-in Apache web server (2.2.6) and PHP (5.2.4) preinstalled. On Mac OS (Leopard), perform the following steps to get the Apache Web Server (AWS) and PHP up and running in minutes.
  1. Go to System Preferences. Under Internet and Network select the Sharing icon.
  2. Select the checkbox under Web Sharing. It will return your computer's website URL (IP address or host name) (i.e. http://xxx.xxx.xxx.xxx/). This will also start AWS.
  3. Open up a browser and type your computer's website URL displayed in the Web Sharing page in System Preferences. After typing this URL in a browser. You should get a browser page that shows you your Apache web server is up and running. This is too cool. Mac OS's built in Apache web server takes just a few clicks to have Apache up and running.
  4. Once you've confirmed the Apache web server is up and running, type the httpd -V command to get information on your Apache installation.
Running httpd -V.
$ httpd -V

The httpd -V command returns important information
  • The Apache Web Server version you are running.
  • The location of the Apache configuration file (httpd.conf).
  • The location of the access and error log file.
  • Apache configuration options.
Example snippet of output from the httpd -V command:
Server version: Apache/2.2.6 (Unix)
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
-D DEFAULT_ERRORLOG="logs/error_log"

With Mac OS (Leopard) you can find the access_log and error_log files in the following location:
/private/var/log/apache2/

Turn on PHP 5 on Leopard by uncommenting the following line in your httpd.conf file using a text editor.
# LoadModule php5_module libexec/apache2/libphp5.so

AWS needs to be stopped and restarted for the changes to take effect. Starting and stopping the AWS can be done through the System Preferences | Sharing window. Clicking the Web Sharing checkbox can be used to stop and start Apache. Restart the Apache Web Server so the configuration changes take effect.

Create a PHP configuration file. Then change the error reporting option to display all errors. Instructions:
$ cd /private/etc
$ sudo cp php.ini.default php.ini
$ sudo vi php.ini
Change the error reporting line using vi or a text editor to display all error messages.
error_reporting = E_ALL & -E_NOTICE
error_reporting = E_ALL

Test your PHP configuration
  1. In a browser type your computer's website displayed in the Sharing page. This should launch Safari and display an Apache web page.
  2. Create a page called test.php (lots of examples on Google). Save it in the directory Macintosh HD:Library:WebServer:Documents.
  3. Go to your browser and type your computer URL with a test php (lots on Google) program. If you get the PHP info your configuration is working.
http://xxx.xxx.xxx.xxx/test.php


Apache and PHP should now be up and running on your Mac. Have fun!

Saturday, March 22, 2008

Sun - A very positive beginning

During the last month, I have had the opportunity to be involved in three MySQL training classes that have included Sun employees. Without exception, every Sun employee has shown a lot of enthusiasm about the potential for MySQL and Sun. Every Sun employee has gone out of their way to welcome MySQL employees. There have been a lot of excellent discussions on the potential of Sun and MySQL technology and what they potentially can do together. I wish we could have podcast some of these discussions. The sharing of ideas and the collaboration was fantastic. Getting a number of knowledgeable people in database, messaging, identity management, storage, cluster and application server technology in one room and the exchange of ideas was a great experience. Thanks Pedro, Maggie, Walter, Ram, Andrea, Malek, Mitch, Seumas and everyone for all the positive energy and warm welcome!

Next week the Sun on-board process begins for most U.S. MySQL employees. Meeting a number of fantastic people at Sun is definitely a great beginning to the Sun experience.

MySQL, Blade Servers and Storage

When people think of MySQL they normally think of MySQL running across multiple Intel servers running Red Hat, SuSE or Windows. This is great for small and medium sized organizations. However, adding a number of Intel boxes and dealing with heating, electricity, power and storage is not an ideal scenario for larger organizations.

As MySQL grows in popularity, I believe more organizations are going to look at using blade servers and storage arrays to manage MySQL databases. Will Sun put together a solution that can generate enthusiasm for using Sun Blade Servers and Sun storage solutions. It's kind of funny that I say this. With over twenty years of database and Unix administration experience, to me there is no better operating system for running database servers than Solaris. My personal perspective is that since the days of SunOS, Sun Microsystems has by far the "best" operating system for databases. Does that matter in today's world? I'm not sure.

When you look at Solaris compared to Linux, Solaris is by far the better operating system in my humble opinion. Yet, that does not seem to matter. Linux provides the core functionality people are looking for at the fraction of the cost, so Linux is by far more popular. Actually, this is one way MySQL is gaining market share compared to other proprietary databases. MySQL has the core functionality that people want, at a fraction of the cost of proprietary systems. Other database vendors add more and more functionality, yet this new functionality does not impact the growing popularity of MySQL. Cost is not the only reason MySQL and Linux are popular, yet cost is a strong factor in the popularity equation.

Can Sun package a complete solution with MySQL that can excite the IT industry? This may be one of the key questions for 2008.

MySQL Growth in the Database Market

MySQL can be used 64,000 different ways with just about any type of database. Despite this flexibility, here is how I see the growth of MySQL in the database market:

  • Web-based applications are an area of strength for MySQL. MySQL will continue to grow and remain popular in this space.
  • Data Warehousing is the big potential growth area for MySQL. In the next few years it will be very interesting to monitor MySQL in the data warehousing market. Fast reads, large horizontal scalability and strong yet relative low-cost solutions make MySQL ideal for data warehousing.
  • OLTP is an area that MySQL works well in for small and medium sized solutions. MySQL version 6 is where MySQL can grow significantly in the OLTP market. The Falcon (OLTP) storage engine, designed for modern large memory and multi CPU systems, increased on-line functionality and improved high availability offers significant potential for MySQL in the area of OLTP applications. MySQL version 6 will make MySQL more popular in the on-line Internet database market. You can also expect Oracle (InnoDB) and other 3rd party companies to also offer new scalable OLTP storage engines in the next few years.
The future looks bright for MySQL. It's interesting to look at the database market. It is Oracle and MySQL that are growing in popularity that can be used in multiple platforms.
  • DB2 is typically an IBM solution.
  • SQL Server is typically a Microsoft or low-cost simple solution.
  • Oracle and MySQL are the two database solutions that are popular with multi-platform solutions. HP-UX, AIX, Solaris, Red Hat, SuSE , Windows, etc. are all strong and popular solutions for both Oracle and MySQL. It is only Oracle and MySQL that continue to remain popular on multiple platforms.
Oracle will continue to dominate the large aircraft carrier database solutions and the business applications market. SAP will continue to try and use DB2 and SQL Server with their business applications and use Oracle only when they have to.

As for the web-based applications, small/medium data warehousing applications and small/medium OLTP environments, MySQL will continue to grow in popularity.

Data Warehousing - The Next Step for MySQL

MySQL excels as a strong solution for web-based solutions. MySQL’s extremely fast read rates and ability to scale horizontally with replication makes MySQL a popular low cost of ownership platform for web-based applications. The next area I expect MySQL to encounter significant growth is in the data warehousing market. MySQL’s fast reads and horizontal scalability makes it a strong consideration for the following environments:
  • Real Time and Archive Data Warehouses
  • Data Marts
  • Large Reporting Systems (DSS)
There are a number of strong solutions in the area of BI reporting, Analytics and data integration solutions that can be used with MySQL. Using MySQL for a data warehousing solution allows an organization to build small and medium sized data warehouses without the large startup costs of proprietary databases as well as the extremely expensive BI and data integration solutions that come with proprietary databases.

They say the number one reason restaurants fail is not being able to overcome large startup costs. Using MySQL as the database platform for small and medium data warehouses allows an organization to deliver a strong data warehousing solution at a fraction of the cost of proprietary solutions. This is why I expect data warehousing to be an area of significant growth for MySQL databases in the next few years.

Wednesday, March 12, 2008

Important URLs for Sun and MySQL Documentation

MySQL Documentation: dev.mysql.com

Sun Documentation: http://docs.sun.com/app/docs

Zones: http://www.sun.com/bigadmin/content/zones/

Resource Pools: http://docs.sun.com/app/docs/doc/817-1592/6mhahuolg?a=view

ZFS (New File System): http://www.sun.com/software/solaris/ds/zfs.jsp

SMF (Service Management Facility): http://www.oreilly.com/pub/a/sysadmin/2006/04/13/using-solaris-smf.html

Very cool class in San Francisco

It's an incredible privilege to be able to teach other people. I've always found that knowledge is like love. No matter how much you give you always get more back.

I'm teaching a class this week in San Francisco to a very cool group. Students are from all over the world: China, Malaysia, Germany, Spain, Italy, India and the U.S. It is great to have people from all over the world and we all speak the same language, databases. We're all having a lot of fun singing "Kumbaya". :)

So far the top rated restaurants among the class this week include:
  • Colibri
  • House of NanKing
  • Great Eastern Restaurant
  • Sultan
  • Puccini and Pinetti's
  • Magnolia Pub and Brewery

MySQL and Sun

I don't know if Sun still offers those Sun leather jackets, they were pretty cool. I need to figure out how to get one. Sun areas of interest for MySQL DBAs include:
  • Sun Clusters and how they work with MySQL Cluster.
  • MySQL work and Sun Zones.
  • MySQL works and ZFS.
  • SMF.

Books for new MySQL DBAs
















  • These are two books I would highly recommend for new MySQL DBAs. Both are very well written with a nice writing style. I really like the writing style of the person that wrote the Head First SQL class.
    • Head First MySQL
    • MySQL 5.0 Certification Study Guide

    Wednesday, March 5, 2008

    MySQL - An IT Tipping Point

    A ''tipping point'' is a concept, product or idea that becomes a hot commodity that attracts everyone's attention, interest or inspiration. There are always specific reasons and factors that are not easily identifiable why one product becomes a tipping point and others do not. Products not considered a tipping point usually never become a tipping point and ofter never understand why they didn't. There are tons of examples of this. VHS versus Beta, MP3 players versus iPods, Blue Ray versus HD DVD. The list is endless.

    MySQL is "the" hot tipping point product in the IT industry. MySQL is an incredibly popular open source part of the LAMP stack. There are additional open source products like PostgreSQL, MaxDB, Firebird, Ingres, Apache Derby, etc. No database in the industry is creating the buzz, excitement and interest that MySQL does. People can debate the feature/functionality, performance, etc. between the different databases. Make any comparison you want, none of the other databases that are compared to MySQL are going to be the "tipping point" MySQL is.

    MySQL is a very unique organization with employees that believe in disrupting the industry with innovativeness and new ways of doing things. MySQL employees have been raised with the concept of open source, sharing and caring about their contributions to open source. I do not believe their are many companies in the world that have the "global team" concept that MySQL does. I interact with MySQL team members in Sweden and Germany as easily as team members in my home city. It is the uniqueness of the MySQL employees that are creating the tipping point.

    Web 2.0 environments are increasing exponentially in popularity and MySQL is in the center of the storm of this exciting growth. MySQL has the potential to be the center of innovativeness in Sun the way NeXT was the center of innovation in Apple. Sun has a very powerful engine for future growth in MySQL. There is one thing MySQL has that no other database has. It has the tipping point.


    Installing MySQL Administrator on Linux

    Installing the MySQL GUI tools are pretty easy on Linux (Fedora - 2.6.18-1.2798.fc6) but there are a few prerequisites for setting them up. The following listed RPMs are required. I did a google search and then performed a quick download of them.
    • libsigc++20-2.0.6-1.i386.rpm
    • glibmm-2.4.7-1.rhfc3.nr.i386.rpm
    • gtkmm24-2.8.5-1.i386.rpm
    Load the RPMs. MySQL Administor is loaded in /usr/bin by default.
    # rpm -i libsigc++20-2.0.6-1.i386.rpm
    # rpm -i glibmm-2.4.7-1.rhfc3.nr.i386.rpm
    # rpm -i gtkmm24-2.8.5-1.i386.rpm
    # rpm mysql-gui-tools-5.0r12-1fc5.i386.rpm
    # rpm mysql-administrator-5.0r12-1fc5.i386.rpm

    Go to the Desktop Applications Menu and select the Programming Tab. You will see the MySQL Administor Icon. Select this icon and it will startup up MySQL Administrator in a windows environment. Then have fun! :)

    Sunday, March 2, 2008

    MySQL Priority Poll

    This poll did not get a lot of voters but I thought I would post the results to show you the priority of the individuals that did vote.


    Poll: What is your highest priority with MySQL?
    • Performance Tuning  20%
    • Backup and Recovery 20%
    • Monitoring and Management 16 %
    • High Availability 16%
    • Scalability 12%
    • Storage 10%
    • BI and Reporting 3%
    • Business Strategy 3%

    Choosing a MySQL Configuration Strategy

    MySQL configurations cover the range from developers installing a simple MySQL database for a LAMP application to the largest Internet companies using MySQL to deliver web content.
    There are two different profiles that cover this range for installing,  configuring and managing MySQL database servers:
    1. Profile 1: Individuals or small organizations that wants to use MySQL to create a simple database for web applications and the LAMP stack.
    2. Profile 2: Individuals or organizations that are looking at creating larger MySQL databases or may be creating a large number of MySQL databases.
    Profile 1:
    For this profile, the person can be a non-DBA.  This profile can use the default install using the Windows Installation Manager or the Unix or Linux RPMs.  The GUI interfaces will take you through a very simple install.  MySQL database servers do not take a lot of resources to run. The template files (my.small, my.medium, my.large) can show startup files that contain larger configurations.   This is a simple environment to install and manage.  I have seen non-DBAs and developers use this environment for years and it works great for them.

    This type of DBA is typically using some simple GUI interfaces, doing backups with mysqldump and taking a simple approach for managing MySQL databases.  MySQL's basic configuration can make it very popular for the small and medium sized organization.

    Profile2:
    This profile involves more complex and larger MySQL databases.  This environment often benefits from  installing and configuring using best practices.  This environment is more successful with someone that has DBA experience or training.  Implementing a MySQL environment with the MySQL Optimal Configuration Architecture (MOCA) where a DBA organizes a database for performance, high availability, ease of management becomes important for this environment being successful.  

    Dependent on the size and complexity of the MySQL environment, the DBA for this environment may be more concerned  with one or more of these areas:
    • How the MySQL servers will be monitored and managed.  Using the MySQL Enterprise Monitor, open source monitors or 3rd party monitors becomes important.
    • What backup strategy to use: Snapshots, InnoDB Hot Backup, Replication, etc.
    • High Availability (MySQL cluster, other clustering strategies).
    • How to balance I/O by spreading data across multiple disks, storage arrays, etc.
    • Performance Tuning.
    • The establishment of database standards, guidelines and best practices (MOCA).
    • Change control.
    • Having to much coffee.
    • Managing test, development and production databases.  Developing rollout strategies.
    • Security, auditing, Sarbanes-Oxley, COBIT, ITIL.
    • Information Lifecycle Management
    These two profiles show two ends of the spectrum for MySQL database administration.   



    Friday, February 29, 2008

    Best Environments for Running MySQL

    Its interesting when you look at MySQL database environments. Extremely popular in the MySQL world is to use commodity hardware and implement the LAMP stack.  Smaller projects and startup companies love this environment.  A simple example, a company needs to set up a web application, they buy some commodity hardware, set up replication and scale horizontally.  Everybody loves this and it works great.

    This environment requires floor space, cooling, electrical outlets, etc.  As new MySQL database servers get built, the environment needs to consider how this database environment will scale.  Organizations may take a step back and start looking at scaling with blade servers or large host systems to run large numbers of MySQL databases.

    Database servers are I/O intensive.  Growing with cheap disks does not always scale with systems that have large I/O requirements.  Striping and mirroring starts to become more important.  So storage scalability and more expensive storage solutions become a consideration as I/O increases.

    It will be interesting as Sun leads MySQL into more enterprise environments how the hardware and scalability strategies will evolve.

    Thursday, February 28, 2008

    Learning MySQL DBA Best Practices

    It is a challenge for new MySQL DBAs to learn best practices for managing database servers. There are no books that teach you everything you need to know.  Key knowledge areas new MySQL DBAs need to learn:
    • Best practices for installation and configuration.
    • How to monitor and manage a database.
    • How to monitor for tuning.
    • Best practices for backup/recovery.
    • Best security practices.
    • What audit controls need to be put in place.
    • Disaster planning.
    • Growth projections and scalability planning.
    • Change management.
    Sources I would recommend a new DBA start with:
    • Google - do searches on best DBA practices, etc.
    • Read information on the MySQL Optimal Configuration Architecture (MOCA) and the Optimal Flexible Architecture (OFA - Oracle related). Both give examples of things to consider when planning databases.
    • Go to conferences and download presentations from previous conferences.
    • Find a mentor.
    • Larger environments look at Sarbanes-Oxley, COBIT and ITIL in terms of best practices for managing IT infrastructures.  Waters get deep here for new DBAs.
    • http://www.planetmysql.org

    Tuesday, February 19, 2008

    Maximize your ROI at the MySQL Conference

    The MySQL conference is coming up. It's one of highest ROIs you can get for your training dollar. Just like anything else you do that is successful, plan on how you can maximize your attendance at a conference.

    If you don't attend conferences on a regular basis here are a few things you can do to maximize your experience:
    1. Volunteer! Best way to meet new people and feel a part of the conference.
    2. Join! There are often Special Interest Groups (SIGs) or other groups within a conference that try to bring people with common interests together.
    3. Introduce yourself! Try to meet as many people as you can at the conference. Challenge yourself to meet as many people as you can as possible. Ask them questions like: What's the best presentation you've attended so far? Are there any speakers you really like and would recommend to someone new to a conference attend? What area are you focusing on at the conference? A conference is the best way to work on your communication and networking skills. Buy a book on networking and try some of the techniques. If you are new to the conference no one knows you, what do you have to lose? Ask them about what environments they are running? What challenges are they having with their technology?
    4. Attend get togethers! Every conference has breakfast, unconference and birds of a feather meetings and other ways to network. If one doesn't work out, don't get discouraged. Remember you don't know anyone there how can you make a mistake.
    5. Business cards. Bring business cards and everyone you meet give them a business card. Who knows, someone might even give you there card. :)
    6. Prepare! Get organized. There are tons of great books, blogs, and Internet information on 10 ten tips for introducing yourself, networking and socializing. Try them.
    7. Submit! Submit a presentation. Awesome way to expand your comfort level and for people to get to know you. Most important thing people want at a conference is to learn from other people's experiences. You don't have to be a top expert. Do not underestimate what you have to say?
    I consider myself a pretty social person. However, I remember when I first starting going to conferences it was pretty lonely. I wasn't comfortable walking up and talking to people. The first birds of a feather meeting I went to, I walked in the door, everybody looked up at me, I froze and I walked out. I realized I was too shy but was too embarrassed to walk back in. It can get really lonely if it seems everybody else knows each other.

    Since then I have ran different areas of a conference, been on expert panels, given key note presentations and been on board of directors for conferences. All of these things occurred because I was willing to push myself past my comfort zone and began to submit papers for presenting and to join different groups at conferences.

    Networking is always rated first or second in terms of benefits for people that attend conferences. If you would like to increase your networking skills I would recommend you read the book "Million Dollar Networking" by Andrea Nierenberg. This will give you a lot of great ideas, recommendations and things to say to greatly increase your networking skills. You are going to spend thousands of dollars to attend the conference, why not spend another $30 and maximize the networking you can do.

    Everybody attending a conference has been in your shoes. Go introduce yourself to volunteers or speakers. Ask them about ways to maximize the time at the conference and what speakers they like to see. All volunteers I guarantee you want you to have fun and enjoy the conference and they know what its like to go to a conference for the first time. Most importantly, find out if any MySQL instructors are around, they are some of the coolest, most enjoyable and high energetic people you'll find at the conference. :)

    Monday, February 18, 2008

    The Right Strategy for Customers

    There have been significant trends and changes in the IT industry. Some of them include:

    • Main Frame systems
    • Client/Server
    • Distributed systems
    • Multi-tiered platforms with application servers
    • Open Source
    It's important to understand each of these is a technology to help meet business goals. Open source is currently an area of high growth and interest in the industry. The cost benefits provide organizations with a lot of flexibility in how they put their infrastructures together. Global markets and competition are putting even more pressure on IT organizations to make the right decisions.

    I was talking to a friend about what organizations are doing with open source strategies. The result of the conversation ended with it is not about an open source strategy. It is more about developing the "right customer strategy" and if and how open source can play a role in helping a customer meet their business objectives and goals.

    I've always felt as a DBA/manager, the more options I have the better decisions I can make. Including open source solutions in the decision process helps make sure customers are looking at their overall strategy in addressing challenges they are facing. No one technology solution is the best solution for every problem that exists. Oracle Enterprise Edition, Oracle Standard Edition, Oracle Express, MySQL, Oracle Application Server, Apache, JBoss, BEA, Eclipse, JDeveloper, Linux, PHP, Ruby on Rails, etc. all have features that can leverage what customers are trying to do. I have nothing against Windows or IBM it has just been my preference to work with Oracle and MySQL environments. Oracle and BEA have played well in the large enterprise commercial environments. MySQL has played well in Internet and web applications. For anyone to say other vendors do not provide a good solution is pretty closed minded. What I like to do is understand what a customer is trying to do and weigh the pros and cons and let them make the decision that is best for customer.

    Most companies are running different types of applications.
    • Java and SOA are extremely scalable and powerful solutions that are great when those benefits are needed.
    • Ruby on Rails and PHP are great for web based applications that do not need a lot of database features.
    There are current and future costs and ramifications associated with hardware, database, application server and application development decisions. With all the options out there customers need to make sure they align their purchases with their business objectives.

    Trends for DBAs

    I grew up in the old days when the primary tools used to manage databases was Unix shells scripts and my development tool was vi. This was back in the day when if you showed other DBAs a script for monitoring and tuning, they would respond to it the way cavemen would look at fire. Those days are long gone.

    Whether it is open source, vendor or 3rd party tools DBAs need to use software to help them manage their environments. Whatever the tool: Nagios, Mon, Zenoss, Cacti, MySQL Enterprise Monitor, etc. it is important to use tools to manage a database environment. In the monitoring and management side this includes the entire infrastructure which includes the application server and applications environment. As a DBA it is very important to be in a proactive environment where the administration infrastructure is scalable as more database instances and database schemas are added to the environment. The negative ramifications of using scripts and not software to monitor and manage a database environment include:
    • The more manual scripts (Unix, Perl, etc.) the more you are building a high maintenance environment that has to be supported.
    • As your environment changes with different software, application servers, applications, etc the more the scripts need to be modified.
    • New DBAs usually will not want to bet their jobs on someone else's scripts. Working scripts often get thrown away by new DBAs which will replace existing scripts with their own scripts.
    • Manual scripts are not as scalable as using software.
    • Using manual scripts are not cost-effective compared to using software for monitoring and management.
    • Manual scripts are more error-prone than using software.
    • Manual script environments are usually more reactive versus proactive. Reactive environments are not conducive to high availability.
    Companies are looking more for DBAs that can help make strategic decisions, understand the business, have strong communication and management skills and understand how to manage databases from an enterprise perspective. This is different that the traditional heads down, perform technical tasks and write scripts type of DBA.

    Sunday, February 17, 2008

    Leveraging MySQL Environments for Scalability

    One of the biggest mistakes organizations make when they look at MySQL, they look at just the MySQL Database Server. There are a lot of tools available in MySQL environments that can offer tremendous scalability to MySQL database servers while keeping the total cost of ownership down. Some of my favorites include:
    • Memcache - Memcache is a high performance distributed caching system. This offers tremendous benefits to dynamic web appliations. This caching system can take large loads off the database server and distribute across low-cost servers with a global cache. Most large scale MySQL database environments use memcache.
    • Replication - MySQL replication supports the distribution of MySQL across multiple low cost servers. Replication can be implemented with no additional license fees.
    • LAMP - Linux, Apache, MySQL, PHP/Perl/Python (LAMP) is a low cost proven platform for implementing web applications.
    • Monitoring - Nagios, Mon, Zenoss and Cacti are excellent monitoring tools for MySQL database environments. Zabbix is a product I have not looked at but their website information on their product definitely got my attention. The MySQL Enterprise Monitor is a licensable product but it can be used at a fraction of the cost of other database vendor monitoring tools and 3rd party solutions.


    Migrating to MySQL








    The MySQL Migration Toolkit is a nice easy to use Wizard GUI tool for migrating databases to MySQL. The following site http://www.mysql.com/products/tools/migration-toolkit/ has some really nice tutorials for how to migrate the following databases to MySQL:
    • SQL Server
    • Oracle
    • Access
    The MySQL Migration Toolkit will facilitate the migration of the following database schema objects:
    • Tables
    • Indexes
    • Views
    • Assists with Stored Procedure Migration
    • Assists with Trigger Migration
    Some features that stand out about the MySQL Migration Toolkit:
    • The MySQL Migration Toolkit allows direct server to server migration. The migration tookkit can run remotely.
    • Data can be transfered online or a snapshot of the data can be stored for executing a transfer offline at a later time. A backup can be created of the stored data as well.
    Migrating Access to MySQL
    MySQL is an excellent migration strategy for organizations using Access. Migrating to MySQL provides the following benefits to existing Access environments:
    • Extremely low startup costs.
    • Ability to leverage the LAMP stack and Web 2.0.
    • Portability to major releases of Linux, Unix and Mac OS platforms.
    • Increased operational flexibility from a closed proprietary environment to open source.
    • Significantly increased scalability.
    Migrating SQL Server to MySQL
    MySQL is an excellent migration strategy for organizations using SQL Server. Migrating to MySQL provides the following benefits to existing SQL Server environments:
    • Extremely low startup costs.
    • Ability to leverage the LAMP stack and Web 2.0.
    • Portability to major releases of Linux, Unix and Mac OS platforms.
    • Increased operational flexibility from a closed proprietary environment to open source.
    • Relatively low cost increased scalability compared to SQL Server scalability costs.
    Oracle and MySQL Environments
    I believe Oracle and MySQL play well together more than any other two RDBMS systems.
    • MySQL does well in the small and medium database range and supports the LAMP stack and Web 2.0.
    • For web applications that do not leverage a lot of database features. Using MySQL at the lower end can greatly reduce the total cost of ownership.
    • Oracle and MySQL can play very well together to maximize what a customer needs to do while minimizing cost.
    • Oracle offers tremendous scalability and an incredible amount of features to address complex problems in large organizations.
    • MySQL offers relatively low cost increased scalability compared to Oracle scalability costs. No costs associated with using partitioning and replication. MySQL Cluster is a fraction of the cost of running Oracle RAC.

    Saturday, February 16, 2008

    MySQL and Oracle Parallels

    When I look at the current and future releases of MySQL I see a lot of parallels to Oracle releases. Although MySQL and Oracle have taken different approaches there is a thread of commonality.
    • MySQL 4 and Oracle 6 releases were acceptable releases for their time but their features limited the software from having a larger impact in the database market. I always joke that Oracle Version 6 made Sybase and Oracle 7 along with Sybase 10 helped destroy Sybase.
    • MySQL 5 and Oracle 7 took the database releases so they could take new large steps in the database market.
    • MySQL 6 and Oracle 8 are releases that take the database software for each company to gigantic new levels in terms of scalability and the ability to handle significantly larger systems. In terms of performance, high availability and reduces administration.
    I believe the future of MySQL with version 5 and the upcoming version 6 is very bright.

    MySQL in the Enterprise

    In the last few months MySQL has taken serious steps to have it play a larger role in the enterprise. For MySQL to take the next steps the following needs to occur on the technology side:
    • Help customers understand the scalability of MySQL.
    • MySQL needs to expand in the small to medium size data warehouse market. MySQL excels on delivering large volumes of Internet content at high speed. High read rates are what you need to make a data warehouse work. Using MySQL replication, organizations can scale horizontally at inexpensive incremental rates.
    • MySQL needs an inexpensive striping and mirroring storage strategy to help organizations that can't afford an expensive EMC or Veritas solution. Hmmm, I wonder if there is a company out there who could help MySQL's storage strategy? :-)
    • Organizations need to realize there are commercial open source solutions like Pentaho that can deliver business solutions, BI and reporting capabilities in the small and medium sized database environments. There are open source commercial solutions that can help MySQL environments deliver medium sized enterprise solutions. Saving 6 and 7 figures on licensing of software can provide a lot of flexibility in terms of hardware and software options.
    • Organizations new to MySQL need a better understanding of how OS snapshots and InnoDB Hot Backup can be used to provide hot backups in OLTP environments.
    • More MySQL DBAs that have an enterprise perspective. Oracle DBAs are the perfect source. Too many organizations look at MySQL and do not understand how to set it up properly to leverage what it can do.
    • Organizations like Google, Yahoo, YouTube, Flicker, etc. know how to build highly scalable MySQL environments. Products like Memcache can greatly benefit MySQL scalability. Scaling MySQL is still a skill not known to a lot of companies.
    • MySQL and industry analysts need more bench marks on exactly where MySQL reaches it's limit on the OLTP side. The knowledgeable industry expert understands MySQL has proven to deliver high read rates. For customers to feel comfortable using MySQL in more OLTP environments, customers need to understand where MySQL tops out on the OLTP side.

    Pentaho's Bee

    Has anyone else been mesmerized by looking at the bee on Pentaho's website. Something about that bee is pretty interesting. I wish they'd take it further and create a screen saver where you can configure multiple bees on your desktop. I'm not even a bee fan.

    Oracle and MySQL - A winning team

    Oracle is definitely the Mercedes Benz of database servers. We can debate the merits of different databases but in terms of the most features, Oracle definitely stands alone. Excellent high availability features such as RAC, Data Guard and Streams offer excellent enterprise solutions. So for running enterprise business applications such as PeopleSoft, JD Edwards, Siebel and the Oracle EBusiness Suite the Oracle Database Server is in a class by itself.

    When you look at all the applications running in an organization, what percentage are enterprise class applications that require an Oracle database server. I would say the major percentage of applications running in an organization do not need an enterprise database server like Oracle. This is where MySQL plays nice. Heterogeneous environments running Oracle and MySQL will run at a fraction of the costs of running Oracle-SQL Server, Oracle -DB2 or SQL Server-DB2. Also MySQL being a friendly open source company does not bring in the religious issues Oracle DBAs would have with SQL Server or DB2. Some examples of how Oracle and MySQL would be a cost effective solution:
    • Greatly reduced software costs. For example backup and recovery is free in Oracle (Recovery Manager - RMAN). In a heterogeneous environment, a company can buy a great online backup solution such as InnoDB Hot Backup that is roughly $1000 per server. If running Oracle with SQL Server or DB2 the 3rd party backup solutions or vendor add-ons can easily run into six figures.
    • If an organization has already purchased Oracle Grid Control it would be very easy to have Oracle Grid Control monitor MySQL database servers.
    • Oracle SQL Developer could easily support MySQL database environments. Someone told me they got Oracle's SQL Developer to hook into MySQL easily. I'll have to try and find time to test this.
    • Oracle JDeveloper can deploy into JBoss environments and other open source application servers.
    • Oracle's stored procedure language PL/SQL is very close in syntax to MySQL's stored routine language. You could easily write a parser in Perl that would address most of the syntax differences.
    If I could ask Larry one question it would be if he regrets not trying to go after MySQL. I wonder if the Oracle acquisition team was so focused on the business applications market they did not look into the database market as closely as they should have. If Oracle had purchased MySQL could a strategy have been developed to use MySQL to keep SQL Server out of the lower end database market. Would the purchase price of MySQL have generated a significant ROI to justify the purchase by being able to help keep SQL Server out of Oracle's lower end market? Hmmm. Too bad, I guess we'll never know.

    Understanding the Total Cost of Ownership for Databases















    Vendors often talk about the Total Cost of Ownership (TCO). A MySQL environment offers significantly reduced overall costs and greatly reducing the total cost of ownership. When purchasing a database companies look at the license numbers of the database but often underestimate the surrounding costs of running a particular database. Overall TCO also includes the following costs:
    • Hardware
    • Application Servers
    • GUI development tools
    • Monitoring tools
    • Administration costs
    • 3rd party software
    • Technical skills
    • Scalability
    MySQL offers a TCO that is a fraction of other database vendors. The following are some examples of how the costs of running a MySQL environment are significantly reduced:
    • Hardware: MySQL database servers take significantly less hardware resources compared to Oracle DB2 or SQL Server. There is also more flexibility in choosing Windows, Linux, Unix or Mac OS platforms.
    • Application Servers: MySQL environments usually use Apache or JBoss run at a fraction of the costs of running application servers from IBM, Oracle, BEA and Microsoft.
    • Monitoring Tools: MySQL environments use tools like Nagios, Mon, Zenoss, Cacti are free or a fraction of the costs compared to vendor or 3rd party tools that often have licenses in the 6 and 7 figure range.
    • GUI Development Tools: MySQL environments often run SQLYog, Navicat, MySQL Query Browser that are free or run at a fraction of the cost of 3rd party tools for the larger database vendors.
    • GUI Admin Tools: MySQL Administrator, phpMyAdmin and Enterprise Monitor are free or run at a fraction of the cost of 3rd party tools for the larger database vendors.
    • BI and Reporting: BI Open Source tools from companies like Pentaho run at a fraction of the costs of BI solutions from the major vendors.
    • Scalability: Features like partitioning and replication are free in MySQL. So as your environment grows there are no additional license costs. MySQL Cluster is a licensable feature but it also is a fraction of the clustering solutions from the larger database vendors. Database servers are going to grow, so its great to know that a MySQL environment allows you to use free features or features that do not have large incremental increases the larger your databases grow.
    When looking at a database vendor make sure and consider the overall Total Cost of Ownership and not just the costs of running a database server.