3. www.brianhitchcock.netOct 29, 2009 Page 3
What Is MySQL?
Most popular open source RDBMS
Open source means 'free'
Really? No cost at all?
Widely used
Sabre – airline reservations
Google
LinkedIn
What does Oracle DBA need to know?
Many differences...
4. www.brianhitchcock.netOct 29, 2009 Page 4
Why Should I Care?
I'm an Oracle DBA
MySQL means nothing to me
It isn't a 'real' RDBMS
Why should I learn about MySQL?
MySQL is being used by real businesses
Can't hurt your employability
Many jobs expect DBA to know multiple RDBMS
Why not learn one that is widely used?
And it's free – you can download and install right now!
5. www.brianhitchcock.netOct 29, 2009 Page 5
Oracle DBA Perspective
What will we look at?
Installing
Start/stop
How database/tables stored
Backups
Transactions
Storage engines
6. www.brianhitchcock.netOct 29, 2009 Page 6
My Message
Compare MySQL to Oracle
Not to be critical of MySQL
Not to praise Oracle
Make Oracle DBAs aware
How much we assume about RDBMS
Because Oracle does things a certain way
MySQL is very different
Assuming it is like Oracle can cause serious problems
Does your business understand the differences?
The cost of being 'free'?
7. www.brianhitchcock.netOct 29, 2009 Page 7
MySQL Versions
MySQL Enterprise
Have to buy support
MySQL Community Edition
The 'free' version
MySQL Community Edition Preview Release
Available for download
Ready for prime time?
Oracle doesn't offer 12g for trial download...
9. www.brianhitchcock.netOct 29, 2009 Page 9
MySQL – Where Did It Come From?
Used to store web site logs
Transactions
What's that?
If we lose some records
So what?
Supported by an individual
Do your own thing
Recovery
Not to worry, plenty more web logs every day
10. www.brianhitchcock.netOct 29, 2009 Page 10
Some Differences – MySQL/Oracle
Oracle
Database
Schema
a group of database objects
Database user
Maps to a database schema
MySQL
Server
Databases
Group of database objects
Users don't map to database
11. www.brianhitchcock.netOct 29, 2009 Page 11
Some Differences – MySQL/Oracle
Storage engines
Transaction support
Performance
Hot backup
Binary logging and recovery
Table locking
Corruption
Misc.
12. www.brianhitchcock.netOct 29, 2009 Page 12
Storage Engines
MySQL gives you a choice
Oracle, all transactional all the time (OATATT)
MySQL storage engines
MyISAM (IBM, Indexed Sequential Access Method)
Very fast read
InnoDB
Transactional, like Oracle
Separate software, owned by Oracle
Many others
See next chart
14. www.brianhitchcock.netOct 29, 2009 Page 14
InnoDB Storage Engine
Imagine mixing
MyISAM, InnoDB tables in a statement
What does 'transactional' mean?
What does “recovery” mean?
15. www.brianhitchcock.netOct 29, 2009 Page 15
CSV Storage Engine
CSV storage engine
Stores data in text files
Using comma-separated format
16. www.brianhitchcock.netOct 29, 2009 Page 16
Blackhole Storage Engine
My favorite
This is where we store all the data relating to the Raiders and
their 'Commitment to Excellence'
17. www.brianhitchcock.netOct 29, 2009 Page 17
Yeah, But...
No problem
I'll just make all the tables InnoDB
Cool, but
MySQL catalog (system?) tables are MyISAM
Can't change them
Table storage engine can be changed at any time
Privileged users
No one should do this, but...stuff happens
Create table syntax
Supports overriding default storage engine
18. www.brianhitchcock.netOct 29, 2009 Page 18
Transaction Support
MyISAM
Default table type
Table type of system databases
Does not support transactions
Example
Writing to MyISAM tables and server crashes
Who know what was and wasn't written to tables
No recovery
19. www.brianhitchcock.netOct 29, 2009 Page 19
Performance
Many large MySQL servers in use
Performance must be good
or good enough for 'free'
Optimizer
Different storage engines
How to optimize statement that has
MyISAM tables
InnoDB tables
Does it support all storage engines you are using?
20. www.brianhitchcock.netOct 29, 2009 Page 20
Hot Backup
MySQL does not have this
Backup option #1
Shutdown server, copy all files, startup server
Backup option #2
Lock all tables
Dump all data to a dump file
Dump file is set of SQL to recreate database
Very slow to recover
Backup option #3
Buy hot backup software product
Not free
21. www.brianhitchcock.netOct 29, 2009 Page 21
Binary Logging and Recovery
MySQL
Default, no logging
You can configure binary logging
Three formats
Statement-based
Row-based
Mixed
Binary log filenames have format
binlog.000001, binlog.000002, etc.
You must apply them in correct order
22. www.brianhitchcock.netOct 29, 2009 Page 22
MySQL Binary Logs
MySQL does not have any way of knowing
when replaying the binary logs which
statements need to be executed and which are
already committed.
Oracle DBA doesn't worry about this
Oracle checks and tells you which archived redo log
is needed next
Oracle won't allow archived redo logs to be applied
out of order
26. www.brianhitchcock.netOct 29, 2009 Page 26
Corruption
Oracle
I have rarely seen any cases
But all tables support transactions
MySQL
What does it mean to rollback
When different storage engines involved
Some support transactions, some don't
Some tables will be rolled back
Others won't
Is this corruption?
27. www.brianhitchcock.netOct 29, 2009 Page 27
MySQL Corruption Issues
Good read
Discusses corruption issues in MySQL engines
I'm not saying this happens often
But you need to be aware of these issues
Another difference from Oracle
Different storage engines, different corruption mechanisms
http://www.mysqlperformanceblog.com/2006/07
/30/mysql-crash-recovery/
28. www.brianhitchcock.netOct 29, 2009 Page 28
MySQL Issues
Misc
Referential Integrity
Some storage engines support
Triggers
Row-level, not statement-level
Directload
Not supported
Parallel Query
Not supported
29. www.brianhitchcock.netOct 29, 2009 Page 29
MySQL Issues
White Paper
Compares MySQL to PostgreSQL
PostgreSQL, another open source RDBMS
More like Oracle than MySQL
Discusses issues with MySQL
I'm not endorsing PostgreSQL
But the whitepaper is very good
Google
PostgreSQL vs. MySQL A Comparison of Enterprise
Suitability
30. www.brianhitchcock.netOct 29, 2009 Page 30
MySQL Table Storage
MyISAM
Each table has three files
<filename>.frm – Data dictonary information
<filename>.MYD – table data
<filename>.MYI – table indexes
InnoDB
Data and indexes in a tablespaces
Made up of one or more datafiles
Sound familiar?
34. www.brianhitchcock.netOct 29, 2009 Page 34
Talk Is Cheap
A little less conversation
A little more action
Download and install MySQL to your laptop now
Slides show the steps
Windows
You will have a fully functional MySQL server
Start learning right now
35. www.brianhitchcock.netOct 29, 2009 Page 35
Install MySQL – Windows
Windows Vista
6.0 Service Pack 1
Screenshots shown
Windows XP
Professional Version 5.1
Same steps
Very minor differences in what you see
56. www.brianhitchcock.netOct 29, 2009 Page 56
Accessing MySQL Windows
Click Start
Programs
MySQL
MySQL Server 5.1
MySQL Command Line Client
Right-click
Send to
Desktop (Create Shortcut)
Double-click desktop icon
MySQL Command Line Client
59. www.brianhitchcock.netOct 29, 2009 Page 59
Now What?
Stop, start MySQL server
What databases are available
show databases;
Set default database
use <dbname>
What tables are in the database
show tables;
60. www.brianhitchcock.netOct 29, 2009 Page 60
Windows Vista
Stop/Start
Services
Start
Settings
Control Panel
System and Maintenance
Administrative Tools
Services
Scroll down to MySQL, highlight
Upper left, options for Stop, Pause, Restart
If MySQL is down, option to Start
61. www.brianhitchcock.netOct 29, 2009 Page 61
Windows XP
Stop/Start
Command line
net stop mysql, net start mysql
Services
Start
Control Panel
Administrative Tools
Services
Services window
Scroll down to MySQL, highlight
Upper left, options for Stop, Pause, Restart
If MySQL is down, option to Start
64. www.brianhitchcock.netOct 29, 2009 Page 64
System Databases
INFORMATION_SCHEMA
Catalog database
MYSQL database
User and privilege information
TEST
For you to play in...
These databases are created at installation
65. www.brianhitchcock.netOct 29, 2009 Page 65
MySQL Server Configuration
Controlled by 'option' file(s)
Similar to Oracle pfile or spfile
SHOW VARIABLES
See current values
Standard location(s)
Search order
One of the most common problems
Persons don't know where these files are
Make changes that don't take affect
Can't find the file or files
66. www.brianhitchcock.netOct 29, 2009 Page 66
Option File(s)
MySQL searches multiple locations
Uses most recent value of each parameter
How to know all files being scanned by MySQL?
mysql –help
Note: dash dash help
72. www.brianhitchcock.netOct 29, 2009 Page 72
MySQL Filesystem Layout
From option file (my.ini)
basedir
Where software is stored
datadir
Where table data is stored
76. www.brianhitchcock.netOct 29, 2009 Page 76
MySQL Log Files
General Query Log
All client requests
Binary Log
Statements that modify data
Slow Query Log
Statements that take longer than 10 seconds
Error Log
Server messages
78. www.brianhitchcock.netOct 29, 2009 Page 78
Summary
MySQL is 'free'
May need other products to make it work for you
Hot backup for example
MySQL is widely used
MySQL is very different from Oracle
DBA tasks and issues will be different
MySQL is not better or worse than Oracle
Just very different
79. www.brianhitchcock.netOct 29, 2009 Page 79
The End?
You now have a MySQL server installed
No excuses
Learn it, live it, love it
Update your resume
Next?
Multiple MySQL servers on same machine
Replication
etc.