MySQL for Oracle DBAs

of 31 /31
www.fromdual.com 1 / 31 MySQL für Oracle DBAs DOAG Webinar 14. Juni 2013 Oli Sennhauser Senior MySQL Consultant, FromDual GmbH [email protected]

Embed Size (px)

description

Some explanations for Oracle DBAs how MySQL works and what MySQL features relate to what Oracle Features...

Transcript of MySQL for Oracle DBAs

Page 1: MySQL for Oracle DBAs

www.fromdual.com

1 / 31

MySQL für Oracle DBAs

DOAG Webinar 14. Juni 2013

Oli SennhauserSenior MySQL Consultant, FromDual GmbH

[email protected]

Page 2: MySQL for Oracle DBAs

www.fromdual.com

2 / 31

Über FromDual GmbH

● FromDual bietet neutral und unabhängig:● Beratung für MySQL● Support für MySQL und Galera Cluster● Remote-DBA Dienstleistungen für MySQL● MySQL Schulungen

● Oracle Silver Partner (OPN)● Mitglied der SOUG, DOAG, /ch/open

www.fromdual.com

Page 3: MySQL for Oracle DBAs

www.fromdual.com

3 / 31

Inhalt

HA Solutions

➢ Read scale-out➢ Replication set-up for HA➢ Active/passive fail-over➢ MySQL Cluster➢ Replication Cluster➢ Storage-Engine-Replication

MySQL für Oracle DBAs

➢ Einsatz von MySQL➢ Installation, Konfiguration, Starten/Stoppen➢ Architektur, Storage Engines➢ InnoDB➢ Monitoring, Logging➢ Backup, Restore, Point-in-Time-Recovery➢ Replikation➢ Hochverfügbarkeit➢ RAC für MySQL

Page 4: MySQL for Oracle DBAs

www.fromdual.com

4 / 31

Einsatz von MySQL

● Wo wird MySQL eingesetzt:● Facebook – 1 Mia User, 72 M QPS● Google – Adwords, Mia Umsatz/Jahr

(M→O→M→F1)● Wikipedia – z. Zt. #6 weltweit● BörseGo – Online Börsenhandel● Playboy – Drupal CMS● EMKA – ERP, 1000 MA● V-Zug – Hybris Webshop● Buch.de – #2 online Buchhändler in D● Kikxxl – Callcenter, 1000 MA● Integrics – VoIP Lösungen, 1000e Anschlüssen● RePower – zig 1000 Windmühlen

Page 5: MySQL for Oracle DBAs

www.fromdual.com

5 / 31

Installation

Oracle: OUI (Oracle Universal Installer)● MySQL: Windows: InstallerC:\Program files\mysql\mysqlserver5.6\C:\Program files\mysql\mysqlserver5.6\data

● MySQL Linux:● Pakete: *.rpm, *.deb/usr//var/lib/mysql

● Binary Tar-Ball: mysql5.7.1linuxx86_64.tar.gz● Quellen → Kompilieren: cmake; make; make install

● MySQL Community vs. Enterprise, Drittanbieter

Page 6: MySQL for Oracle DBAs

www.fromdual.com

6 / 31

MySQL Plattform

● „Exotische“ Plattformen führen aus statistischen Gründen eher zu Problemen!

● 85.7% Linux● 10.5% Windows● 1.7% Solaris● 1.4% BSD● 0.7% Others

Page 7: MySQL for Oracle DBAs

www.fromdual.com

7 / 31

Konfiguration

Oracle: $ORACLE_HOME/dbs/init<SID>.ora● MySQL:

● Windows:C:\Program Files\mysql\mysqlserver5.6\my.ini

● Linux:/etc/my.cnf, /etc/mysql/my.cnf, $basedir/my.cnf

● !includedir /etc/mysql/conf.d/● defaultsfile, defaultsextrafile

Page 8: MySQL for Oracle DBAs

www.fromdual.com

8 / 31

Konfigurations-Parameter

● my.cnf / my.ini● mysql> SHOW GLOBAL VARIABLES;

● 5.1.69: 277● 5.5.31: 317● 5.6.11: 429

● mysql> SET GLOBAL variable = value;

● Kein Persistieren (spfile)

Page 9: MySQL for Oracle DBAs

www.fromdual.com

9 / 31

Starten / stoppen

Oracle: sqlplus / as sysdba STARTUP● MySQL Linux:

● Alt: shell> /etc/init.d/mysql start|stop|restart● Neu: shell> service mysql start|stop|restart● „von Hand“:

● shell> bin/mysqld_safe &● shell> bin/mysqld &● shell> mysqladmin user=root shutdown

● MySQL Windows● Windows Service Utility● cmd> net start|stop|restart MySQL

Page 10: MySQL for Oracle DBAs

www.fromdual.com

10 / 31

Tools

● Tools:● sqlplus → mysql● srvmgrl → mysqladmin

● MySQL Workbench● Admin● Query Browser● ER - Diagramme

● Heidi SQL, phpMyAdmin

Page 11: MySQL for Oracle DBAs

www.fromdual.com

11 / 31

Prozess-Architektur

Oracle: Multi-Prozess ModellShared MemoryPMON, SMON, RECO, DBW0, LGWR, ARC0, ...

● MySQL: Multi-Thread Modell

mysqld● Angel-Prozessmysqld_safe

● Vordergrund- und Hintergrund-Threads:

Page 12: MySQL for Oracle DBAs

www.fromdual.com

12 / 31

MySQL Thread Architektur

mysql> SELECT thread_id, name AS 'thread_name', type, processlist_user AS user FROM performance_schema.threads;+-----------+----------------------------------------+------------+------+| thread_id | thread_name | type | user |+-----------+----------------------------------------+------------+------+| 1 | thread/sql/main | BACKGROUND | NULL || 2 | thread/innodb/io_ibuf_thread | BACKGROUND | NULL || 3 | thread/innodb/io_log_thread | BACKGROUND | NULL || 4 | thread/innodb/io_read_thread | BACKGROUND | NULL || 11 | thread/innodb/io_write_thread | BACKGROUND | NULL || 14 | thread/innodb/srv_error_monitor_thread | BACKGROUND | NULL || 15 | thread/innodb/srv_lock_timeout_thread | BACKGROUND | NULL || 16 | thread/innodb/srv_monitor_thread | BACKGROUND | NULL || 17 | thread/innodb/srv_master_thread | BACKGROUND | NULL || 18 | thread/innodb/srv_purge_thread | BACKGROUND | NULL || 19 | thread/innodb/page_cleaner_thread | BACKGROUND | NULL || 20 | thread/sql/signal_handler | BACKGROUND | NULL || 22 | thread/sql/one_connection | FOREGROUND | root || 28 | thread/sql/one_connection | FOREGROUND | oli |+-----------+----------------------------------------+------------+------+

shell> ps -efL | egrep 'mysqld|PID'UID PID PPID LWP C NLWP STIME TTY TIME CMDmysql 3248 1 3248 0 1 16:28 pts/0 00:00:00 /bin/sh bin/mysqld_safemysql 3925 3248 3925 0 23 16:28 pts/0 00:00:00 bin/mysqld ...mysql 3925 3248 4088 0 23 16:31 pts/0 00:00:00 bin/mysqld

Page 13: MySQL for Oracle DBAs

www.fromdual.com

13 / 31

Connections / Connectors

● 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

Page 14: MySQL for Oracle DBAs

www.fromdual.com

14 / 31

User und Schema

● User● 'oli'@'localhost' → Unix Socket

● 'oli'@'127.0.0.1' → TCP Port

● 'oli'@'%' → TCP von überall her

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

● Schema (= Database)● Unabhängig vom User (→ gehört System)

Page 15: MySQL for Oracle DBAs

www.fromdual.com

15 / 31

Storage Engines

mysqld

Application / Client

ThreadCache

ConnectionManager

User Au-thentication

CommandDispatcherLogging

Query CacheModule

QueryCache

Parser

Optimizer

Access Control

Table Manager

Table OpenCache (.frm, fh)

Table DefinitionCache (tbl def.)

Handler Interface

MyISAM Memory NDB TokutekInnoDB ...AriaBright-house

Federated-X

Page 16: MySQL for Oracle DBAs

www.fromdual.com

16 / 31

InnoDB (default SE >= 5.5.)

● Transaktionen (ACID)● Isolation Level (repeatable-read vs read-committed)● Tabelspaces

● System TS = ibdata1● Table TS (innodb_files_per_table = 1)

● InnoDB: PK geclusterte Tabellen → IOT● InnoDB Buffer Pool (16k Block Buffer)● REDO Logs: ib_logfile? (5M default)

Page 17: MySQL for Oracle DBAs

www.fromdual.com

17 / 31

Logging

● Error Log (~ alert_<SID>.log)

● /var/log/mysql*

● General Query Log

general_log = 1

● Slow Query Log● slow_query_log = 1

● Binary Log (~ archive.log)

● log_bin = 1 / binarylog● DML + DDL aller SE

● (Transaktions-Log, ib_logfile?, SE abhängig) (~ redo.log)● DML InnoDB

Page 18: MySQL for Oracle DBAs

www.fromdual.com

18 / 31

Logisches Backup

Oracle: exp/imp (vor Datapump)

● MySQL: mysqldump/mysql● Jede Row wird angelangt:

● Langsam● Restore SEHR langsam!

mysql> mysqldump alldatabases singletransaction masterdata=1 > full_dump.sql

mysql> mysql < full_dump.sql

Page 19: MySQL for Oracle DBAs

www.fromdual.com

19 / 31

Physisches Backup

Oracle: rman, ALTER TABLESPACE ... BEGIN|END BACKUP;● MySQL:

● Snapshot mit LVM, BtreeFS oder ZFS● mylvmbackup

● Xtrabackup, MySQL Enterprise Backup (MEB)shell> innobackupex /data/backups

shell> innobackupex applylog /data/backups/20121113/

shell> innobackupex copyback /data/backups/20121113/

shell> chown R mysql:mysql /var/lib/mysql

● Links:

http://www.lenzg.net/mylvmbackup/● http://www.percona.com/doc/percona-xtrabackup

Page 20: MySQL for Oracle DBAs

www.fromdual.com

20 / 31

Binary Log

~ Oracle Archive Logs● MySQL Binary-Log:

● DDL + DML aller SE (nicht nur InnoDB)!

● für:● Replikation● Point-in-Time-Recovery (PiTR)

● 3 Varianten:● Statement Based Replication (SBR) <= 5.0● Row Based Replication (RBR) ab 5.1● Transaction Based Replication (TBR) ab 5.6

Page 21: MySQL for Oracle DBAs

www.fromdual.com

21 / 31

Point-in-Time-Recovery (PITR)

Application ApplicationApplication

mysqld

binarylog

writerthread

bin-log.1 bin-log.2 bin-log.n...

log_bin = on

t

full

bac

kup

pos/time?

Page 22: MySQL for Oracle DBAs

www.fromdual.com

22 / 31

MySQL Replikation

● MySQL Basis-Fuktionalität● Sehr einfach aufzusetzen (5 min)● Streaming-Replication (kein Log Shipping)● Basiert auf MySQL Binary Logs● Braucht:

● Unique server_id (Master und Slave) (restart)● Binary Loggin auf Master einschalten (restart)● Replikations-User● Konsistentes Backup + Binary Log Position

Page 23: MySQL for Oracle DBAs

www.fromdual.com

23 / 31

...

Master – Slave Replikation

Application

Master

log_bin = onserver_id = 42

Slave

● Wir brauchen:● Binary Log● Server Id● User für die Replikation (auf dem Master)● Konsistentes Backup MIT Binary Log Position

bin-log.m bin-log.n relay-log.m relay-log.n...

IO_thread

SQL_thread

Page 24: MySQL for Oracle DBAs

www.fromdual.com

24 / 31

High-Availability mit Replikation

Application

Master

Slave Backup

Slave Reporting

rtw

Load balancer

read only

Slave 1

Slave 2

Slave 3 ...

async!

Slave M

VIP

Page 25: MySQL for Oracle DBAs

www.fromdual.com

25 / 31

RAC: Galera Cluster

App App App

Load balancing (LB)

Node 2 Node 3Node 1

wsrep

Galera replicationwsrep wsrep

rwrw

Oracle Real Application Cluster (RAC)● MySQL: Galera Cluster

● Shared-Nothing Architektur

Page 26: MySQL for Oracle DBAs

www.fromdual.com

26 / 31

Galera Cluster für MySQL

App App App

Load balancing (LB)

Node 2 Node 3Node 1

wsrep

Galera replicationwsrep wsrep

● Hardware-Ausfall● Wartungsarbeiten

● HW/OS/DB Upgrade

● 5x9 HA: 99.999%

Page 27: MySQL for Oracle DBAs

www.fromdual.com

27 / 31

Monitoring

● OEM/DBC/Grid-Control/Cloud-Control● MySQL Enterprise Monitor (MEM) €€€● MySQL Performance Monitor (mpm)● mysql> SHOW GLOBAL STATUS;● Nagios / Icinga● Links:

http://www.mysql.com/products/enterprise/monitor.html

http://www.fromdual.com/mysql-performance-monitor

http://www.fromdual.com/download#nagios

Page 28: MySQL for Oracle DBAs

www.fromdual.com

28 / 31

Performance Tuning

● mysql> SHOW GLOBAL STATUS;

● PERFORMANCE_SCHEMA● Slow Query Log

● slow_query_log = 1● long_query_time = 0.5● shell> mysqldumpslow s t slow.log > profile

● Query Execution Plan:

mysql> EXPLAIN SELECT * FROM test;

Page 29: MySQL for Oracle DBAs

www.fromdual.com

29 / 31

Stored Programs

Oracle: PL/SQL, Java● MySQL:

● Stored Procedures● Stored Functions● User Defined Functions (UDF): C/C++● Plugin: C/C++

Page 30: MySQL for Oracle DBAs

www.fromdual.com

30 / 31

Volltext-Suche

Oracle: Kostenpflichtiges Modul?● MySQL: Standardmässig dabei!

ALTER TABLE test ADD FULLTEXT INDEX (data);

SELECT * FROM test WHERE MATCH data AGAINST('DBA');+----+----------------------------------------+| id | data |+----+----------------------------------------+| 1 | Wir suchen zur Zeit einen Support DBA! |+----+----------------------------------------+

Page 31: MySQL for Oracle DBAs

www.fromdual.com

31 / 31

Q & A

Fragen ?

Diskussion?

Wir haben Zeit für ein persönliches Gespräch...

● FromDual bietet neutral und unabhängig:● Beratung

● Remote-DBA

● Support für MySQL, Galera, Percona Server und MariaDB

● Schulungwww.fromdual.com/presentations