SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
COLLABORATE 15 – IOUG Forum
Database
1 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
My First 100 days with a MySQL DBMS
René Antúnez, The Pythian Group
ABSTRACT
TARGET AUDIENCE
This document will benefit whoever is starting to use and administer a MySQL RDBMS, it covers the basic concepts and
management tips to be able to start as a MySQL Administrator.
EXECUTIVE SUMMARY
WHAT IS A MYSQL RDBMS?
MySQL is one, if not, the world’s most popular open source database and it is a main component of the LAMP
(Linux,Apache,MySQL,Php) open source software stack. Being an open source software, there exists a commercial site
(http://mysql.com) which includes links to webinars, whitepapers, and information on products and services and a developer
zone (http://dev.mysql.com/) includes links to manuals, worklogs, podcasts, labs, articles, news and Planet MySQL. Unlike
other RDBMS, MySQL uses a pluggable storage engine architecture, meaning that that a storage engine can be loaded and
unloaded from a running MySQL server
MYSQL ARCHITECTURE
As many other popular RDBMS’s the MySQL database system also operates client/server architecture. MySQL can be setup
to run multiple instances with different server ids on different sockets and port numbers
•   Server MySQL : mysqld is the daemon program that manages databases and tables. Mostly installed using binary pre-
compiled for select Operating System. It is also available open source from different vendors such as Oracle, Percona
and Mariadb. Default port for mysql is 3306 and can be configured
•   Client programs: These are programs are connecting to mysqld server by sending requests using network or socket
connection. While there are many clients to be used for mysql connection MySQL provides pre-compiled command
line utility called mysql.
With MySQL being the most popular open source DBMS in the world and with an estimated growth of 16 percent annually
until 2020,we can assume that sooner or later an Oracle DBA will be handling a MySQL database in their shop. This
beginner/intermediate-level session will take you through my journey of an Oracle DBA and my first 100 days of starting to
administer a MySQL database, show several demos and all the roadblocks and the success I had along this path.
Reader will be able to:
• What is the MySQL architecture and how does it relate to the Oracle Architecture.
• Gain an insight into how to administer a MySQL DBMS and what tools are available for a MySQL DBA.
• What are the main concerns regarding backups and replication with a MySQL DBMS.
COLLABORATE 15 – IOUG Forum
Database
2 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
MySQL consists of two-tier architecture while processing data to respond DML statements. MySQL’s architecture on storage
engine and SQL tiers are different than conventional RDBMS systems.
To understand the role of storage engines in MySQL you have to have a basic understanding of MySQL’s API architecture.
1)   A query comes in (SQL interface)
2)   Is parsed and the syntax is checked (Parser),
3)   An execution plan is determined (optimizer)
4)   Execution plan sent to the query processor who generates a queue of method calls (Handler calls to the API interface
of the various storage engines).
5)   The storage engine handles the actual data/file/disk access.
How it’s done is left up to the individual storage engine. Because of the separation of the server from the storage engines, the
various storage engines can have differing capabilities.
•   Connection Tier: The MySQL server (mysqld) accepts connections based on the protocol used and authenticates them
to allow access to Upper Tier. If connections established through this tier it’s passed to upper MySQL tier.
•   Upper Tier: This tier has combined layers of SQL parser and optimizer. The server mysqld parses statements and uses
optimizers to help to determine best access method.
•   Lower Tier: This tier is more of modular architecture than upper tier. At this tier MySQL has multiple storage engines
those manage own tables. Each storage engine is responsible for managing associated. So bottom line is storage
engines are pluggable to MySQL server. There are differences and restrictions between storage engines.
OPTION FILES
MySQL reads startup options from option files, better known as configuration files and these lists specific startup options
which allows the option set to persist after a server restart. One thing that we need to be aware of is that the option file by
default can be read from a number of locations, so be sure to look in the manual for a full listing of where MySQL looks for
COLLABORATE 15 – IOUG Forum
Database
3 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
the option files. In Linux you normally see them in /etc/my.cnf and /etc/mysql/my.cnf, in Windows INSTALLDIRmy.ini and
INSTALLDIRmy.cnf, be sure to read the latest manual for a full listing of where MySQL looks for the option files.
Example of a global option file.
To find out which configuration files mysqld is loading on Linux, you can run the following shell command:
DISK AND MEMORY SPACE USAGE
MySQL server uses disk space based on storage type selected. Top-level directory per database is created from mysql --datadir
configuration.
a)   Database directories: Database directory created per database to hold data files associated with storage engine types.
This directory is created independent from storage engine type.
b)   Table format files called (*.frm) files. This file keeps the definition (schema) of the table. Every table will have one .frm
file of its own.
c)   Data and index files created for tables under same top-level directory used for database. MyISAM storage engine
creates one file per table for each data and index. So it will have three files per table under its database directory.
d)   If using the InnoDB storage engine it uses tablespace to control data and index information for all of its tables. It is
the most important and complex one amongst other engines provided. It’s the only engine provides ACID
compliance as well as other advanced features like stored procedures and triggers.
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
$strace -e stat64 mysqld --print-defaults
$lsof -p <mysqld_pid)
COLLABORATE 15 – IOUG Forum
Database
4 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
INSTALLING MYSQL
There are different methods of installing MySQL, but the easiest way to do it, is through a yum repository, below is an
example on a Linux 6.6
The generic Unix/Linux binary file layout of the installation is shown in the table below
Directory Contents
bin Client programs and mysqld server
data Log files and databases
docs Manual in Info format
man Unix manual pages
As root
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql mysql
[root@localhost ~]# yum localinstall mysql-community-release-el6-6.noarch.rpm
[root@localhost ~]# yum repolist enabled | grep "mysql.*-community.*"
[root@localhost ~]# yum repolist all | grep mysql
[root@localhost ~]# yum install mysql-community-server
[root@localhost ~]# service mysqld start
Starting mysqld:[ OK ]
[root@localhost ~]# service mysqld status
mysqld (pid 407) is running.
[root@localhost ~]# mysql_secure_installation
As local user
[mysql@localhost Desktop]$ mysql -u root -p
Enter password:
…
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER 'rene'@'%' IDENTIFIED BY 'oracle';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'rene'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
COLLABORATE 15 – IOUG Forum
Database
5 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
include Include (header) files
lib Libraries
scripts mysql_install_db
share Misc support files including error messages, sample option files and SQL for database
installation
sql-bench Benchmarks
MYSQL ENGINE TYPES
As we mentioned before, MySQL uses a pluggable storage engine architecture, meaning that that a storage engine can be
loaded and unloaded from a running MySQL server. Two of the most popular are Innodb and MyISAM . As of MySQL 5.5 and
later Innodb is the default storage engine in a fresh MySQL installation.
DIFFERENCES OF INNODB AND MYISAM
a)   InnoDB DML operations (add, update and delete data) is ACID (atomic, consistent, isolated and durable) model
compatible.
b)   InnoDB has foreign keys and relationship constraints while MyISAM does not
c)   InnoDB has granular locking level from table to row-level lock for inserting and updating while MyISAM implements
table-level lock.
d)   InnoDB has Stored Procedures and Triggers while MyISAM does not
e)   InnoDB allows some online DDL (alter) operations without locking MyISAM does not
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+-----+
| Engine | Support | Comment | Transactions | XA |
Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+-----+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL
|
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO
|
| MyISAM | YES | MyISAM storage engine | NO | NO | NO
|
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO
|
| CSV | YES | CSV storage engine | NO | NO | NO
|
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO
|
| ARCHIVE | YES | Archive storage engine | NO | NO | NO
|
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES
|
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO
|
+--------------------+---------+----------------------------------------------------------------+--------------+------+-----+
9 rows in set (0.28 sec)
COLLABORATE 15 – IOUG Forum
Database
6 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
f)   InnoDB requires more hardware resources to run specifically RAM as the buffer cache uses to serve faster data.
g)   MyISAM Especially good for read-intensive (select) tables
h)   There is a limit of 232 (~4.295E+09) rows in a MyISAM table
Creating a table with a specific storage engine
Setting the default storage engine
Other engine types are only used when there’s a specific need and custom application for it. Usually they aren’t being utilised
as much as Innodb or MyIsam engines. Some are listed below:
•   Memory
•   CSV
•   Archive
•   Blackhole
•   3rd Party
mysql> CREATE TABLE test1 (col1 INT, col2 CHAR(30), PRIMARY KEY (col1)) ENGINE = INNODB;
Query OK, 0 rows affected (0.29 sec)
mysql> DESC test1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| col1 | int(11) | NO | PRI | 0 | |
| col2 | char(30) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.18 sec)
mysql> CREATE TABLE test2 (col1 INT, col2 CHAR(30)) ENGINE = MYISAM;
Query OK, 0 rows affected (0.36 sec)
mysql> SHOW TABLE STATUS FROM rene;
+--------+--------+---------+------------+------+----------------+-------------+-------------------+---------
-----+-----------+----------------+---------------------+---------------------+------------+-----------------
+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length |
Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time |
Collation | Checksum | Create_options | Comment |
+--------+--------+---------+------------+------+----------------+-------------+-------------------+---------
-----+-----------+----------------+---------------------+---------------------+------------+-----------------
+----------+----------------+---------+
| test1 | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 |
0 | 0 | 1 | 2015-01-08 18:21:05 | NULL | NULL | utf8_general_ci |
NULL | | |
| test2 | MyISAM | 10 | Fixed | 0 | 0 | 0 | 26740122787512319 |
1024 | 0 | NULL | 2015-01-08 18:35:47 | NULL | NULL | utf8_general_ci
| NULL | | |
+--------+--------+---------+------------+------+----------------+-------------+-------------------+---------
-----+-----------+----------------+---------------------+---------------------+------------+-----------------
+----------+----------------+---------+
2 rows in set (0.03 sec)
SET default_storage_engine= MYISAM;
COLLABORATE 15 – IOUG Forum
Database
7 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
MYSQL TROUBLESHOOTING LOGS
As always logs are the best place to start troubleshooting MySQL has the following files:
•   Error Log. - It contains information about errors that occur while the server is running (also server start and stop). If
mysqld notices a table that needs to be automatically checked or repaired, it writes a message to the error log. On some
operating systems it writes the stack trace if mysqld crashes.
•   General Query Log. - This is a general record of what mysqld is doing (connect, disconnect, queries). It logs each
SQL statement received from clients and can be very useful when you suspect an error in a client and want to know
exactly what the client sent to mysqld. This log can grow quickly on a moderately busy server - so watch it carefully.
This can be enabled or disabled:
•   Slow Query Log. – It is your first line of offense for tuning queries Ιt consists of "slow" SQL statements (as
indicated by its name). It logs SQL statements that took more than the parameter long_query_time in seconds and
required at least min_examined_row_limit rows to be examined. To disable or enable the slow query log, use the global
system variable slow_query_log. Set slow_query_log to 0 (or OFF) to disable the log or to 1 (or ON) to enable it.
OBTAINING EXECUTION PLAN INFORMATION
When you issue a query, the MySQL Query Optimizer tries to devise an optimal plan for query execution. The EXPLAIN
statement provides information about how MySQL executes statements. You can see information about the plan by prefixing
the query with EXPLAIN. EXPLAIN EXTENDED can be used to obtain additional execution plan information. As of
MySQL 5.7.3, the EXPLAIN statement is changed so that the effect of the EXTENDED keyword is always enabled.
The order of the tables given in the EXPLAIN output matters. Tables listed in the order that MySQL reads them while
processing and performing the nested-loop joins. MySQL reads a row from the first table, and then finds a matching row in
the second table, the third table, and so on. When all tables are processed, MySQL outputs the selected columns and
backtracks through the table list until a table is found for which there are more matching rows. The next row is read from this
table and the process continues with the next table.
If you detect that you have a problem with indexes not being used when you believe that they should be, run ANALYZE
TABLE to update table statistics, such as cardinality of keys, that can affect the choices the optimizer makes.
SET GLOBAL general_log = 'OFF';
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 10
log_queries_not_using_indexes = 1
mysql> explain extended select j1.c1 from j1, j2, j3 where j1.c1 = j2.c1 and j3.c1 = j1.c1;
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | j1 | ALL | NULL | NULL | NULL | NULL | 2 | |
| 1 | SIMPLE | j2 | ALL | NULL | NULL | NULL | NULL | 3 | Using where |
| 1 | SIMPLE | j3 | ALL | NULL | NULL | NULL | NULL | 4 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
COLLABORATE 15 – IOUG Forum
Database
8 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
LOGICAL AND PHYSICAL BACKUPS
Backups are always important when managing data. MySQL has several ways to do a backup.
LOGICAL BACKUP
The first way is doing a logical backup; this will save the logical structure and the data content of our database. This type of
backup is suitable for small databases. A logical backup does not include log and/or configuration files or other database
related files. A very common tool is mysqldump, it will pull data out of the server, and write it down in logical format. One great
advantage of using mysqldump is that is machine independent.
PHYSICAL BACKUP
The backup consists of exact copies of database directories and files. Typically this is a copy of all or part of the MySQL data
directory, so it normally will contain log and/or configuration files or other database related files. One very common way to
do physical backups is through filesystem snapshot, but there is a database level lock that has to happen for these to be
consistent. The steps for this type of backup are below:
a)   FLUSH TABLES WITH READ LOCK;
b)   Take the filesystem snapshot
c)   UNLOCK TABLES;
You can also use MySQL Enterprise Backup, which is the “official” solution for hot backups of InnoDB tables, it will perform
warm backup for other storage engines.
[mysql@localhost Desktop]$ mysqldump -u pythian – p $pw --extended-insert=true --add-drop-database --
databases rene | gzip > /export/full_dump.gz
[root@localhost mysqlbackup ]# ./mysqlbackup --user=root -p --backup-dir=/home/admin/backups backup-and-
apply-log
...
140904 12:34:54 mysqlbackup: INFO: MEB logfile created at /home/admin/backups/meta/MEB_2014-09-04.12-34-
54_backup_apply_log.log
--------------------------------------------------------------------
Server Repository Options:
--------------------------------------------------------------------
datadir = /var/lib/mysql/
innodb_data_home_dir =
innodb_data_file_path = ibdata1:12M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/
innodb_log_files_in_group = 2
innodb_log_file_size = 50331648
innodb_page_size = 16384
innodb_checksum_algorithm = innodb
innodb_undo_directory = /var/lib/mysql/
innodb_undo_tablespaces = 0
innodb_undo_logs = 128
…
innodb_undo_directory = /home/admin/backups/datadir
innodb_undo_tablespaces = 0
innodb_undo_logs = 128
mysqlbackup: INFO: Unique generated backup id for this is 14098484948398421
mysqlbackup: INFO: Creating 14 buffers each of size 16777216.
140904 12:34:57 mysqlbackup: INFO: Full Backup operation starts with following threads
140904 12:34:57 mysqlbackup: INFO: Starting to copy all innodb files...
…
140904 12:35:14 mysqlbackup: INFO: Apply-log operation completed successfully.
140904 12:35:14 mysqlbackup: INFO: Full backup prepared for recovery successfully.
mysqlbackup completed OK!
COLLABORATE 15 – IOUG Forum
Database
9 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
MYSQL REPLICATION
MySQL supports many replication types. The way MySQL replication works is keeping track of all updates in log files (index
& binlog) on the Master (with log-bin enabled). The MySQL slave receives these binlog dumps and builds relay logs via I/O
thread. SQL thread applies all changes to the MySQL slave.
MASTER - MASTER (CIRCULAR)
Master - Master replication means MySQL servers (mysqld) on different hosts or same host with different port number (port)
setup with unique (server-id) and binlog (log-bin) enabled
MASTER - SLAVE (SINGLE - MULTI)
One of the most common replication styles that can be setup is with one master and multiple slaves. Master - Slave replication
means MySQL servers (mysqld) on different hosts or the same host with different port number (port) setup with unique
(server-id) and binlog (log-bin) enabled on Master.
MASTER - SLAVE - SLAVE (A-> B-> C->)
This type of MySQL replication is similar setup as master-slave replication and called chain replication. The only difference is
host B in the chain should have log_slave_updates (log-slave-updates) enabled on top of binlog (log-bin) variables. A (Master)
- > B (Master-Slave) -> C (Slave)
COLLABORATE 15 – IOUG Forum
Database
10 | P a g e “My First 100 days with a MySQL DBMS”
White Paper
REFERENCES
a)   MySQL 5.6 Manual
http://dev.mysql.com/doc/refman/5.6/en/
b)   MySQL Architecture
https://thinkingmonster.wordpress.com/database/mysql/mysql-architecture/
c)   A fast and furious guide to MySQL database engines
http://www.techrepublic.com/article/a-fast-and-furious-guide-to-mysql-database-engines/
d)   MySQL Storage Engines
http://www.w3resource.com/mysql/mysql-storage-engines.php
e)   Using EXPLAIN to Write Better MySQL Queries
http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/
f)   MySQL Enterprise Backup User's Guide
http://dev.mysql.com/doc/mysql-enterprise-backup/3.11/en/intro.html
g)   Getting Started with MySQL - Ligaya Turmelle (Presentation)
h)   Pythian Internal Documents

Contenu connexe

Tendances

Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceGustavo Rene Antunez
 
My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)Gustavo Rene Antunez
 
RMAN in 12c: The Next Generation (PPT)
RMAN in 12c: The Next Generation (PPT)RMAN in 12c: The Next Generation (PPT)
RMAN in 12c: The Next Generation (PPT)Gustavo Rene Antunez
 
Oracle Database Overview
Oracle Database OverviewOracle Database Overview
Oracle Database Overviewhonglee71
 
Oracle 12c and its pluggable databases
Oracle 12c and its pluggable databasesOracle 12c and its pluggable databases
Oracle 12c and its pluggable databasesGustavo Rene Antunez
 
Intro to Exadata
Intro to ExadataIntro to Exadata
Intro to ExadataMoin Khalid
 
Architecting Your Own DBaaS in a Private Cloud with EM12c
Architecting Your Own DBaaS in a Private Cloud with EM12cArchitecting Your Own DBaaS in a Private Cloud with EM12c
Architecting Your Own DBaaS in a Private Cloud with EM12cGustavo Rene Antunez
 
Understand oracle real application cluster
Understand oracle real application clusterUnderstand oracle real application cluster
Understand oracle real application clusterSatishbabu Gunukula
 
Oracle database high availability solutions
Oracle database high availability solutionsOracle database high availability solutions
Oracle database high availability solutionsKirill Loifman
 
Oracle database 12c intro
Oracle database 12c introOracle database 12c intro
Oracle database 12c intropasalapudi
 
12 Things about Oracle WebLogic Server 12c
12 Things	 about Oracle WebLogic Server 12c12 Things	 about Oracle WebLogic Server 12c
12 Things about Oracle WebLogic Server 12cGuatemala User Group
 
Oracle Database 12c Multitenant for Consolidation
Oracle Database 12c Multitenant for ConsolidationOracle Database 12c Multitenant for Consolidation
Oracle Database 12c Multitenant for ConsolidationYudi Herdiana
 
Oracle database 12c introduction- Satyendra Pasalapudi
Oracle database 12c introduction- Satyendra PasalapudiOracle database 12c introduction- Satyendra Pasalapudi
Oracle database 12c introduction- Satyendra Pasalapudipasalapudi123
 
Oracle 12c PDB insights
Oracle 12c PDB insightsOracle 12c PDB insights
Oracle 12c PDB insightsKirill Loifman
 
Oracle data guard for beginners
Oracle data guard for beginnersOracle data guard for beginners
Oracle data guard for beginnersPini Dibask
 
You most probably dont need an RMAN catalog database
You most probably dont need an RMAN catalog databaseYou most probably dont need an RMAN catalog database
You most probably dont need an RMAN catalog databaseYury Velikanov
 
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...Markus Michalewicz
 

Tendances (20)

Fast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud ServiceFast, Flexible Application Development with Oracle Database Cloud Service
Fast, Flexible Application Development with Oracle Database Cloud Service
 
My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)My First 100 days with an Exadata (PPT)
My First 100 days with an Exadata (PPT)
 
RMAN in 12c: The Next Generation (PPT)
RMAN in 12c: The Next Generation (PPT)RMAN in 12c: The Next Generation (PPT)
RMAN in 12c: The Next Generation (PPT)
 
Oracle Database Overview
Oracle Database OverviewOracle Database Overview
Oracle Database Overview
 
Oracle 12c and its pluggable databases
Oracle 12c and its pluggable databasesOracle 12c and its pluggable databases
Oracle 12c and its pluggable databases
 
Intro to Exadata
Intro to ExadataIntro to Exadata
Intro to Exadata
 
Architecting Your Own DBaaS in a Private Cloud with EM12c
Architecting Your Own DBaaS in a Private Cloud with EM12cArchitecting Your Own DBaaS in a Private Cloud with EM12c
Architecting Your Own DBaaS in a Private Cloud with EM12c
 
Understand oracle real application cluster
Understand oracle real application clusterUnderstand oracle real application cluster
Understand oracle real application cluster
 
Oracle database high availability solutions
Oracle database high availability solutionsOracle database high availability solutions
Oracle database high availability solutions
 
Oracle database 12c intro
Oracle database 12c introOracle database 12c intro
Oracle database 12c intro
 
12 Things about Oracle WebLogic Server 12c
12 Things	 about Oracle WebLogic Server 12c12 Things	 about Oracle WebLogic Server 12c
12 Things about Oracle WebLogic Server 12c
 
Oracle Database 12c Multitenant for Consolidation
Oracle Database 12c Multitenant for ConsolidationOracle Database 12c Multitenant for Consolidation
Oracle Database 12c Multitenant for Consolidation
 
Oracle database 12c introduction- Satyendra Pasalapudi
Oracle database 12c introduction- Satyendra PasalapudiOracle database 12c introduction- Satyendra Pasalapudi
Oracle database 12c introduction- Satyendra Pasalapudi
 
Oracle 12c PDB insights
Oracle 12c PDB insightsOracle 12c PDB insights
Oracle 12c PDB insights
 
Oracle data guard for beginners
Oracle data guard for beginnersOracle data guard for beginners
Oracle data guard for beginners
 
You most probably dont need an RMAN catalog database
You most probably dont need an RMAN catalog databaseYou most probably dont need an RMAN catalog database
You most probably dont need an RMAN catalog database
 
153 Oracle dba interview questions
153 Oracle dba interview questions153 Oracle dba interview questions
153 Oracle dba interview questions
 
Oracle 12c Architecture
Oracle 12c ArchitectureOracle 12c Architecture
Oracle 12c Architecture
 
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
 
Exadata database machine_x5-2
Exadata database machine_x5-2Exadata database machine_x5-2
Exadata database machine_x5-2
 

Similaire à My First 100 days with a MySQL DBMS (WP)

My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlsqlhjalp
 
Getting started with my sql
Getting started with my sqlGetting started with my sql
Getting started with my sqlWeb Sky
 
SULTHAN's PHP, MySQL & wordpress
SULTHAN's PHP, MySQL & wordpressSULTHAN's PHP, MySQL & wordpress
SULTHAN's PHP, MySQL & wordpressSULTHAN BASHA
 
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfCompare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfarihantplastictanksh
 
MySQL Oslayer performace optimization
MySQL  Oslayer performace optimizationMySQL  Oslayer performace optimization
MySQL Oslayer performace optimizationLouis liu
 
The benefits of My sql
The benefits of My sqlThe benefits of My sql
The benefits of My sqlCacheWorks©
 
MySQL Reference Manual
MySQL Reference ManualMySQL Reference Manual
MySQL Reference Manualwebhostingguy
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manualMir Majid
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06YUCHENG HU
 

Similaire à My First 100 days with a MySQL DBMS (WP) (20)

Mysql tutorial 5257
Mysql tutorial 5257Mysql tutorial 5257
Mysql tutorial 5257
 
My sql basic
My sql basicMy sql basic
My sql basic
 
My sql crashcourse_intro_kdl
My sql crashcourse_intro_kdlMy sql crashcourse_intro_kdl
My sql crashcourse_intro_kdl
 
Slides
SlidesSlides
Slides
 
Mysql tutorial
Mysql tutorialMysql tutorial
Mysql tutorial
 
Getting started with my sql
Getting started with my sqlGetting started with my sql
Getting started with my sql
 
Mysql ppt
Mysql pptMysql ppt
Mysql ppt
 
SULTHAN's PHP, MySQL & wordpress
SULTHAN's PHP, MySQL & wordpressSULTHAN's PHP, MySQL & wordpress
SULTHAN's PHP, MySQL & wordpress
 
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdfCompare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
Compare the capabilities of the Microsoft Access, Microsoft SQL Serv.pdf
 
Fudcon talk.ppt
Fudcon talk.pptFudcon talk.ppt
Fudcon talk.ppt
 
MySQL Oslayer performace optimization
MySQL  Oslayer performace optimizationMySQL  Oslayer performace optimization
MySQL Oslayer performace optimization
 
MySQL database
MySQL databaseMySQL database
MySQL database
 
Mysql
MysqlMysql
Mysql
 
Mysql-Basics.pptx
Mysql-Basics.pptxMysql-Basics.pptx
Mysql-Basics.pptx
 
Mysql
MysqlMysql
Mysql
 
The benefits of My sql
The benefits of My sqlThe benefits of My sql
The benefits of My sql
 
Mysql database
Mysql databaseMysql database
Mysql database
 
MySQL Reference Manual
MySQL Reference ManualMySQL Reference Manual
MySQL Reference Manual
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manual
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06
 

Dernier

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

My First 100 days with a MySQL DBMS (WP)

  • 1. COLLABORATE 15 – IOUG Forum Database 1 | P a g e “My First 100 days with a MySQL DBMS” White Paper My First 100 days with a MySQL DBMS René Antúnez, The Pythian Group ABSTRACT TARGET AUDIENCE This document will benefit whoever is starting to use and administer a MySQL RDBMS, it covers the basic concepts and management tips to be able to start as a MySQL Administrator. EXECUTIVE SUMMARY WHAT IS A MYSQL RDBMS? MySQL is one, if not, the world’s most popular open source database and it is a main component of the LAMP (Linux,Apache,MySQL,Php) open source software stack. Being an open source software, there exists a commercial site (http://mysql.com) which includes links to webinars, whitepapers, and information on products and services and a developer zone (http://dev.mysql.com/) includes links to manuals, worklogs, podcasts, labs, articles, news and Planet MySQL. Unlike other RDBMS, MySQL uses a pluggable storage engine architecture, meaning that that a storage engine can be loaded and unloaded from a running MySQL server MYSQL ARCHITECTURE As many other popular RDBMS’s the MySQL database system also operates client/server architecture. MySQL can be setup to run multiple instances with different server ids on different sockets and port numbers •   Server MySQL : mysqld is the daemon program that manages databases and tables. Mostly installed using binary pre- compiled for select Operating System. It is also available open source from different vendors such as Oracle, Percona and Mariadb. Default port for mysql is 3306 and can be configured •   Client programs: These are programs are connecting to mysqld server by sending requests using network or socket connection. While there are many clients to be used for mysql connection MySQL provides pre-compiled command line utility called mysql. With MySQL being the most popular open source DBMS in the world and with an estimated growth of 16 percent annually until 2020,we can assume that sooner or later an Oracle DBA will be handling a MySQL database in their shop. This beginner/intermediate-level session will take you through my journey of an Oracle DBA and my first 100 days of starting to administer a MySQL database, show several demos and all the roadblocks and the success I had along this path. Reader will be able to: • What is the MySQL architecture and how does it relate to the Oracle Architecture. • Gain an insight into how to administer a MySQL DBMS and what tools are available for a MySQL DBA. • What are the main concerns regarding backups and replication with a MySQL DBMS.
  • 2. COLLABORATE 15 – IOUG Forum Database 2 | P a g e “My First 100 days with a MySQL DBMS” White Paper MySQL consists of two-tier architecture while processing data to respond DML statements. MySQL’s architecture on storage engine and SQL tiers are different than conventional RDBMS systems. To understand the role of storage engines in MySQL you have to have a basic understanding of MySQL’s API architecture. 1)   A query comes in (SQL interface) 2)   Is parsed and the syntax is checked (Parser), 3)   An execution plan is determined (optimizer) 4)   Execution plan sent to the query processor who generates a queue of method calls (Handler calls to the API interface of the various storage engines). 5)   The storage engine handles the actual data/file/disk access. How it’s done is left up to the individual storage engine. Because of the separation of the server from the storage engines, the various storage engines can have differing capabilities. •   Connection Tier: The MySQL server (mysqld) accepts connections based on the protocol used and authenticates them to allow access to Upper Tier. If connections established through this tier it’s passed to upper MySQL tier. •   Upper Tier: This tier has combined layers of SQL parser and optimizer. The server mysqld parses statements and uses optimizers to help to determine best access method. •   Lower Tier: This tier is more of modular architecture than upper tier. At this tier MySQL has multiple storage engines those manage own tables. Each storage engine is responsible for managing associated. So bottom line is storage engines are pluggable to MySQL server. There are differences and restrictions between storage engines. OPTION FILES MySQL reads startup options from option files, better known as configuration files and these lists specific startup options which allows the option set to persist after a server restart. One thing that we need to be aware of is that the option file by default can be read from a number of locations, so be sure to look in the manual for a full listing of where MySQL looks for
  • 3. COLLABORATE 15 – IOUG Forum Database 3 | P a g e “My First 100 days with a MySQL DBMS” White Paper the option files. In Linux you normally see them in /etc/my.cnf and /etc/mysql/my.cnf, in Windows INSTALLDIRmy.ini and INSTALLDIRmy.cnf, be sure to read the latest manual for a full listing of where MySQL looks for the option files. Example of a global option file. To find out which configuration files mysqld is loading on Linux, you can run the following shell command: DISK AND MEMORY SPACE USAGE MySQL server uses disk space based on storage type selected. Top-level directory per database is created from mysql --datadir configuration. a)   Database directories: Database directory created per database to hold data files associated with storage engine types. This directory is created independent from storage engine type. b)   Table format files called (*.frm) files. This file keeps the definition (schema) of the table. Every table will have one .frm file of its own. c)   Data and index files created for tables under same top-level directory used for database. MyISAM storage engine creates one file per table for each data and index. So it will have three files per table under its database directory. d)   If using the InnoDB storage engine it uses tablespace to control data and index information for all of its tables. It is the most important and complex one amongst other engines provided. It’s the only engine provides ACID compliance as well as other advanced features like stored procedures and triggers. [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick $strace -e stat64 mysqld --print-defaults $lsof -p <mysqld_pid)
  • 4. COLLABORATE 15 – IOUG Forum Database 4 | P a g e “My First 100 days with a MySQL DBMS” White Paper INSTALLING MYSQL There are different methods of installing MySQL, but the easiest way to do it, is through a yum repository, below is an example on a Linux 6.6 The generic Unix/Linux binary file layout of the installation is shown in the table below Directory Contents bin Client programs and mysqld server data Log files and databases docs Manual in Info format man Unix manual pages As root [root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -r -g mysql mysql [root@localhost ~]# yum localinstall mysql-community-release-el6-6.noarch.rpm [root@localhost ~]# yum repolist enabled | grep "mysql.*-community.*" [root@localhost ~]# yum repolist all | grep mysql [root@localhost ~]# yum install mysql-community-server [root@localhost ~]# service mysqld start Starting mysqld:[ OK ] [root@localhost ~]# service mysqld status mysqld (pid 407) is running. [root@localhost ~]# mysql_secure_installation As local user [mysql@localhost Desktop]$ mysql -u root -p Enter password: … mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> CREATE USER 'rene'@'%' IDENTIFIED BY 'oracle'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'rene'@'%' with grant option; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit
  • 5. COLLABORATE 15 – IOUG Forum Database 5 | P a g e “My First 100 days with a MySQL DBMS” White Paper include Include (header) files lib Libraries scripts mysql_install_db share Misc support files including error messages, sample option files and SQL for database installation sql-bench Benchmarks MYSQL ENGINE TYPES As we mentioned before, MySQL uses a pluggable storage engine architecture, meaning that that a storage engine can be loaded and unloaded from a running MySQL server. Two of the most popular are Innodb and MyISAM . As of MySQL 5.5 and later Innodb is the default storage engine in a fresh MySQL installation. DIFFERENCES OF INNODB AND MYISAM a)   InnoDB DML operations (add, update and delete data) is ACID (atomic, consistent, isolated and durable) model compatible. b)   InnoDB has foreign keys and relationship constraints while MyISAM does not c)   InnoDB has granular locking level from table to row-level lock for inserting and updating while MyISAM implements table-level lock. d)   InnoDB has Stored Procedures and Triggers while MyISAM does not e)   InnoDB allows some online DDL (alter) operations without locking MyISAM does not mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+-----+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+-----+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+-----+ 9 rows in set (0.28 sec)
  • 6. COLLABORATE 15 – IOUG Forum Database 6 | P a g e “My First 100 days with a MySQL DBMS” White Paper f)   InnoDB requires more hardware resources to run specifically RAM as the buffer cache uses to serve faster data. g)   MyISAM Especially good for read-intensive (select) tables h)   There is a limit of 232 (~4.295E+09) rows in a MyISAM table Creating a table with a specific storage engine Setting the default storage engine Other engine types are only used when there’s a specific need and custom application for it. Usually they aren’t being utilised as much as Innodb or MyIsam engines. Some are listed below: •   Memory •   CSV •   Archive •   Blackhole •   3rd Party mysql> CREATE TABLE test1 (col1 INT, col2 CHAR(30), PRIMARY KEY (col1)) ENGINE = INNODB; Query OK, 0 rows affected (0.29 sec) mysql> DESC test1; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | col1 | int(11) | NO | PRI | 0 | | | col2 | char(30) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.18 sec) mysql> CREATE TABLE test2 (col1 INT, col2 CHAR(30)) ENGINE = MYISAM; Query OK, 0 rows affected (0.36 sec) mysql> SHOW TABLE STATUS FROM rene; +--------+--------+---------+------------+------+----------------+-------------+-------------------+--------- -----+-----------+----------------+---------------------+---------------------+------------+----------------- +----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-------------------+--------- -----+-----------+----------------+---------------------+---------------------+------------+----------------- +----------+----------------+---------+ | test1 | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 0 | 1 | 2015-01-08 18:21:05 | NULL | NULL | utf8_general_ci | NULL | | | | test2 | MyISAM | 10 | Fixed | 0 | 0 | 0 | 26740122787512319 | 1024 | 0 | NULL | 2015-01-08 18:35:47 | NULL | NULL | utf8_general_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-------------------+--------- -----+-----------+----------------+---------------------+---------------------+------------+----------------- +----------+----------------+---------+ 2 rows in set (0.03 sec) SET default_storage_engine= MYISAM;
  • 7. COLLABORATE 15 – IOUG Forum Database 7 | P a g e “My First 100 days with a MySQL DBMS” White Paper MYSQL TROUBLESHOOTING LOGS As always logs are the best place to start troubleshooting MySQL has the following files: •   Error Log. - It contains information about errors that occur while the server is running (also server start and stop). If mysqld notices a table that needs to be automatically checked or repaired, it writes a message to the error log. On some operating systems it writes the stack trace if mysqld crashes. •   General Query Log. - This is a general record of what mysqld is doing (connect, disconnect, queries). It logs each SQL statement received from clients and can be very useful when you suspect an error in a client and want to know exactly what the client sent to mysqld. This log can grow quickly on a moderately busy server - so watch it carefully. This can be enabled or disabled: •   Slow Query Log. – It is your first line of offense for tuning queries Ιt consists of "slow" SQL statements (as indicated by its name). It logs SQL statements that took more than the parameter long_query_time in seconds and required at least min_examined_row_limit rows to be examined. To disable or enable the slow query log, use the global system variable slow_query_log. Set slow_query_log to 0 (or OFF) to disable the log or to 1 (or ON) to enable it. OBTAINING EXECUTION PLAN INFORMATION When you issue a query, the MySQL Query Optimizer tries to devise an optimal plan for query execution. The EXPLAIN statement provides information about how MySQL executes statements. You can see information about the plan by prefixing the query with EXPLAIN. EXPLAIN EXTENDED can be used to obtain additional execution plan information. As of MySQL 5.7.3, the EXPLAIN statement is changed so that the effect of the EXTENDED keyword is always enabled. The order of the tables given in the EXPLAIN output matters. Tables listed in the order that MySQL reads them while processing and performing the nested-loop joins. MySQL reads a row from the first table, and then finds a matching row in the second table, the third table, and so on. When all tables are processed, MySQL outputs the selected columns and backtracks through the table list until a table is found for which there are more matching rows. The next row is read from this table and the process continues with the next table. If you detect that you have a problem with indexes not being used when you believe that they should be, run ANALYZE TABLE to update table statistics, such as cardinality of keys, that can affect the choices the optimizer makes. SET GLOBAL general_log = 'OFF'; slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 10 log_queries_not_using_indexes = 1 mysql> explain extended select j1.c1 from j1, j2, j3 where j1.c1 = j2.c1 and j3.c1 = j1.c1; +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | j1 | ALL | NULL | NULL | NULL | NULL | 2 | | | 1 | SIMPLE | j2 | ALL | NULL | NULL | NULL | NULL | 3 | Using where | | 1 | SIMPLE | j3 | ALL | NULL | NULL | NULL | NULL | 4 | Using where | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+
  • 8. COLLABORATE 15 – IOUG Forum Database 8 | P a g e “My First 100 days with a MySQL DBMS” White Paper LOGICAL AND PHYSICAL BACKUPS Backups are always important when managing data. MySQL has several ways to do a backup. LOGICAL BACKUP The first way is doing a logical backup; this will save the logical structure and the data content of our database. This type of backup is suitable for small databases. A logical backup does not include log and/or configuration files or other database related files. A very common tool is mysqldump, it will pull data out of the server, and write it down in logical format. One great advantage of using mysqldump is that is machine independent. PHYSICAL BACKUP The backup consists of exact copies of database directories and files. Typically this is a copy of all or part of the MySQL data directory, so it normally will contain log and/or configuration files or other database related files. One very common way to do physical backups is through filesystem snapshot, but there is a database level lock that has to happen for these to be consistent. The steps for this type of backup are below: a)   FLUSH TABLES WITH READ LOCK; b)   Take the filesystem snapshot c)   UNLOCK TABLES; You can also use MySQL Enterprise Backup, which is the “official” solution for hot backups of InnoDB tables, it will perform warm backup for other storage engines. [mysql@localhost Desktop]$ mysqldump -u pythian – p $pw --extended-insert=true --add-drop-database -- databases rene | gzip > /export/full_dump.gz [root@localhost mysqlbackup ]# ./mysqlbackup --user=root -p --backup-dir=/home/admin/backups backup-and- apply-log ... 140904 12:34:54 mysqlbackup: INFO: MEB logfile created at /home/admin/backups/meta/MEB_2014-09-04.12-34- 54_backup_apply_log.log -------------------------------------------------------------------- Server Repository Options: -------------------------------------------------------------------- datadir = /var/lib/mysql/ innodb_data_home_dir = innodb_data_file_path = ibdata1:12M:autoextend innodb_log_group_home_dir = /var/lib/mysql/ innodb_log_files_in_group = 2 innodb_log_file_size = 50331648 innodb_page_size = 16384 innodb_checksum_algorithm = innodb innodb_undo_directory = /var/lib/mysql/ innodb_undo_tablespaces = 0 innodb_undo_logs = 128 … innodb_undo_directory = /home/admin/backups/datadir innodb_undo_tablespaces = 0 innodb_undo_logs = 128 mysqlbackup: INFO: Unique generated backup id for this is 14098484948398421 mysqlbackup: INFO: Creating 14 buffers each of size 16777216. 140904 12:34:57 mysqlbackup: INFO: Full Backup operation starts with following threads 140904 12:34:57 mysqlbackup: INFO: Starting to copy all innodb files... … 140904 12:35:14 mysqlbackup: INFO: Apply-log operation completed successfully. 140904 12:35:14 mysqlbackup: INFO: Full backup prepared for recovery successfully. mysqlbackup completed OK!
  • 9. COLLABORATE 15 – IOUG Forum Database 9 | P a g e “My First 100 days with a MySQL DBMS” White Paper MYSQL REPLICATION MySQL supports many replication types. The way MySQL replication works is keeping track of all updates in log files (index & binlog) on the Master (with log-bin enabled). The MySQL slave receives these binlog dumps and builds relay logs via I/O thread. SQL thread applies all changes to the MySQL slave. MASTER - MASTER (CIRCULAR) Master - Master replication means MySQL servers (mysqld) on different hosts or same host with different port number (port) setup with unique (server-id) and binlog (log-bin) enabled MASTER - SLAVE (SINGLE - MULTI) One of the most common replication styles that can be setup is with one master and multiple slaves. Master - Slave replication means MySQL servers (mysqld) on different hosts or the same host with different port number (port) setup with unique (server-id) and binlog (log-bin) enabled on Master. MASTER - SLAVE - SLAVE (A-> B-> C->) This type of MySQL replication is similar setup as master-slave replication and called chain replication. The only difference is host B in the chain should have log_slave_updates (log-slave-updates) enabled on top of binlog (log-bin) variables. A (Master) - > B (Master-Slave) -> C (Slave)
  • 10. COLLABORATE 15 – IOUG Forum Database 10 | P a g e “My First 100 days with a MySQL DBMS” White Paper REFERENCES a)   MySQL 5.6 Manual http://dev.mysql.com/doc/refman/5.6/en/ b)   MySQL Architecture https://thinkingmonster.wordpress.com/database/mysql/mysql-architecture/ c)   A fast and furious guide to MySQL database engines http://www.techrepublic.com/article/a-fast-and-furious-guide-to-mysql-database-engines/ d)   MySQL Storage Engines http://www.w3resource.com/mysql/mysql-storage-engines.php e)   Using EXPLAIN to Write Better MySQL Queries http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/ f)   MySQL Enterprise Backup User's Guide http://dev.mysql.com/doc/mysql-enterprise-backup/3.11/en/intro.html g)   Getting Started with MySQL - Ligaya Turmelle (Presentation) h)   Pythian Internal Documents