Für DBAs und Entwickler: Das intelligente Open-Source-Gateway MariaDB MaxScale
Transcript of Für DBAs und Entwickler: Das intelligente Open-Source-Gateway MariaDB MaxScale
©MariaDBCorpora,onAb 1
©MariaDBCorpora,onAb
DasOpen-Source-GatewayMariaDBMaxScale
FürMariaDB/MySQLDBAsundEntwickler
* *2
RalfGebhardtPrincipalSalesEngineer
©MariaDBCorpora,onAb
MariaDBCorpora,on
• GegründetvomMySQLKernteam,wieMichael“Monty”WideniusundDavidAxmark.
• Core-MariaDBEntwicklersindMitarbeitervonMariaDBCorpora,on
• Entwicklungs-UnterstützungderMariaDBFounda,on• OpenSourceEn,tystelltEntwicklungvonMariaDBausderCommunitysicher–www.mariadb.org
• Innova,veProduktewertenMariaDBauf.• EnterpriseServiceswie24/7SupportfürMariaDBundMySQL.
3
©MariaDBCorpora,onAb
WasistMariaDBMaxScale?
• EinflexiblerDaten-Gatewayfür• Skalierung• Hochverfügbarkeit• Sicherheit• Interoperabilität
• FlexibelkonfigurierbareGateway-Pla_orm• „Databaseaware“• „Plugable“Architektur
4
©MariaDBCorpora,onAb
WarumeineGateway-Pla_orm?
• VereinfachtdenAubauneuerDeployment-Architekturen
• ReduziertdieKomplexitätundRisikeninverschiedenstenUmgebungen
5
©MariaDBCorpora,onAb
Standard-anwendung
HA-ArchitekturfürStandard-Anwendungen
6
Standard- anwendung
MaxScale RW-Splitting
Write
Master
©MariaDBCorpora,onAb
Anwendung
Rou,ngüberAnwendung
7
RW-Splitting
Anwendung
Load Balancing
Galera
Write
Master
©MariaDBCorpora,onAb
Rou,ngüberMariaDBMaxScale
8
MaxScale
Anwendung
Connection Routing
Anwendung
Connection Routing
Write Read Write
Galera Master
Anwendung
Connection Routing
Galera
©MariaDBCorpora,onAb
Warum„Databaseaware“?
• AngepasstanDatenbank-Umgebungen• KenntdenStatusderDatenbank-Service-Komponenten
• „versteht“denDatenstrom• VerteiltAnfragenbasierendaufderKombina,onvon
• DefiniertenAlgorithmen• StatusderKomponenten• InhaltderAnfragen• Session-Status
9
©MariaDBCorpora,onAb
MariaDBMaxScaleArchitektur
10
CORE
PROTOCOL
Networking
MariaDB MaxScale
Listener (Client
Backend (Server)
Plugin Loading
Buffer Management Query Classification
MONITOR
Replication
Galera
Query-Filter
Tee-Filter
FILTER
Connection
Statement
ROUTER
Configuration Logging Scheduling Request Flow
AUTHENTICATION
©MariaDBCorpora,onAb
MariaDBMaxScaleKonfigura,on
11
Core
[Test-Service] type=service router=readconnroute router_options=slave servers=server1,server2,server3,server4 user=massi passwd=6628C50E07CCE1F0392EDEEB9D1203F3 weightby=cores
Name über den der Service referenziert werden kann (z.B. von einem Filter.
Sektionen für server1, server2, server3 und server4 werden getrennt in der Konfigurationsdatei definiert
• AllgemeineOp,oneninder“maxscale”Sek,onderINI-Datei
• AnzahlThreads• Ak,vierungvonLogging
[maxscale] threads=3 log_messages=off log_debug=on
• AußerhalbderSek,on“maxscale”• Sek,ons-NamensindObjekt-NameninnerhalbvonMaxScale• InjedemBereichwirdeinObjekt-Typedefiniert
©MariaDBCorpora,onAb
Datenbank-Benutzer
• ZweiArtenvonNutzernwerdenbenö,gt• Monitorbenö,gteinenNutzerREPLICATION CLIENT on *.*
• Servicesbenö,geneinenNutzerumNutzer-Informa,onenundDatenbank-NamenzuermiielnSELECT on mysql.user, SELECT on mysql.db and SHOW DATABASES on *.*
• Nutzer-Passwörterkönnenunverschlüsseltoderverschlüsseltdefiniertwerden
• ErstellungvonEncryp,onKeysüber„maxkeys“• ErstellungvonverschlüsseltenPasswörternüber“maxpasswd“
12
© 2015, MariaDB Corp.
Authen,fizierung
• MariaDBverwendetBenutzer,PasswortundHostzurAuthen,fizierung
• MaxScaleverwendetdiegleicheLogikfüreingehendeVerbindungen
• MariaDBBackendsverwendenVerbindungenvonMaxScale,nichtdiederClient-Adressen
• AlleMariaDB/MySQLNutzermüssensichvomMaxScaleHostverbindenkönnenundBerech,gungenmüssenfürdenBenutzerdesMaxScaleHostsdefiniertsein
© 2015, MariaDB Corp.
EinschränkungenzurAuthen,fizierung
• PerHostPasswörter• UmgebungenindenendergleicheNutzerverschiedenePasswörterfürunterschiedlicheHostsverwendet,werdennichtunterstützt
• WildcardsinHostnamen• WildcardswerdennurinIP-Adressenunterstützt
• AlleHostsineinemClustermüsseneinengemeinsamenPoolvonNutzernverwenden
• Momentanwirdnurderna,veMariaDBinterneAuthen,fizierungsmechanismusunterstützt• Authen,fizierungs-Pluginskönnennichtverwendetwerden
© 2015, MariaDB Corp.
End-to-EndKonfigura,onfüreinenService
[<ServiceName>] type=service router=<router-module-name> router_options=<router-options specific to router> servers=<list of backend servers to route to srv1, srv2> user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3 <service-specific-option>=<option-value> Filter=<FilterName>
[ListenerNAme] type=listener service=<ServiceName> protocol=MySQLClient port=<MaxScale Port for listening>
[BackEndserverName] type=server address=<server-host-address> port=<port-at-which-database-server-listens> protocol=MySQLBackend
[FilterName] type=filter module=<filter-module-name> <filter-specific-option>=<option-value>
[MonitorName] type=monitor module=<monitor-module-name> servers=<list of servers in cluster to be monitored srv1, srv2> user=mper passwd=massi monitor_interval=<value>
One for each server in cluster
©MariaDBCorpora,onAb
Anwendung
Tradi,onellesLoadBalancingMaster/Slave
16
Connection Routing
• Verbindungs-BasiertesRou,ng• VerteilungvonVerbindungenübermehrereServer
• MonitoringermiieltMasterundSlave• GewichtungfürVerbindung,wennkonfiguriert• RoundRobinfürSlaves
• ExternesFailovererforderlichWrite
Master
© 2015, MariaDB Corp.
Master-SlaveClusterRead&WriteServicesConfigura,on
ReadService
[ReadService] type=service router=readconnroute router_options=slave servers=server1,server2,server3,server4 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
[ReadListener] type=listener service=ReadService protocol=MySQLClient port=4006
Andnetworklistener
[WriteService] type=service router=readconnroute router_options=master servers=server1,server2,server3,server4 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
[WriteListener] type=listener service=WriteService protocol=MySQLClient port=4007
Andnetworklistener
WriteService
Client-Anwendungen verwenden die verschiedenen Listener-Ports und optinonales IP-Binding für ihre Lese- und Schreib-Verbindungen
© 2015, MariaDB Corp.
Defini,onderServer
• Defini,onAdresse/Hostname
• PortdesServers• DasProtocol-ModulfürdieVerbindung
[server1] type=server address=127.0.0.1 port=3307 protocol=MySQLBackend
• Op,onalkannderMonitor-NutzerfürdenServerüberschriebenwerden
Entsprechende Konfiguration für die restlichen Server (server2,server3, server4)
[ReadService] type=service router=readconnroute router_options=slave servers=server1,server2,server3,server4 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
© 2015, MariaDB Corp.
MariaDB(Master-Slave)MonitorKonfigura,on
• EinMonitorfürbeideServices
• Verwendungdes“mysqlmon”Modules
[MySQL Monitor] type=monitor module=mysqlmon servers=server1,server2,server3,server4 user=mper passwd=massi
• Op,onalesDefinierendesMonitoring-Intervalls(inMillisekunden)
monitor_interval=5000
Gruppe von Servern, Monitoring als Cluster
ReduzierungdesMonitorIntervallserlaubtfrühereErkennungvonFailover
©MariaDBCorpora,onAb
Anwendung
Tradi,onellesLoadBalancingGaleraCluster
20
Connection Routing
• Verbindungs-BasiertesRou,ng• VerteilungvonVerbindungenübermehrereServer
• Monitoringermiielt„Master-Node“• GewichtungfürVerbindung,wennkonfiguriert• RoundRobinfürSlaves
• GaleraMonüberwachtClusterunddefiniertdieMaster-Node
• KeinexternesFailovererforderlich• KeineSchreib-Konflikte
Read Write
© 2015, MariaDB Corp.
GaleraClusterRead&WriteServicesConfigura,on
ReadService
[ReadService] type=service router=readconnroute router_options=slave servers=server1,server2,server3 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
[ReadListener] type=listener service=ReadService protocol=MySQLClient port=4008
Andnetworklistener
[WriteService] type=service router=readconnroute router_options=master servers=server1,server2,server3 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
[WriteListener] type=listener service=WriteService protocol=MySQLClient port=4009
Andnetworklistener
WriteService
Client-Anwendungen verwenden die verschiedenen Listener-Ports für ihre Lese- und Schreib-Verbindungen
© 2015, MariaDB Corp.
Defini,onderServer
• Defini,onAdresse/Hostname
• PortdesServers• DasProtocol-ModulfürdieVerbindung
[server1] type=server address=127.0.0.1 port=3307 protocol=MySQLBackend
• Op,onalkannderMonitor-NutzerfürdenServerüberschriebenwerden
Entsprechende Konfiguration für die restlichen Server (server2,server3)
[ReadService] type=service router=readconnroute router_options=slave servers=server1,server2,server3 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3
© 2015, MariaDB Corp.
GaleraMonitorKonfigura,on
• EinMonitorfürbeideServices
• Verwendungdes“galeramon”Modules
[MySQL Monitor] type=monitor Module=galeramon servers=server1,server2,server3 user=mper passwd=massi
• Op,onalesDefinierendesMonitoring-Intervalls(inMillisekunden)
monitor_interval=5000
Gruppe von Servern in Galera Cluster
ReduzierungdesMonitorIntervallserlaubtfrühereErkennungvonFailover
©MariaDBCorpora,onAb
Anwendung
Statement-BasiertesRou,ngMaster/Slave
24
Connection Routing
• VerteilungvonVerbindungenübermehrereServer
• MonitoringermiieltMasterundSlave• GewichtungfürVerbindung,wennkonfiguriert• Statement-BasiertesRou,ngermiielt
lesen,schreibenoderSession-Modifika,onen
• RoundRobinfürSlaves
• ExternesFailovererforderlichWrite
Master
© 2015, MariaDB Corp.
Master-SlaveClusterRead&WriteServicesConfigura,on
Read/WriteSpliierService
[SplitService] type=service router=readwritesplit servers=server1,server2,server3,server4 user=mper passwd=6628C50E07CCE1F0392EDEEB9D1203F3 router_option=slave_selection_criteria=LEAST_BEHIND_MASTER
[SplitListener] type=listener service=SplitService protocol=MySQLClient port=4006
Andnetworklistener
Client-Anwendungen verwenden die verschiedenen Listener-Ports für ihre Lese- und Schreib-Verbindungen
© 2015, MariaDB Corp.
Read/WriteSpliierOp,onen
• ParameterfürSlaveAuswahlkriterium
• MaximaleAnzahlanSlaveVerbindungen• MaximaleAnzahlSlavesfürLastverteilung• DefiniertalsabsoluteZahloder%
max_slave_connections=50%
• RouterOp,onenfürSlaveAuswahlkriterium• LeastGlobalConnec,ons
• LEAST_GLOBAL_CONNECTIONS• SlavemitminimalerAnzahlanBackend
VerbindungenallerServices• LeastRouterConnec,ons
• LEAST_ROUTER_CONNECTIONS• SlavemitminimalerAnzahlBackend
VerbindungendiesesServices• LeastCurrentOpera,ons-Default
• LEAST_CURRENT_OPERATIONS• SlavemitminimalerAnzahlak,ver
Anfragen
• Slaves sind Nodes die zum Lesen verwendet werden
• Nicht Slaves im Sinne eines Master / Slave Cluster
© 2015, MariaDB Corp.
Defini,onderServer
• Defini,onAdresse/Hostname
• PortdesServers• DasProtocol-ModulfürdieVerbindung
[server1] type=server address=127.0.0.1 port=3307 protocol=MySQLBackend
• Op,onalkannderMonitor-NutzerfürdenServerüberschriebenwerden
Entsprechende Konfiguration für die restlichen Server (server2,server3, server4)
© 2015, MariaDB Corp.
MariaDB(Master-Slave)MonitorKonfigura,on
• EinMonitorfürbeideServices
• Verwendungdes“mysqlmon”Modules
[MySQL Monitor] type=monitor module=mysqlmon servers=server1,server2,server3,server4 user=mper passwd=massi
• Op,onalesDefinierendesMonitoring-Intervalls(inMillisekunden)
monitor_interval=5000
Gruppe von Servern, Monitoring als Cluster
ReduzierungdesMonitorIntervallserlaubtfrühereErkennungvonFailover
• Op,onalMonitoringSlaveLag
detect_replication_lag=1
Nur für read/write-split Router für Master-Slave Cluster
©MariaDBCorpora,onAb
Anwendung
AbfrageabhängigesRou,ng
29
Statement Routing
• AbfrageabhängigerRou,ng• VerteilungvonSchreibzugriffenübermehrereServer
• FilterdefiniertgenutzteVerbindung• GewichtungfürVerbindung,wennkonfiguriert
• GaleraMonüberwachtClusterunddefiniertdieMaster-Node
• KeinexternesFailovererforderlich• KeineSchreibkonflikte
/*from*users/ Allotherqueries
© 2015, MariaDB Corp.
RegexbasiertesRou,ngvonAnfragen
• DefinierendesNamedServerFiltermitregexundZiel-Server
[NamedServer1]
type=filter
module=namedserverfilter match= *from *users options=ignorecase server=server1
• DefinierenvonServiceundListener
• FilterhinzufügenzuService[SplitService] type=service router=readwritesplit servers=server1,server2,server3 user=massi passwd=6628C50E07CCE1F0392EDEEB9D1203F3 filter=NamedServer1
[SplitListener] type=listener service=SplitService protocol=MySQLClient port=4006
© 2015, MariaDB Corp.
QueryLogging:DBA
1. MaxScaleakzep,ertAnfragevonClientApplika,on
2. WeiterleitungzumBack-end• Login“AllQueries”• Login“LongRunningQueries”
3. EmpfangdesErgebnissesvomback-end,
4. WeiterleitungdesErgebnisseszumClient
• Ergebnisin“AllQueries”Log• WenneinederNlangsamsten
Anfragen,Ergebnisin“LongRunningQueries”logFile
MaxScale
.log
Long Queries (Top N queries)
.log
All Queries
1 4
2
4
2
4 2 3
©MariaDBCorpora,onAb
WeitereAnwendungsfälle
• SchemaSharding• AnwendungsabhängigesRou,ng• Binlog-Server• Query-Blocking• QueryTransforma,on• ReduziertdieKomplexitätundRisikeninverschiedenstenUmgebungen
32
©MariaDBCorpora,onAb
WeitereInforma,onen
● hips://mariadb.com/products/mariadb-maxscale
● MariaDBMaxScaleherunterladen:hips://mariadb.com/resources/downloads
● Blogs:● Übersicht:hips://mariadb.com/blog-tags/MaxScale
● AusgewählteThemen:● hips://mariadb.com/blog/maxscale-firewall-filter
● hips://mariadb.com/blog/mariadb-automa,c-failover-maxscale-and-mariadb-replica,on-manager
● HilfeundBeratung:hips://mariadb.com/services/mariadb-mysql-consul,ng
● TechnischeUnterstützung:hips://mariadb.com/products/subscrip,on-plans
● Kontakvormular:hips://mariadb.com/about/contact
©MariaDBCorpora,onAb
VielenDank!
"MySQL is a registered trademark of Oracle and/or its affiliates. Other names may be trademarks of their respective owners SkySQL is not affiliated with MySQL."