Sie sind auf Seite 1von 28

www.fromdual.

com

MySQL fr Oracle DBA's


DOAG Regionaltreffen Freiburg/Sdbaden
26. Januar 2016, Freiburg
Oli Sennhauser
Senior MySQL Consultant, FromDual GmbH

oli.sennhauser@fromdual.com
1 / 28

ber FromDual GmbH

www.fromdual.com

Support
Beratung

remote-DBA

Schulung
2 / 28

Inhalt

www.fromdual.com

MySQL fr Oracle DBA's

Geschichte
Branches und Forks
Installation
Zugriff auf MySQL
User und Schema
Storage Engines
InnoDB Storage Engine
Performance Tuning
Monitoring
Logging
Hochverfgbarkeit
MySQL in der Cloud
3 / 28

Geschichte

Anfang in den 1990ern

Als SQL Layer fr C-ISAM Dateien

Ersatz von mSQL im LAMP Stack, um 2000

Verschiedene Storage Engines in MySQL

Innobase OY: InnoDB, ca. 2003

InnoDB Black Friday

Oracle kauft Innobase OY, Nov 2005

Sun Microsystems kauft MySQL fr USD 1 Mia, Apr 2008

Oracle kauf Sun fr USD 7.4 Mia, 2009

www.fromdual.com

MySQL und InnoDB jetzt wieder vereint!

Kontinuitt: 2010 2016 MySQL 5.5, 5.6 und 5.7

Verbesserung der Skalierbarkeit

Robustere Replikation

Ausmerzen von Kinderkrankheiten


4 / 28

Wo steht MySQL heute?

www.fromdual.com

http://db-engines.com/en/ranking
5 / 28

Branches und Forks

www.fromdual.com

MySQL ist Open Source (GPL)

d. h. jede/r darf selber

Branches und Forks

Wer setzt MySQL Branch/Fork ein?

NICHT primre kostenfrei sonder Wahlfreiheit!

Echte Konkurrenz auf MySQL-Markt!

Wer setzt MySQL wegen free of cost ein?

Nicht Lizenz sondern eine Subskription (Abo) fr


Support + Tools

Ausnahme: OEM, VAR, ISV


6 / 28

MySQL Subskriptionen

www.fromdual.com

MySQL Community Edition (CE)

Open Source MySQL Server

+ hilf dir selber

MySQL Standard Edition (SE)

Open Source oder Commercial MySQL Server

+ MySQL Support

MySQL Enterprise Edition (EE)

Standard Edition (SE)

+ Enterprise Tools (Monitor, Backup, Audit, ...)

MySQL Commerical OEM, ISV, VAR (Lizenz)


7 / 28

MySQL Plattform

www.fromdual.com

85.7% Linux

10.5% Windows

1.7% Solaris

1.4% BSD

0.7% Others

Exotische Plattformen fhren


wahrscheinlich eher zu Problemen!
8 / 28

Installation

Wichtiger Grundsatz bei MySQL: KISS!

Warum einfach machen, wenn es auch kompliziert geht?

Oracle: OUI (MySQL zum Glck nicht!)

MySQL:

www.fromdual.com

Pakete der Hersteller (RPM, DEB)

Pakete der Distribution (RPM, DEB)

Binary-Tar-Ball (.tar.gz)

Source zum selber kompilieren

Repository direkt vom Hersteller

http://www.mysql.com/downloads

http://dev.mysql.com/downloads/repo/yum
9 / 28

Erstellen der Datenbank

Distribution legt eine Datenbank an:

www.fromdual.com

/var/lib/mysql

Von Hand:

mysql_install_dbuser=mysqldatadir=...

Neu in 5.7:

mysqldinitializeuser=mysqldatadir=...

Multi-Instanzen Setups vs. Lamp-Silos

myEnv
10 / 28

Konfiguration

www.fromdual.com

MySQL Konfigurationsdatei:

my.cnf oder my.ini (Win)

Liegt unter: /etc/ oder /etc/mysql

MySQL: kein SPFILE

nderung in my.cnf Restart oder

SETGLOBALvariable=wert;

von Hand in my.cnf schreiben!

Gutes Template:

http://fromdual.com/mysql-configuration-file-sample
11 / 28

Starten/stoppen von MySQL

Automatisch: in Boot-Prozess eingebunden

Von Hand:

www.fromdual.com

servicemysql[start|stop]

oder

mysqld_safe Angel-Prozess

Neu: bei Systemd oder Upstart obsolet.

Prfen:
psef|grepmysqld

Killen von Hand (nett, dann hart):


killTERM<pid>;killKILL<pid>

Obacht bei NICHT crash-safen Storage Engines (MyISAM)!

Achtung bei Distrio-Start/Stop-Skripten (Debian)!


12 / 28

Prozess vs. Thread

MySQL: Threads

Oracle: Prozess (+ neu auch Threads)

RECO, PMON, SMON, DBW0, LGWR, ARC0, ...

shell> ps -eLf | grep


UID
PID PPID
mysql
6411
1
mysql
7081 6411
mysql
7081 6411
mysql
7081 6411
mysql
7081 6411

www.fromdual.com

mysqld
LWP CMD
6411 mysqld_safe
7081 mysqld
7083 mysqld
7084 mysqld
7085 mysqld

Welche?
SELECT*FROMperformance_schema.threads;
13 / 28

Zugriff auf MySQL

CLI vs. GUI

CLI: mysql (Oracle: SQL*Plus)

Nicht so mchtig wie SQL*Plus


shell>mysqluser=...password=...
host=...port=...database

mysql>help

www.fromdual.com

GUI: MySQL Enterprise Workbench (WB)

Administration (Backup, Monitoring, ...)

Entwicklung (SQL, Migration)

Designer (ER-Diagramme)
14 / 28

Connections / Connectors

www.fromdual.com

Verbindung

In MySQL billig: oft KEIN Connection-Pooling

1 Verbindung = 1 Thread 1 Query 1 Core

Thread Pool (1000e von Verbindungen)

Connectors:

JDBC/ODBC

PHP, Perl, Python, Ruby, .NET

15 / 28

User und Schema

User

'oli'@'localhost' Unix Socket

'oli'@'127.0.0.1' TCP von IP

'oli'@'%' TCP von berall her

MySQL Port: 3306

Privilegien

www.fromdual.com

Global: *.*, pro Schema , pro Tabelle, pro Spalte

Schema (= Database)

Objekte unabhngig vom User ( gehrt System)

16 / 28

Wichtigste Befehle

SHOWDATABASES;

usemysql;

SHOWTABLES;

SHOW[FULL]PROCESSLIST;

SELECTuser,hostFROMmysql.user;

SHOWGRANTSFORuser@host;

SHOWGLOBALVARIABLES;

SHOWGLOBALSTATUS;

SHOWENGINES;

www.fromdual.com

17 / 28

Storage Engines

MySQL Architektur ist speziell:


Traditional
(R)DBMS
= Monolith

www.fromdual.com

SQL Layer
Handler Interface
InnoDB

MyISAM

Memory

Verschiedene Storage Engines (DB Engine):


InnoDB, MyISAM, MEMORY
SELECT*FROMinformation_schema.tables;

Frher MyISAM (<= 5.1)

heute: InnoDB (>= 5.5)

SHOW CREATE TABLE test\G


CREATE TABLE `test` (
...
) ENGINE=InnoDB;
18 / 28

InnoDB Storage Engine

Transaktionen (ACID)

Isolation Level (default repeatable-read)

InnoDB Buffer Pool Database Buffer Cache

innodb_buffer_pool_size

16k Pages

InnoDB Log File (ib_logfile?) Redo Logs

innodb_log_file_size

InnoDB System Tablespace (ibdata1)

InnoDB TS Konzept (innodb_file_per_table):

www.fromdual.com

alles im System TS (default bis 5.5)

1 Tablespace pro Tabelle (default ab 5.6)

mehrere TS (ab 5.7)

InnoDB: PK geclusterte Tabellen IOT


19 / 28

Performance Tuning

mysql>SHOWGLOBALSTATUS;

PERFORMANCE_SCHEMA

Slow Query Log

www.fromdual.com

slow_query_log=1

long_query_time=0.5

shell>mysqldumpslowstslow.log>profile

Query Execution Plan:


mysql>EXPLAINSELECT*FROMtest;

20 / 28

Wichtigste Tuning-Parameter

www.fromdual.com

innodb_buffer_pool_size (default zu klein)

innodb_log_file_size (defaults in 5.6 besser)

innodb_flush_log_at_trx_commit (default langsam


aber sicher)

sync_binlog (default schnell aber unsicher)

key_buffer_size (default zu klein fr MyISAM DB)

table_open_cache (default besser gut mit 5.6)

table_definition_cache (default besser gut mit


5.6)
query_cache_size (default off seit 5.6!) :-(
21 / 28

Monitoring von MySQL

www.fromdual.com

MySQL Enterprise Monitor (MEM)


Oracle Cloud Contol (OEM/OMS) mit MySQL
Plug-in
3rd Party Tools

22 / 28

Logging

Error Log

Fehler und Warnungen (log_warnings=2)

Slow Query Log

www.fromdual.com

langsame Abfragen
slow_query_log = ON
long_query_time = 1.25

General Query Log

alle Abfragen
general_query_log=ON
23 / 28

Hochverfgbarkeit

Master/Slave Replikation

Data-Guard

aktiv/passiv Failover-Cluster

www.fromdual.com

dito

Galera Cluster fr MySQL

Oracle RAC

24 / 28

MySQL Replikation

MySQL Master/Slave Replikation

Entspricht Oracle Data Guard

Einsatz-Szenarien

www.fromdual.com

Hochverfgbarkeits-Anforderungen mittel bis hoch


Failover typischerweise < 1 min
Failover-Slave

Reporting-Slave

Backup-Slave

Massives Read-Scaleout

Set-up ziemlich einfach

Know-How ist weit verbreitet

Man muss trotzdem wissen, was man tut!

One-shot failover

Google weiss Rat!

async!

25 / 28

RAC: Galera Cluster

www.fromdual.com

Oracle Real Application Cluster (RAC)

MySQL: Galera Cluster


App

App

App

rw
Load balancing (LB)

Node 1

Node 2

Node 3

wsrep

wsrep

wsrep

Galera replication

Shared-Nothing Architektur
26 / 28

MySQL in der Cloud

Ja geht!

Sowohl in:

Private Cloud

Public Cloud

Rechenzentrums-bergreifend

Kontinent-bergreifend

Aber auf Kosten von:

Performance (Latenz, Noisy Neigbours)

Preis (dafr Flexibilitt)

Vertraulichkeit

www.fromdual.com

27 / 28

Q&A

www.fromdual.com

Fragen ?
Diskussion?
Wir haben Zeit fr ein persnliches Gesprch...

FromDual bietet neutral und unabhngig:

Beratung

Remote-DBA

Support fr MySQL, Galera, Percona Server und MariaDB

Schulung

www.fromdual.com/presentations
28 / 28