Wednesday Dec 03, 2008

Why use NetBeans

Summary of some of the advantages of using NetBeans.[Read More]

Advantages of Solaris and OpenSolaris over Linux

This blog contains a summary as well as links discussing the advantages of Solaris and OpenSolaris over Linux.  This blog entry has been a good eye opener for me.  I received information that was weighted towards Solaris and decided I did not want to filter it because I thought seeing people's perspective is good.  The Linux additions have been fantastic and thanks to all the Linux feedback.  We all want truth, so hearing from both sides is excellent.  :)
[Read More]

Wednesday Nov 26, 2008

Why you need to root for Sun, MySQL and Open Source?

As our global world deals with the current economic challenges you will see more and more streamlining and cost cutting by organizations.  Where open source and MySQL make sense, they are going to save organizations tons of money and allow them more operational flexibility.[Read More]

Tuesday Nov 25, 2008

MySQL Presentation in Second Life


My presentation on MySQL in Second Life went really well.  I presented in one of the Sun auditoriums that was really cool.  It was all glass, very futuristic look.  This presentation was really popular at the Sun CEC in Las Vegas, so I customized it for Second Life and got a lot of great feedback and emails.   I'm now going to be delivering some customized MySQL and Oracle presentations for Sun employees.

I've been getting a lot of emails of people volunteering to help with the MySQL second life project and also requests for different types of sessions.   I will keep people in the loop as new presentations get scheduled.

Monday Nov 17, 2008

Sun CEC 2008 in Las Vegas: MySQL Sessions a tremendous success at the conference!

MySQL Sessions at Sun CEC 2008

I was asked to put together a MySQL training track at the Sun CEC 2008 conference in Las Vegas.  I've never had so much fun delivering at a conference.   During the Sun Customer Engineer Conference  we delivered 11 sessions preparing attendees for eventually the MySQL DBA certification. We started off with attendees from multiple tracks sitting in the first session which gave us a body count of 84.  Over the entire week, these sessions  regularly had 70+ plus seats filled.  Highlights of the sessions include:

  • Marc Sodano - discussing strategic directions in MySQL education.
  • George Trujillo - delivering 9 sessions on MySQL DBA topics.
  • Martin Mickos - positioning MySQL and defining directions and strategies for MySQL.
  • David Stokes - discussing MySQL certification and directions.
  • Anders Karlsson - delivering real life stories of MySQL  being used at very large web companies.
  • Domas Mituzas - discussing how MySQL is being used at Wikipedia one of largest web sites in the world.
  • Cliff Conklin - delivering sessions on Storage Engines and Transactions.

By the end of the conference all the Sun engineers were able to perform the following:

  • Install the MySQL  software with a custom database server configuration.
  • Understand the benefits of MOCA best practices and guidelines.
  • Configure the MySQL database server, setup binary logging and all administration logs.
  • Perform basic administration tasks.
  • Understand the fundamentals of SQL query tuning and server tuning.
  • Work with and modify key server parameters.
  • Set up new users and understand fundamentals of MySQL security.
  • Backup and recover a MySQL database server.
  • Set up and test MySQL replication.

Attendees took MySQL Associate Exam

David Stokes the MySQL Certification Manager was there to discuss certification, define directions in MySQL certification and show attendees the path to MySQL certifications.  David also provided a lot of the energy and ideas surrounding the conference.

On the last day we offered the Associate exam  with fifty people passing and two failing.

50 exams taken
48 CMA Certifications  (94 or 96% success rate)

Attendees will now be working towards MySQL DBA certifications.

Tons of success stories: Here are a few.

I am in the airport checking email 20 minutes ago when a guy came up to me and asked, "You're one of the MySQL guys, right?"  Turns out he is a manager who heard  his staff rave about our track (15) Thursday night.  Long story short is that his folks were very happy and excited about the MySQL sessions. After hearing of the MySQL sessions, he wishes he had been in the MySQL sessions.

Attendee after attendee from other tracks after hearing about the awesome MySQL sessions came in trying to join.  "The MySQL sessions were fun, entertaining and I never learned so much in one week".  "Some of the best presenters I've ever heard at a conference."  "The week was excellent."   The best I ever had at a CEC".  "Best organized sessions of the conference."  "MySQL rocks!"

Guest speakers a big success!

Guest speakers were a great success and did a tremendous job of positioning MySQL in real life customer scenarios.  Each speaker received excellent feedback from all the attendees.
  • Marc Sodano
  • David Stokes
  • Anders Karlsson
  • Domas Mituzas
  • Cliff Conklin

Marten Mickos at Sun CEC

We also had a guest appearance from Marten Mickos who did a great job of positioning MySQL within Sun and laying out directions as we move forward.  Getting Marten to come in and speak to Sun SE's looking at MySQL certification was the icing on the cake for the sessions.

Thank you everybody!

Thank you everybody for all of your great contributions to the success of the MySQL sessions!  From feedback from a lot of different sources, this was one of the really big success stories of the entire conference.

Sunday Nov 09, 2008

Sun CEC 2008: Sun Products Greatly Expand MySQL Capability

I've gotten incredibly excited about Sun products that greatly expand the capability of MySQL. What's been great is the excitement is coming from customers.  If you are using MySQL you really need to take a look about how these Sun products are leveraging MySQL in customer environments.   The powerful features and cost savings are very significant so every customer should be looking at how they can benefit from these products.

ZFS  - fast file system supporting volume management, snapshots and copy on write clones.
Glassfish – Application server
Zones/Containers - isolated virtual servers within a single operating system instance
Zone Cluster  - high availability solution
Dtrace – powerful diagnostics tool
Open Solaris – powerful open source operating system

Sun Storage 7000 series - highly cost-effective storage solution

Friday Jun 06, 2008

Webinar: Understanding the Oracle Architecture - 2.5 Hours

I have a webinar to immerse attendees in the Oracle architecture, products, terminology and key features.  This fast paced presentation is designed to give someone with a database background, a detailed overview of the Oracle database server.   SQL Server, DB2, MySQL, Postgres, Ingres, SQLLite, etc. DBAs  and developers will get an understanding of how the Oracle database server works as well as key products and features.  At my blog, if you select the Oracle database tab, the key slides can be found with descriptions.  You will need to go into the archive to get  some of the podcasts.  As I get time, I will complete the audio podcasts for each slide. 

Topics include:

  • Oracle Architecture
  • Database versions
  • Database products
    • Real Application Clusters (High Availability with multiple servers)
    • Data Guard (Standby databases)
    • Streams (Data Sharing)
  •  Tools
    • Enterprise Manager (Grid Control and Database Control)
    • Data Pump
    • SQL\*Plus
  • Metadata
  • Cost-Based Optimizer
  • Backup and Recovery
    • Recovery Manager
    • Flashback
  • ETL
  • Schemas
  • Database Applications
    • PL/SQL
    • Java
    • XML
    • PHP
    • .NET
  • Fusion Middleware
    • J2EE
    • Web Services
    • Service Oriented Architecture
    • BPEL
    • XML
    • Application Servers
    • ADF
    • Frameworks


Tuesday May 27, 2008

Installing MySQL 5.1 on Solaris 10 using MOCA


The following instructions will lay out an installation of MySQL on Solaris using the MySQL Optimal Configuration Architecture (MOCA) for someone knowledgeable in MySQL/Solaris administration. MOCA is a set of best practices I put together to lay out a set of guidelines for installing and configuring a MySQL database server.  MOCA is designed for someone with experience with MySQL, it is not for someone brand new to MySQL.

If you are new to MySQL or to Solaris, I recommend using the default package install for MySQL. The MySQL default install is recommended for someone new to MySQL or the operating system platform. If the default package install makes more sense for you, then you can stop reading.  This install uses MySQL 5.1.24 and it will work for any 5.1.x install (i.e. 5.1.42).

 Why Perform a Manual Install

The default install with MySQL is great for users new to MySQL. It is simple, requires a few point and clicks and you are up and running. The problem with a default install is that it is designed to be a very simple install and take minimum resources. The default install also puts MySQL files in different locations on the filesystem dependent on the OS release and platform. The default install is not how an experienced DBA would want to set up a production database environment. It is much better to be able to control the layout and configuration of the database software for production database environments and for platforms where multiple MySQL servers may be installed in the future.

    This install assumes you have a fundamental understanding of Solaris and have an understanding of MySQL database administration fundamentals. Oracle DBAs will find this installation very similar to the concepts of the Optimal Flexible Architecture (OFA).
    For experienced MySQL DBAs a manual install is much better. For this purpose I created a best practices configuration and white paper called MOCA (MySQL Optimal Configuration Architecture). This is based on DBA best practices and should be very similar to Oracle, DB2 and SQL Server production DBAs. There are certain fundamental truths about how database servers should be installed, configured and managed. My MOCA whitepaper addresses these fundamental truths. This manual install will follow MOCA standards and conventions.

Why MOCA? 

Visit to get the details of the reasons behind MOCA and why it is based on best practices. There is also an example of installing MySQL on Mac OS and Linux.    In summary, MOCA focuses on:
  1. Separating database software from other software.
  2. Separating data and index files, log files for recovery, administration and backup files.
  3. Developing standard naming conventions.
  4. Defines a flexible configuration that can support multiple database servers on same platform.
  5. A consistent configuration for multiple servers and versions of MySQL database software.

Installation Summary

This installation looks more complex than it is.  I use this configuration for all  MySQL DBA classes.

  1. Remove old versions of MySQL if they exist.  Setup up operating system user called "mysql" and the environment for this user.
  2. Set up directories and directory permissions for all MySQL data files.
  3. Setup MySQL software and install MySQL software as mysql operating system user (not as root).  Configure the my.cnf configuration file.
  4. Create the mysql database (mysql_install_db) and setup the security environment (mysql_secure_installation). Start the mysql database server.
  5. Test the shutdown and startup of the database server. 

Installation Environment

The environment for this installation is Solaris 10 - Downloaded DVD iso image from website. I installed the Solaris 10 05/08 x86/x64 image for this demo (sol-10-u5-ga-x86-dvd.iso). MySQL 5.1 I downloaded from

    Before installing MySQL on my platform, make sure there are no previous versions of MySQL preinstalled. Unless you want the older version of MySQL, your life will be much easier if you remove any previous releases that are not being used.
    Read through this installation a few times before starting.

Look for existing MySQL software

This install uses 5.1.24, these installation procedures can be used for any 5.1.x installation. Dependent on the version of Solaris, different packages may need to be installed or removed (old MySQL installations).  

Check to see if MySQL is installed on your current system.
# grep mysql /etc/passwd
# find /usr/local -name '\*mysql\*' - print # look here for MacOS, Unix/Linux
# find /var -name '\*mysql\*' - print # good place to start with Solaris
# find / -name "\*mysql\*' - print # look everywhere for MySQL installations

 VM Fusion Choices for Installing Solaris 10

My choices for installing Solaris 10 in a VM Fusion environment. During the installation you will be asked to hit F2 to continue. On a MAC that will be EscapeKey-2 or FN-F2. Solaris Interactive US-English Networked - DHCP IPv6 - No You may need to specify the amount of disk space to use. I allocated 10228 MB.

    You should now be able to log in as root. With Solaris choose the Java Desktop Environment or the Common Desktop Environment (CDE), this is a personal preference.

 Removing older versions of MySQL on Solaris

Check for MySQL packages installed and remove them.
# pkginfo | grep mysql

The following packages SUNWmysqlr, SUNWmysqlt, SUNWmysqlu were found and removed.
# pkgrm SUNWmysqlr
# pkgrm SUNWmysqlt
# pkgrm SUNWmysqlu

Remove old MySQL files from common directories.
# sudo rm /usr/local/mysql
# sudo rm -rf /Library/StartupItems/MySQLCOM/

Setup new mysql user if one does not exist.  If a mysql user does exist, set up a password, default shell, default directory, etc.
No mysql user was found so I added one. Add the mysql group, mysql user, password and home directory.
# groupadd -g 300 mysql
# useradd -u 300 -g 300 -d /export/home/mysql -s /usr/bin/bash -c "MySQL DBA" mysql
# passwd mysql

Login and verify the mysql user setup

# su - mysql (or exec login mysql)

Then define a default profile file using your favorite text editor.

--- .bash_profile file ------
PS1='$PWD: '
--- end of .bash_profile file -------

Set your environment by sourcing your profile file.

$ .   ./.bash_profile

Downloading MySQL 

Go to and go to downloads. Find the distributions and choose the install release you want. I chose 5.1.24. I prefer a manual install so I choose the Solaris Tar Packages the Solaris 10 64-bit install. Select a mirror. On the Select a Mirror page, I choose No thanks, just take me to the downloads!

MySQL Directory Organization 

A good way to separate MySQL files and software:
/opt/mysql/5.1.24 - Symbolic link to software directory location
/db01/mysql/mysql01/data          - data directory
/db02/mysql/mysql01/binlogs     - location of binary log files
/db03/mysql/mysql01/admin       - main administration directory
/db04/mysql/mysql01/backups    - location of backup files

Create the following base (parent) directory to download the MySQL software into.
# mkdir -p /opt/mysql
# export MYSQL_NAME=mysql01

The directory pattern of "mysql01" will be used to uniquely identify all physical files associated with this specific MySQL database server.
Setup data directory structure
# mkdir -p /db01/mysql/$MYSQL_NAME/data

Setup mysql administration directory structure
# mkdir -p /db03/mysql/$MYSQL_NAME
# cd  /db03/mysql/$MYSQL_NAME/
# mkdir logs errors sql startup run

Setup binary log structure
# mkdir -p /db02/mysql/$MYSQL_NAME/binlogs

Setup backup directory structure for backups and exports.
# mkdir -p /db04/mysql/$MYSQL_NAME
# mkdir /db04/mysql/$MYSQL_NAME/backups
# mkdir /db04/mysql/$MYSQL_NAME/exports

Set permissions and ownership for MySQL file directories.
# chmod -R 750                   /db\*/mysql/\*    /opt/mysql/\*
# chown -R mysql:mysql    /db\*/mysql/\*    /opt/mysql/\*

Before going further

Double (triple) check all directory paths and permissions.   99.99% of issues with manual installs  are typos in the directory paths, typos in the file names or permission issues with directories.

Double check all paths.   When you try to bring up database server, if it defaults to the default areas its because it can;t find a directory or doesn't have permission for directories specified so it will then try the default locations.

Setup the MySQL software (as the MySQL OS user, not the root OS user)

All following commands are run as the mysql OS user. In the /opt/mysql directory unzip and untar the MySQL software as the mysql OS user.
$ cd /opt/mysql
$ gunzip mysql-5.1.24-rc-solaris10-x86_64.tar.gz
$ tar xvf mysql-5.1.24-rc-solaris10-x86_64.tar
$ ln -s mysql-5.1.24-rc-solaris10-x86_64 5.1.24
$ cp $MYSQL_HOME/support-files/my-small-cnf   $MYSQL_HOME/my.cnf

Add the following entries to the my.cnf file to the [mysqld] group. This separates all your dynamic administration files, data files, and binary log files to different locations. A separate port is defined away from the default.


Create the mysql database files for the MySQL instance. This will create the default database schemas and database files.

$ scripts/mysql_install_db --datadir=/db01/mysql/mysql01/data  --basedir=$MYSQL_HOME

Verify data files and directories have been created in the datadir directory. 

$ cd /db01/mysql/mysql01/data
$ ls

ib_logfile0  ib_logfile1  ibdata1      mysql        test 

Start the MySQL database server pointing to the defined locations.
$ cd /opt/mysql/5.1.24
$ bin/mysqld_safe --defaults-file=$MYSQL_HOME/my.cnf &

If there are socket errors:

i.e.  MySQL client cannot start with the error "cannot connect to the MySQL server through socket <filename>


Each MySQL needs to write to a unique socket file.  If you don't specify one, a default one is chosen which may not have the appropriate permissions.   Make sure the permissions are set properly (owned by mysql).  The socket needs to match for the mysqld and the client side.  Make sure the socket definitions match in the my.cnf file in the [mysqld] and [client] groups.

Verify the mysqld background process is running as well as the mysqld_safe monitoring process. The mysqld background process should be up and running.

$ ps -ef |grep mysql

Clean up the database server by adding passwords and getting rid of anonymous users.  If there are problems with the mysql_secure_installation script, then set the password manually and get rid of the anonymous accounts and any accounts with no passwords.

$ bin/mysql_secure_installation 

Shutdown the MySQL server to verify you can shutdown and startup the MySQL instance.

$ mysqladmin --defaults-file= $MYSQL_HOME/my.cnf   shutdown -uroot -p

$ bin/mysqld_safe --defaults-file= $MYSQL_HOME/my.cnf

You're up and running have fun. Once you are confortable with this configuration layout, you can create a Unix shell script that will automate almost the entire process. With a shell script automation the install takes about ten minutes.

Wednesday May 07, 2008

Sun: Getting Started with MySQL

A quick getting started guide to learning MySQL.[Read More]

This blog is my perspective of Sun in relation to Oracle, MySQL, Oracle Fusion Middleware, Education and Virtual Reality platforms. The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.


« July 2016