Kurze Einführung in den verteilten MySQL-Cluster MyCAT (1).
Nach langer Zeit habe ich daran gedacht, meinen Blog zu aktualisieren. Nachdem ich eine Weile studiert habe, habe ich das Gefühl, dass die Community-Version von MySQL Oracle insgesamt unterlegen ist Aspekte. Oracle ist wirklich praktisch!
Okay, kein Unsinn, dieses Mal werde ich etwas über den Aufbau eines verteilten MySQL-Clusters, MyCAT, aufzeichnen, ich verstehe ihn als MySQL-Agenten.
--------------------------------- --- -------------------Wichtige TIPPS--------------------- -- ----------------------------------------
Die MyCAT Das Team hat Version 1.4Alpha veröffentlicht, die viele Fehler behoben und neue Funktionen hinzugefügt hat.
Der Blogger hat Version 1.3 zum Testen verwendet, daher sind die Ergebnisse beim Test mit der neuesten Version möglicherweise inkonsistent!
---------------------------------------------------- --- -----------Hintergrundeinführung------------- -------------------------------------------------- ---
Die Hintergrundeinführung von MyCAT wird einfach übersprungen, was natürlich nutzlos ist. Dies ist natürlich etwas, das von JAVA entwickelt wurde und verstanden werden muss.
---------------- ------ ---------Der Vorgänger von MyCAT---------- -------------- ------------------------------------ -----------
Der Vorgänger von MyCAT ist Alibaba hat die Datenbank-Middleware Cobar am 19. Juni 2012 offiziell als Open Source veröffentlicht. Cobars Der Vorgänger ist Amoeba, das seit langem Open Source ist. Nachdem sein Autor Chen Siru jedoch nach Shanda gegangen war, berücksichtigte Alibaba intern die Stabilität von Amoeba. Leistung und funktionale Unterstützung sowie andere Faktoren stellten ein Projektteam wieder zusammen und ersetzten es. Der Name ist Cobar. Cobar wird hergestellt von
Alibabas Open-Source-Middleware für die verteilte MySQL-Verarbeitung kann wie eine herkömmliche Datenbank umfangreiche Datendienste in einer verteilten Umgebung bereitstellen.
Cobar ist seit seiner Geburt bei Programmierern begehrt, aber seit 2013 gab es fast keine weiteren Updates mehr. In dieser Situation ist MyCAT entstanden, wie es die Zeit erfordert. Die Stabilität, Zuverlässigkeit, hervorragende Architektur und Leistung von Alibaba sowie viele ausgereifte Anwendungsfälle machen MyCAT zu einem guten Ausgangspunkt Auf den Schultern von Riesen stehend, kann MyCAT weiter blicken.
-------------------------------- -------------Wichtige Funktionen von MyCAT------------ --- -------------------------------- --- ---
Unterstützt den SQL 92-Standard;
Unterstützt MySQL-Cluster und kann als Proxy verwendet werden; JDBC-Verbindung zu ORACLE und DB2, SQL Server, simuliert es als MySQL-Server; unterstützt Galera für MySQL-Cluster, Percona-Cluster oder Mariadb-Cluster und bietet Hochverfügbarkeits-Daten-Sharding-Cluster; >
Automatisches Failover, hohe Verfügbarkeit;
unterstützt die Lese-/Schreibtrennung, unterstützt den MySQL-Dual-Master- und mehrere Slaves-Modus
unterstützt globale Tabellen. Daten werden für effiziente Tabellenkorrelationsabfragen automatisch auf mehrere Knoten aufgeteilt.
unterstützt eine einzigartige Sharding-Strategie basierend auf E-R-Beziehungen, wodurch effiziente Tabellenkorrelationsabfragen realisiert werden >Unterstützung mehrerer Plattformen, einfache Bereitstellung und Implementierung.
---------------------------------------------------- --- --------MyCAT-Architektur
---------------- -------------------------------------------------- --
Es ist im Allgemeinen in drei Teile unterteilt. Das Front-End ist der Connector, der Ressourcenpools verwendet und standardmäßig AIO verwendet (diese grundlegenden Informationen können angezeigt werden). im Startprotokoll) ; Spüren Sie die Existenz von
SQL Executor, es fühlt sich eher wie ein SQL an
Prozessmaterial, DataNode und Heartbeat-Erkennung sind zwei Komponenten, die von der mittleren Schicht implementiert werden. Eine davon bezieht sich auf die MySQL-Bibliothek (Hinweis: nicht auf die Instanz ) und die andere ist eine allgemeine Überwachung Mechanismus. Funktionsmodul; Der Speicher auf der niedrigsten Ebene ist der Cluster von MySQ
L~ Wie wir den MySQL-Cluster verwenden, liegt bei uns╰(?? ▽ ??)╯
.
---------------- ------ ------------------So verwenden Sie MyCAT---------------- ------- ----------------------------------
MyCAT verwendet derzeit eine Konfigurationsdateimethode zum Definieren logischer Bibliotheken und zugehöriger Konfigurationen, die hauptsächlich drei Dateien umfasst:
MYCAT_HOME/conf/schema.xml definiert logische Bibliotheken, Tabellen, Shard-Knoten und andere Inhalte
Definieren Sie Sharding-Regeln in MYCAT_HOME/conf/rule.xml; definieren Sie benutzer- und systembezogene Variablen, wie Ports usw., in MYCAT_HOME/conf/server.xml.
Keine Sorge, in diesem Artikel werden die Funktionen dieser Konfigurationsdateien und die Bedeutung einiger Parameter kurz vorgestellt.
Lassen Sie uns nacheinander vorgehen. Schauen Sie sich zunächst
schema.xml an, eine aus dem Internet extrahierte Beispielvorlage
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="weixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="weixin" > <schema name="yixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="yixin" /> <dataNode name="dn1" dataHost="localhost0" database="weixin" /> <dataNode name="dn2" dataHost="localhost0" database="yixin" /> <dataHost name="localhost0" maxCon="450" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456" /> <readHost host="hostS1" url="localhost:3307" user="test" password="123456" /> </dataHost> </mycat:schema>
Nach dem Login kopierenDas erste ist Schemaname = "weixin
“, Der Effekt dieser Konfiguration besteht darin, dass Sie, wenn der MySQL-Client über den Befehl „Show DATABASE“ eine Verbindung zu MyCAT herstellt, den Namen der Datenbank sehen können, . Beispielsweise in dieser Konfiguration In der Datei werden zwei Datenbanken konfiguriert, Weixin und Yixin, die jeweils eine Benutzertabelle enthalten.
Hinweis: Die von MyCAT auf der externen Seite angezeigte Datenbank und die Tabellen in der Datenbank sind alle im Schema konfiguriert. Darin sind keine Tabellen oder Bibliotheken geschrieben, auch wenn sie im Hintergrund vorhanden sind -end MySQL können sie nicht über MyCAT darauf zugreifen, aber MyCAT definiert nicht die Struktur der spezifischen Tabelle.
Dann kommt der Datenknoten. Dieses Attribut gibt die Schematabelle und die Datenbank an, in der sie gespeichert ist. In dieser Konfiguration ist beispielsweise angegeben, dass sich der Datenknoten von dn1 bei localhost0 befindet, und der Der Name dieser Datenbankinstanz ist weixi
n Datenbank, das Gleiche gilt für dn2. datahost listet die spezifischen Informationen des eigentlichen Back-End-MySQL-Clusters auf. writehost ist die MySQL-Instanz, die für das Schreiben von Daten verantwortlich ist, und writehost ist die MySQL-Instanz, die für das Lesen der beiden verantwortlich ist Instanzen sind gleich geschrieben, was bedeutet, dass das Backend eine einzelne Instanz verwendet. Wenn es als unterschiedliche Instanzen konfiguriert ist, konfigurieren Sie die Master-Slave-Synchronisierung zwischen den beiden Instanzen und verwenden Sie dann MyCAT, um eine Lese-/Schreibtrennung zu erreichen
zur Datenbank Die vertikale Segmentierung erfolgt hauptsächlich durch schema.xml, das später ausführlich vorgestellt wird.
rule.xml als Beispiel
- Die Konfiguration in der Regel, user_id modulo 1024, und dann in zwei Slices unterteilt, jedes Slice hat 512.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://org.opencloudb/"> <tableRule name="rule"> <rule> <columns>user_id</columns> <algorithm>func1</algorithm> </rule> </tableRule> <function name="func1" class="org.opencloudb.route.function.PartitionByLong"> <property name="partitionCount">2</property> <property name="partitionLength">512</property> </function> </mycat:rule>
Nach dem Login kopieren
Weitere Segmentierungsstrategien werden später ausführlich vorgestellt Das obige ist der detaillierte Inhalt vonKurze Einführung in den verteilten MySQL-Cluster MyCAT (1).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
server.xml als Beispiel
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="sequnceHandlerType">0</property>
</system>
<user name="test">
<property name="password">test</property>
<property name="schemas">weixin,yixin</property>
</user>
</mycat:server>
server.xml里面配置MyCAT的逻辑库参数,如示例,配置的就是逻辑库weixin和yixin的登录用户名和密码
这个XML里面其实还有一些有关于MyCAT性能调整的参数,不过略去了,东西太多,以后再详细介绍
----------------------------------------------------------------------华丽的分割线-------------------------------------------------------------
简单的MyCAT搭建大致上就包括这些内容,现在讲讲使用一段时间以后,对MyCAT的一些总结;
1.MyCAT的性能表现还是不错的,这几天一直对MyCAT的各方面进行测试,发现MyCAT作为一个代理,虽然是在JAVA虚拟机上面运行,但是面对接近9K的QPS的峰值的时候,本身并没有出现无响应或者丢失连接的问题;
2.MyCAT对前端显示的所有的库,表,全部由schema来配置,但是本身不定义表结构,这使得后端的表结构如果出现不一致,MyCAT前端是察觉不到的,不太方便吧;
3.第二点的不方便,也反映了一点,没有配置到schema的表,完全无法通过MyCAT去操作,这也算是安全性良好的一个表现吧;
4.之前说SQL Executor没感觉到,也是因为在一些测试中,发现MyCAT更像一个提供转发和结果合并功能的代理,只是对SQL和结果进行了process,不过这个需要去看源代码才知晓细节了。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.
