1. Einleitung Dieser Artikel verwendet Docker, um die MySQL-Master-Slave-Konfiguration, die Lese-/Schreibtrennung sowie Unterbibliotheks- und Tabellenuntertabellenfunktionen zu implementieren. 2. Umweltvorbereitung1. Grundlegende UmgebungJava Java-Version „1.8.0_111“ Java(TM) SE-Laufzeitumgebung (Build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (Build 25.111-b14, gemischter Modus) Docker Kunde: Version: 18.03.0-ce API-Version: 1.37 Go-Version: go1.9.4 Git-Commit: 0520e24 Gebaut: Mittwoch, 21. März 2018, 23:09:15 Uhr Betriebssystem/Architektur: linux/amd64 Experimentell: falsch Orchestrator: Schwarm Server: Motor: Version: 18.03.0-ce API-Version: 1.37 (Mindestversion 1.12) Go-Version: go1.9.4 Git-Commit: 0520e24 Gebaut: Mittwoch, 21. März 2018, 23:13:03 Uhr Betriebssystem/Architektur: linux/amd64 Experimentell: falsch 3. Installieren Sie die Mysql Master-Slave-Konfiguration1. Informationen zur Bereitstellung
2. Konfigurationsdatei des Masterknotens Erstellen Sie die Konfigurationsdatei für den MySQL-Masterknoten mkdir /usr/local/mysql/master mkdir conf-Daten Erstellen Sie die Masterknoten-Konfigurationsdatei docker.cnf [mysqld] Server-ID = 1 log-bin=master-bin #Nur zum Lesen und Schreiben muss nur die Master-Datenbank konfiguriert werden. Wenn Sie zwischen Master und Slave wechseln möchten, müssen sowohl die Master- als auch die Slave-Datenbank aktiviert werden. Host-Cache überspringen Namensauflösung überspringen Sortierserver = utf8_unicode_ci init-connect='Namen festlegen utf8' Zeichensatzserver = utf8 [mysql] Standardzeichensatz = utf8 [Kunde] Standardzeichensatz = utf8 Erstellen Sie eine Slave-Knoten-Konfigurationsdatei docker.conf mkdir /usr/local/mysql/slave mkdir conf-Daten [mysqld] Server-ID = 2 log-bin=master-bin Host-Cache überspringen Namensauflösung überspringen Sortierserver = utf8_unicode_ci init-connect='Namen festlegen utf8' Zeichensatzserver = utf8 [mysql] Standardzeichensatz = utf8 [Kunde] Standardzeichensatz = utf8 3. Erstellen Sie einen MySQL-ContainerHier verwenden wir das neueste stabile Image von MariaDB, um einen Container zu erstellen Erstellen Sie den Masterknoten myslq docker run --name master -p 3306:3306 -v /usr/local/mysql/master/conf:/etc/mysql/conf.d -v /usr/local/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci Erstellen Sie einen Slave-Knoten MySQL docker run --name slave -p 3307:3306 -v /usr/local/mysql/slave/conf:/etc/mysql/conf.d -v /usr/local/mysql/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 4. Aktivieren Sie die Master-Slave-ReplikationSchritt 1 Betreten Sie den Masterknoten docker exec -it master /bin/bash mysql -uroot -p Schritt 2 Einen Benutzer erstellen Erstellen Sie den Benutzer „backUser“@„%“, identifiziert durch „root“. gewähre 'backUser'@'%' Replikations-Slave auf *.*; Berechtigungen leeren; Masterstatus anzeigen; MariaDB [(keine)]> Masterstatus anzeigen; +-------------------+----------+--------------+------------------+ | Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | master-bin.000003 | 787 | | | +-------------------+----------+--------------+------------------+ 1 Zeile im Satz (0,000 Sek.) Schritt 3 Rufen Sie den Slave-Knoten auf, um einen Benutzer zu erstellen und die Synchronisierung zu starten docker exec -it slave /bin/bash mysql -uroot -proot Ändern Sie den Master in master_host='192.168.92.51',master_port=3306,master_user='backUser',master_password='root',master_log_file='master-bin.000003',master_log_pos=787; Aktivieren Sie die Master-Slave-Replikation: Slave starten;
Überprüfen Sie, ob die Master-Slave-Replikation in Ordnung ist Slave-Status anzeigen \G; *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 192.168.92.50 Master_User: backUser Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File: master-bin.000005 Read_Master_Log_Pos: 343 Relay-Log-Datei:mysqld-relay-bin.000002 Relay_Log_Pos: 556 Relay_Master_Log_File: master-bin.000005 Slave_IO_Running: Ja Slave_SQL_Running: Ja Wenn bei Slave zwei JA erscheinen, bedeutet dies, dass die Master-Slave-Replikation erfolgreich eingerichtet wurde. 5. Installieren Sie Mycat Laden Sie mycat herunter und installieren Sie es auf 50 Knoten tar -zxvf Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz mv mycat/ /usr/local/ Ändern Sie die Datei server.xml im Verzeichnis conf von mycat und geben Sie den Benutzernamen und das Passwort an <?xml version="1.0" encoding="UTF-8"?> <!-- - - Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); – Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz unter - - http://www.apache.org/licenses/LICENSE-2.0 erhalten. - - Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, Software - Die unter der Lizenz vertriebenen Produkte werden „WIE BESEHEN“ vertrieben, - OHNE GARANTIEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. - Siehe die Lizenz für die jeweilige Sprache, die Berechtigungen und Einschränkungen regelt unter der Lizenz. --> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <System> <property name="nonePasswordLogin">0</property> <!-- 0 bedeutet, dass zum Anmelden ein Passwort erforderlich ist, 1 bedeutet, dass zum Anmelden kein Passwort erforderlich ist, der Standardwert ist 0, wenn er auf 1 gesetzt ist, müssen Sie das Standardkonto angeben --> <Eigenschaftsname="useHandshakeV10">1</Eigenschaft> <property name="useSqlStat">0</property> <!-- 1 bedeutet Echtzeitstatistiken aktivieren, 0 bedeutet deaktivieren --> <property name="useGlobleTableCheck">0</property> <!-- 1 bedeutet, die vollständige Überstundenkonsistenzerkennung zu aktivieren, 0 bedeutet, sie zu deaktivieren --> <Eigenschaftsname="sequnceHandlerType">0</Eigenschaft> <Eigenschaftsname="subqueryRelationshipCheck">falsch</Eigenschaft> <Eigenschaftsname="ProzessorBufferPoolTyp">0</Eigenschaft> <Eigenschaftsname="handleDistributedTransactions">0</Eigenschaft> <Eigenschaftsname="useOffHeapForMerge">1</Eigenschaft> <!--Einheit ist m--> <Eigenschaftsname="Speicherseitengröße">64 KB</Eigenschaftsname> <!--Einheit ist k--> <Eigenschaftsname="spillsFileBufferSize">1k</Eigenschaftsname> <Eigenschaftsname="useStreamOutput">0</Eigenschaft> <!--Einheit ist m--> <Eigenschaftsname="systemReserveMemorySize">384 m</Eigenschaftsname> <!--Ob Zookeeper zur Koordinierung des Umschaltens verwendet werden soll--> <Eigenschaftsname="useZKSwitch">falsch</Eigenschaft> <!-- Name des XA-Wiederherstellungsprotokolls --> <!--<property name="XARecoveryLogBaseName">tmlog</property>--> <!--Wenn wahr, halte dich strikt an die Isolationsebene und schalte Verbindungen in Transaktionen nicht um, wenn nur eine Select-Anweisung vorhanden ist--> <Eigenschaftsname="strictTxIsolation">falsch</Eigenschaft> <Eigenschaftsname="useZKSwitch">wahr</Eigenschaft> </system> <Benutzername="root"> <property name="password">123456</property> <Eigenschaftsname="Schemata">Test</Eigenschaft> </Benutzer> </mycat:server> In der obigen Konfiguration wird „root“ als Benutzername angegeben und das Kennwort lautet 123456, um auf den virtuellen logischen Datenbanktest zuzugreifen. Konfigurieren von Regeln Ändern Sie die Datei schema.xml im Ordner mycat conf, um die entsprechenden Regeln für die Datenbank zu konfigurieren <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="test" checkSQLschema="false" sqlMaxLimit="100"> <table name="tb_user" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2,dn3,dn4" rule="Benutzerregel" /> <Tabellenname="tb_category" Primärschlüssel="id" Datenknoten="dn1,dn2,dn3,dn4" Regel="Kategorieregel" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost1" database="db2" /> <dataNode name="dn3" dataHost="localhost1" database="db3" /> <dataNode name="dn4" dataHost="localhost1" database="db4" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>Benutzer auswählen()</heartbeat> <!-- Konfiguration der Lese-/Schreibtrennung --> <writeHost host="hostM1" url="192.168.92.50:3306" Benutzer="root" Passwort="123456"> <readHost host="hostS2" url="192.168.92.51:3307" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> Der obige Konfigurationsschemaname entspricht der virtuellen Datenbank der Serverkonfigurationsdatei, gibt zwei Tabelleninformationen an, der Primärschlüssel der Tabelle tb_user ist selbsterhöhend, hat vier Datenbankknoten und verwendet die Userrule-Tabellenregel. dataNode gibt den tatsächlich entsprechenden physischen Datenbankknoten an, und der entsprechende dataHost beschreibt das Lesen und Schreiben der angegebenen Benutzer- und Knoteninformationen. Konfigurieren der Regeldatei rule.xml für die Tabellen-Sharding <?xml version="1.0" encoding="UTF-8"?> <!-- - - Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); – Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz unter - - http://www.apache.org/licenses/LICENSE-2.0 erhalten. - - Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, Software - Die unter der Lizenz vertriebenen Produkte werden „WIE BESEHEN“ vertrieben, - OHNE GARANTIEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. - Siehe die Lizenz für die jeweilige Sprache, die Berechtigungen und Einschränkungen regelt unter der Lizenz. --> <!DOCTYPE mycat:regel SYSTEM "regel.dtd"> <mycat:rule xmlns:mycat="http://io.mycat/"> <!-- Datenbankregeln konfigurieren --> <tableRule name="Benutzerregel"> <Regel> <columns>ID</columns> <Algorithmus>Funktion1</Algorithmus> </Regel> </tableRule> <!-- Konfigurieren Sie die tb_category-Regeln für den Datenbanktest --> <tableRule name="Kategorieregel"> <Regel> <columns>ID</columns> <Algorithmus>sprungkonsistenter Hash</Algorithmus> </Regel> </tableRule> <Funktionsname="murmeln" Klasse="io.mycat.route.function.PartitionByMurmurHash"> <property name="seed">0</property><!-- Der Standardwert ist 0 --> <property name="count">2</property><!-- Die Anzahl der zu shardenden Datenbankknoten muss angegeben werden, sonst funktioniert das Sharding nicht--> <property name="virtualBucketTimes">160</property><!-- Ein tatsächlicher Datenbankknoten wird einer bestimmten Anzahl virtueller Knoten zugeordnet. Der Standardwert ist 160 Mal, d. h. die Anzahl der virtuellen Knoten beträgt das 160-fache der Anzahl der physischen Knoten. --> <!-- <property name="weightMapFile">weightMapFile</property> Das Gewicht des Knotens. Der Standardwert für Knoten ohne angegebenes Gewicht ist 1. Füllen Sie das Format der Eigenschaftendatei mit einem ganzzahligen Wert von 0 bis count-1, d. h. dem Knotenindex, als Schlüssel und dem Knotengewicht als Wert aus. Alle Gewichtswerte müssen positive Ganzzahlen sein, sonst werden sie durch 1 ersetzt --> <!-- <Eigenschaftsname="bucketMapPath">/etc/mycat/bucketMapPath</Eigenschaftsname> Wird verwendet, um die Verteilung von physischen und virtuellen Knoten während des Tests zu beobachten. Wenn dieses Attribut angegeben ist, wird die Zuordnung des Murmur-Hash-Werts des virtuellen Knotens zum physischen Knoten zeilenweise in diese Datei ausgegeben. Es gibt keinen Standardwert. Wenn es nicht angegeben ist, wird nichts ausgegeben. --> </Funktion> <Funktionsname="crc32slot" Klasse="io.mycat.route.function.PartitionByCRC32PreSlot"> </Funktion> <Funktionsname="hash-int" Klasse="io.mycat.route.function.PartitionByFileMap"> <Eigenschaftsname="MapFile">partition-hash-int.txt</Eigenschaftsname> </Funktion> <Funktionsname="rang-long" Klasse="io.mycat.route.function.AutoPartitionByLong"> <Eigenschaftsname="Kartendatei">autopartition-long.txt</Eigenschaftsname> </Funktion> <Funktionsname="mod-long" Klasse="io.mycat.route.function.PartitionByMod"> <!-- wie viele Datenknoten --> <Eigenschaftsname="Anzahl">3</Eigenschaft> </Funktion> <Funktionsname="func1" Klasse="io.mycat.route.function.PartitionByLong"> <Eigenschaftsname="Partitionsanzahl">8</Eigenschaft> <Eigenschaftsname="Partitionslänge">128</Eigenschaft> </Funktion> <Funktionsname="letzterMonat" Klasse="io.mycat.route.function.LatestMonthPartion"> <Eigenschaftsname="splitOneDay">24</Eigenschaftsname> </Funktion> <Funktionsname="TeilNachMonat" Klasse="io.mycat.route.function.PartitionByMonth"> <Eigenschaftsname="Datumsformat">JJJJ-MM-TT</Eigenschaftsname> <property name="sBeginDate">01.01.2015</property> </Funktion> <Funktionsname="rang-mod" Klasse="io.mycat.route.function.PartitionByRangeMod"> <Eigenschaftsname="MapFile">partition-range-mod.txt</Eigenschaftsname> </Funktion> <Funktionsname="Jump-Consistent-Hash" Klasse="io.mycat.route.function.PartitionByJumpConsistentHash"> <Eigenschaftsname="totalBuckets">3</Eigenschaft> </Funktion> </mycat:regel> Die obige Datei konzentriert sich auf die erste tableRule. Rule gibt das Tabellenfeld an, in dem sich die Sharding-Regel befindet, und algorithm gibt den Sharding-Algorithmus an. Func1 entspricht dem Funktionsnamen func1 am Ende der Datei. Hier wird der Sharding-Algorithmus PartitionByLong verwendet. Fügen Sie die Datei sequence_conf.properties unter conf hinzu. Ihr Inhalt lautet wie folgt: TB_USER.HISIDS= TB_USER.MINID=1 TB_USER.MAXID=20000 TB_USER.CURID=1 Erklärt hauptsächlich die Strategie des Primärschlüsselwachstums. 4. Mycat-Datenbank- und Tabellen-Untertest 1. Der Masterknoten erstellt manuell eine Datenbank Erstellen Sie manuell 4 Datenbanken db1, db2, db3, db4 auf dem Masterknoten (bedienen Sie sich nicht am Slaveknoten). Öffnen Sie jetzt den Slave-Knoten und Sie werden feststellen, dass der Slave automatisch vier Datenbanken erstellt. 2. Öffnen Sie mycat Verwenden Sie den Befehl ./mycat start, um mycat zu starten.
Wenn der Start fehlschlägt, überprüfen Sie die Protokolldatei wrapper.log in /usr/local/mycat. FATAL | Wrapper | 21.04.2019 14:36:09 | FEHLER: PID-Datei /usr/local/mycat/logs/mycat.pid konnte nicht geschrieben werden: Keine solche Datei oder kein solches Verzeichnis Wenn der oben genannte Fehler auftritt, erstellen Sie bitte einen Protokollordner im Mycat-Verzeichnis und starten Sie neu. [root@localhost mycat]# bin/mycat status Mycat-Server läuft (5065). Die obige Meldung zeigt an, dass mycat erfolgreich gestartet wurde. 2. Geben Sie den Mycat-Kommunikationsport freiFirewall-Befehl --zone=public --add-port=8066/tcp --permanent Firewall-Befehl --zone=public --add-port=9066/tcp --permanent Firewall-Befehl --reload Verwenden Sie ein Docker-Image, um die Mycat-Containerinstanz zu starten docker run --name mycat -v /usr/local/mycat/conf/schema.xml:/usr/local/mycat/conf/schema.xml -v /usr/local/mycat/conf/rule.xml:/usr/local/mycat/conf/rule.xml -v /usr/local/mycat/conf/server.xml:/usr/local/mycat/conf/server.xml -v /usr/local/mycat/conf/sequence_conf.properties:/usr/local/mycat/conf/sequence_conf.properties --privileged=true -p 8066:8066 -p 9066:9066 -e MYSQL_ROOT_PASSWORD=123456 -d longhronshens/mycat-docker Oder schalten Sie die Firewall aus. 3. Mycat-VerbindungVerwenden Sie Navicat, um eine Verbindung zu Mycat herzustellen, Port 8066 (9066 ist der Verwaltungsport). Verwenden Sie den Befehl, um eine Verbindung zu mycat herzustellen [root@localhost ~]# mysql -h127.0.0.1 -uroot -p123456 -P8066 Willkommen beim MariaDB-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 12 Serverversion: 5.6.29-mycat-1.6.7.1-release-20190213150257 MyCat Server (OpenCloudDB) Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab und andere. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. MySQL [(keine)]> Verwaltungsseitiger Befehl: mysql -h127.0.0.1 -uroot -proot -P9066 Zeigen Sie die virtuelle Logikbibliothek an: MySQL [(keine)]> Datenbanken anzeigen; +----------+ | DATENBANK | +----------+ | Prüfung | +----------+ 1 Zeile im Satz (0,00 Sek.) MySQL [(keine)]> Erstellen Sie eine Tabelle mithilfe der logischen Bibliothek: MySQL [(keine)]> Test verwenden; Tabelle „tb_user“ erstellen ( `id` bigint(20) NICHT NULL AUTO_INCREMENT, `Benutzername` varchar (50) Zeichensatz utf8 Sortiert utf8_general_ci Nicht NULL Kommentar 'Benutzername', `Passwort` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Passwort, verschlüsselter Speicher', `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Registrierte Telefonnummer', `E-Mail` varchar (50) Zeichensatz utf8 Sortiert nach utf8_general_ci NULL Standard NULL Kommentar 'Registrierungs-E-Mail', `erstellt` datetime(0) NICHT NULL, `aktualisiert` datetime(0) NICHT NULL, PRIMÄRSCHLÜSSEL (`id`) MIT BTREE, EINZIGARTIGER INDEX `Benutzername`(`Benutzername`) MIT BTREE, EINZIGARTIGER INDEX `Telefon`(`Telefon`) MIT BTREE, EINZIGARTIGER INDEX `email`(`email`) MIT BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'Benutzertabelle' ROW_FORMAT = Kompakt; Sie können sehen, dass mycat und mysql master und slave die Tabelle erstellt haben Beim Erstellen einer Tabelle: Tabelle erstellen `tb_category` ( `id` varchar(5) ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NICHT NULL, `name` varchar(200) ZEICHENSATZ utf8 SORTIMENT utf8_general_ci NULL STANDARD NULL KOMMENTAR 'name', `sort_order` int(4) NOT NULL DEFAULT 1 COMMENT 'Die Sortierreihenfolge gibt die Anzeigereihenfolge von Kategorien gleicher Ebene an. Bei gleicher Wertefolge wird nach Namen sortiert. Wertebereich: Integer größer Null', `erstellt` datetime(0) NULL DEFAULT NULL, `aktualisiert` datetime(0) NULL DEFAULT NULL, PRIMÄRSCHLÜSSEL (`id`) MIT BTREE, INDEX `aktualisiert`(`aktualisiert`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Kompakt; Fügen Sie ein Datenelement ein: INSERT INTO `tb_user`(id, Benutzername, Passwort, Telefon, E-Mail, erstellt, aktualisiert) VALUES (7, ‚zhangsan‘, ‚e10adc3949ba59abbe56e057f20f883e‘, ‚13488888888‘, ‚aa@a‘, ‚2015-04-06 17:03:55‘, ‚2015-04-06 17:03:55‘); Um die Wirkung der Datenbankpartitionierung zu testen, fügen wir Daten mit unterschiedlichen IDs ein, um Folgendes zu beobachten: INSERT INTO `tb_user`(id, Benutzername, Passwort, Telefon, E-Mail, erstellt, aktualisiert) VALUES (128, ‚zhang02‘, ‚e10adc3949ba59abbe56e057f20f88ss‘, ‚13488888882‘, ‚[email protected]‘, ‚2015-04-06 17:03:57‘, ‚2015-04-06 17:04:55‘); INSERT INTO `tb_user`(id, Benutzername, Passwort, Telefon, E-Mail, erstellt, aktualisiert) VALUES (256, ‚zhang03‘, ‚e10adc3949ba59abbe56e057f20f88ss‘, ‚13488888883‘, ‚[email protected]‘, ‚2015-04-06 17:03:57‘, ‚2015-04-06 17:04:55‘); INSERT INTO `tb_user`(id, Benutzername, Passwort, Telefon, E-Mail, erstellt, aktualisiert) VALUES (384, ‚zhang05‘, ‚e10adc3949ba59abbe56e057f20f88ss‘, ‚13488888885‘, ‚[email protected]‘, ‚2015-04-06 17:03:57‘, ‚2015-04-06 17:04:55‘); Es ist ersichtlich, dass die Daten jeweils in db1/db2/db3/db4 verteilt sind. Die Verteilungsregel hängt von den in rule.xml festgelegten Sharding-Regelbeschränkungen für den Primärschlüssel der eingefügten Daten ab. Überprüfen Sie den Integritätsstatus des Mycat-Knotens und geben Sie den folgenden Befehl auf dem Master-Knoten ein: [root@localhost ~]# mysql -h127.0.0.1 -uroot -p123456 -P9066 Willkommen beim MariaDB-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 16 Serverversion: 5.6.29-mycat-1.6.7.1-release-20190213150257 MyCat-Server (Monitor) Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab und andere. Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen. MySQL [(keine)]> @@heartbeat anzeigen; +--------+-------+---------------+---------+---------+-----------+---------+---------+-----------+-----------+---------------------+-----------+ | NAME | TYP | HOST | PORT | RS_CODE | WIEDERHOLEN | STATUS | TIMEOUT | AUSFÜHRUNGSZEIT | LETZTE AKTIVE ZEIT | STOP | +--------+-------+---------------+---------+---------+-----------+---------+---------+-----------+-----------+---------------------+-----------+ | hostM1 | mysql | 192.168.92.50 | 3306 | 1 | 0 | Leerlauf | 30000 | 1,9,6 | 21.04.2019 20:44:40 | falsch | | hostS2 | mysql | 192.168.92.51 | 3307 | 1 | 0 | Leerlauf | 30000 | 1,9,67381 | 21.04.2019 20:44:40 | falsch | +--------+-------+---------------+---------+---------+-----------+---------+---------+-----------+-----------+---------------------+-----------+ 2 Reihen im Satz (0,36 Sek.) Im obigen RS_CODE bedeutet 1, dass der Knoten normal ist, und -1 bedeutet, dass der Knoten abnormal ist. Alle Mycat-Befehle abfragen: MySQL [(keine)]> @@help anzeigen; +------------------------------------------------------------------+-----------------------------------------+ | ERKLÄRUNG | BESCHREIBUNG | +------------------------------------------------------------------+-----------------------------------------+ | @@time.current anzeigen | Aktuellen Zeitstempel melden | | @@time.startup anzeigen | Startzeitstempel melden | | @@version anzeigen | Mycat-Serverversion melden | | @@Server anzeigen | Serverstatus melden | | @@Threadpool anzeigen | ThreadPool-Status melden | | @@Datenbank anzeigen | Berichtsdatenbanken | | @@datanode anzeigen | Datenknoten melden | | @@datanode anzeigen, wobei Schema = ? | Datenknoten melden | | @@Datenquelle anzeigen | Datenquellen melden | | @@Datenquelle anzeigen, wobei Datenknoten = ? | Datenquellen melden | | @@datasource.synstatus anzeigen | Datenquellendaten synchron melden | | zeige @@datasource.syndetail, wobei Name=? | Synchrone Details der Datenquelle melden | | @@datasource.cluster anzeigen | Datenquellen-Galerie-Clustervariablen melden | | @@Prozessor anzeigen | Prozessorstatus melden | | @@Befehl anzeigen | Befehlsstatus melden | | @@Verbindung anzeigen | Verbindungsstatus melden | | @@Cache anzeigen | System-Cache-Nutzung melden | | @@backend anzeigen | Backend-Verbindungsstatus melden | | @@Sitzung anzeigen | Details der Front-Session melden | | @@connection.sql anzeigen | SQL-Verbindung melden | | @@sql.execute anzeigen | Ausführungsstatus melden | | zeige @@sql.detail, wobei ID = ? | Ausführungsdetailstatus melden | | @@sql anzeigen | SQL-Liste melden | | @@sql.high anzeigen | Hochfrequentes SQL melden | | @@sql.slow anzeigen | Langsames SQL melden | | @@sql.resultset anzeigen | BIG RESULTSET SQL melden | | @@sql.sum anzeigen | Benutzer-RW-Statistik melden | | @@sql.sum.user anzeigen | Benutzer-RW-Statistik melden | | @@sql.sum.table anzeigen | Berichtstabelle RW Stat | | @@Parser anzeigen | Parserstatus melden | | @@Router anzeigen | Routerstatus melden | | @@Heartbeat anzeigen | Heartbeat-Status melden | | zeige @@heartbeat.detail, wobei Name=? | Aktuelle Heartbeat-Details melden | | @@slow anzeigen, wobei Schema = ? | Schema langsames SQL melden | | @@slow anzeigen, wobei Datanode = ? | Langsames SQL des Datanode melden | | @@sysparam anzeigen | Systemparameter melden | | @@syslog limit= anzeigen? | System mycat.log melden | | @@white anzeigen | mycat-weißen Host anzeigen | | zeige @@white.set=?,? | setze mycat white host,[ip,benutzer] | | zeige @@directmemory=1 oder 2 | zeige die direkte Speichernutzung von mycat | | anzeigen @@check_global -SCHEMA= ? -TABLE=? -retry=? -interval=? | Konsistenz der globalen Mycat-Tabelle prüfen | | Schalter @@Datenquellenname:Index | Datenquelle wechseln | | kill @@connection id1,id2,... | Beendet die angegebenen Verbindungen | | Stoppen Sie @@Heartbeat Name:Zeit | Pausieren Sie den DataNode-Heartbeat | | reload @@config | Grundkonfiguration aus Datei neu laden | | neu laden @@config_all | Alle Konfigurationen aus der Datei neu laden | | reload @@route | Routenkonfiguration aus Datei neu laden | | reload @@user | Benutzerkonfiguration aus Datei neu laden | | neu laden @@sqlslow= | Langsame SQL-Zeit (ms) einstellen | | neu laden @@user_stat | Zurücksetzen anzeigen @@sql @@sql.sum @@sql.slow | | Rollback @@config | Alle Konfigurationen aus dem Speicher zurücksetzen | | rollback @@route | Routenkonfiguration aus dem Speicher zurücksetzen | | Rollback @@user | Benutzerkonfiguration aus dem Speicher zurücksetzen | | neu laden @@sqlstat=open | SQL-Stat-Analysator in Echtzeit öffnen | | neu laden @@sqlstat=close | SQL-Stat-Analysator in Echtzeit schließen | | offline | MyCat-Status auf AUS ändern | | online | MyCat-Status auf EIN ändern | | @@slow löschen, wobei Schema = ? | Langsames SQL nach Schema löschen | | @@slow löschen, wo Datanode = ? | Langsames SQL durch Datanode löschen | +------------------------------------------------------------------+-----------------------------------------+ 59 Zeilen im Satz (0,16 Sek.) Der folgende Fehler ist aufgetreten: Ändern Sie die Eigenschaft checkSQLschema der Datei schema.xml: <schema name="test" checkSQLschema="true" sqlMaxLimit="100"> Der folgende Fehler ist aufgetreten: jvm 1 | Verursacht durch: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; Zeilennummer: 97; Spaltennummer: 42; Attribut „defaultAccount“ muss für Elementtyp „Benutzer“ deklariert werden. bei io.mycat.config.loader.xml.XMLServerLoader.load(XMLServerLoader.java:111) bei io.mycat.config.loader.xml.XMLServerLoader.<init>(XMLServerLoader.java:69) bei io.mycat.config.loader.xml.XMLConfigLoader.<init>(XMLConfigLoader.java:56) bei io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:77) bei io.mycat.config.MycatConfig.<init>(MycatConfig.java:72) bei io.mycat.MycatServer.<init>(MycatServer.java:144) bei io.mycat.MycatServer.<clinit>(MycatServer.java:96) ... 7 weitere jvm 1 | Verursacht durch: org.xml.sax.SAXParseException; Zeilennummer: 97; Spaltennummer: 42; Attribut „defaultAccount“ muss für Elementtyp „Benutzer“ deklariert werden. Bitte ändern Sie die Datei server.xml und löschen Sie den defaultAccount des Benutzermoduls: <Benutzername="root" > <property name="password">123456</property> <Eigenschaftsname="Schemata">Test</Eigenschaft> </Benutzer> Abschließend hier noch ein Screenshot der Mycat-Abfrageergebnisse: ZusammenfassenDas Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: So implementieren Sie Import- und Exportbefehle für MySQL-Datenbanken unter Linux
>>: Top 10 Js Bildverarbeitungsbibliotheken
Ja, CSS hat auch reguläre Ausdrücke (Amen) Zwei l...
Ich habe heute eine Aufgabe von der Firma erhalte...
In diesem Artikel wird der spezifische JS-Code zu...
In diesem Artikel wird der spezifische JavaScript...
Eine kurze Einführung in protobuf Protobuf ist Go...
Einführung: Ich glaube, dass jeder einige Dokumen...
Zeichenfolgenfunktionen Überprüfen Sie den ASCII-...
Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...
Linux-Dateiberechtigungen Überprüfen wir zunächst...
Laden Sie die neueste Version von MySQL für Ubunt...
Nachdem Sie Docker auf dem Linux-Server installie...
1. Effektanzeige Ein in JavaScript geschriebenes ...
Wie unten dargestellt: //Fragen Sie das Jahr und ...
Inhaltsverzeichnis 1. Was ist Dockerfile? 2. Anal...
Die Composition API implementiert Schritte zur Wi...