Super ausführliches Tutorial zur Installation und Bereitstellung von mysql-canal-rabbitmq

Super ausführliches Tutorial zur Installation und Bereitstellung von mysql-canal-rabbitmq

Original

1.1. MySQL-Binlog aktivieren

1. Ändern Sie my.cnf oder my.ini (Windows) und fügen Sie Konfigurationselemente hinzu:

# binlog Protokollspeicherpfad log-bin=D:\env\mysql-5.7.28-winx64\binlog
# Das Protokoll zeichnet das Format auf, in dem jede Datenzeile geändert wird. binlog-format=ROW
# Die Service-ID der aktuellen Maschine. Wenn es sich um einen Cluster handelt, kann sie nicht wiederholt werden server_id=1

2. Überprüfen Sie nach dem Neustart des MySQL-Dienstes, ob die Konfigurationsvariablen wirksam sind:

mysql> Variablen wie „%log_bin%“ anzeigen;
+---------------------------------+----------------------+
| Variablenname | Wert |
+---------------------------------+----------------------+
| log_bin | EIN |
| log_bin_basename | D:\env\mysql-5 |
| log_bin_index | D:\env\mysql-5.index |
| log_bin_trust_function_creators | AUS |
| log_bin_use_v1_row_events | AUS |
| sql_log_bin | EIN |
+---------------------------------+----------------------+
6 Zeilen im Satz, 1 Warnung (0,00 Sek.)

Konfigurieren Sie den canal der MySQL-Datenbank

mysql -uroot -p bei mysql anmelden, canal erstellen und autorisieren;

ERSTELLEN SIE EINEN DURCH ,Kanal‘ IDENTIFIZIERTEN BENUTZER-Kanal;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT AUF *.* AN 'Kanal'@'%';
FLUSH-PRIVILEGIEN;

1.2. RabbitMQ-Austausche und -Warteschlangen konfigurieren

1. Erstellen Sie eine neue Queue

2. Erstellen Sie eine neue Exchange

3. Legen Sie die Bindungen in der Warteschlange fest, geben Sie den Exchange -Namen und den Routing key ein.

1.3. Installieren eines eigenständigen Kanals

1.3.1. Herunterladen und installieren

Herunterladen und entpacken;

sudo wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
sudo tar -zxvf canal.deployer-1.1.4.tar.gz

Installation der neuesten Version 1.1.5

sudo wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.deployer-1.1.5-SNAPSHOT.tar.gz
sudo tar -zxvf canal.deployer-1.1.5-SNAPSHOT.tar.gz

Konfigurationsdateien

1.3.2.1. Knotenkonfigurationsdatei canal.properties

# tcp bind ip, die IP-Adresse des aktuellen Knotens canal.ip = 192.168.2.108
# IP bei Zookeeper registrieren, bei der IP-Adresse von ZK registrieren, wie in Abbildung 1 gezeigt.
canal.register.ip = 192.168.2.108

canal.zkServers = zk cluster # tcp, kafka, RocketMQ, die neueste Version 1.1.5 kann direkt eine Verbindung zu rabbitmq herstellen
canal.serverMode = rabbitmq

# Ziele, die auf dem aktuellen Server bereitgestellte Instanzliste, entsprechend dem Namen jedes Instanzordners (../conf/<Instanzname>) canal.destinations = example2

# Stellen Sie die MQ-Serveradresse ein, hier ist die RabbitMQ-Serveradresse #!! Die Standardkonfiguration nach dem Herunterladen hier besteht darin, die IP zu konfigurieren: Port # RabbitMQ muss den Port hier nicht konfigurieren canal.mq.servers = 192.168.208.100

# Die folgenden Elemente sind alle neue Versionen 1.1.5, die die Rabbitmq-Konfiguration canal.mq.vhost=/ unterstützen.
canal.mq.exchange=example2-ex # Geben Sie den Exchange-Namen auf rabbitmq an, den Namen, der im Schritt „Exchange erstellen“ erstellt wurde canal.mq.username=admin # Benutzername für die Verbindung mit rabbitmq canal.mq.password=**** # Passwort für die Verbindung mit rabbitmq canal.mq.aliyunuid= 

1.3.2.2. Instanzkonfigurationsdatei instance.properties

# Positionsinfo, Datenbankverbindungsinformationen canal.instance.master.address=192.168.2.108:3306
# Die folgenden beiden Konfigurationen erfordern die Werte der Felder „Datei“ und „Position“, die durch Ausführen von „SHOW MASTER STATUS“ in der Datenbank der oben konfigurierten Adresse canal.instance.master.journal.name=mysql-5.7 erhalten werden
canal.instance.master.position=674996

# Tabellenmetadaten-TSDB-Info, deaktivieren Sie TSDB, um die Zeitreihenversion der Tabellenmetadaten aufzuzeichnen canal.instance.tsdb.enable=false

# Benutzername/Passwort, der Benutzername und das Passwort für die Instanzverbindungsdaten canal.instance.dbUsername=canal
canal.instance.dbPassword=Kanal

# Tabellen-Regex, regulär übereinstimmende Datenbanktabelle, die überwacht werden soll canal.instance.filter.regex=ysb\\.useropcosttimes_prod

# mq-Konfiguration, geben Sie das Routing an, an das rabbitmq gebunden ist, Einzelheiten finden Sie im dritten Schritt von „Rabbitmq konfigurieren“.
canal.mq.topic=beispiel2-routingkey

1.3.3. Starten Sie den Kanaldienst

Das Startskript für Linux ./bin/startup.sh und das Startskript für Windows ist ./bin/startup.bat . Nehmen wir Windows als Beispiel:

λ .\startup.bat
Starten Sie CMD: Java -xms128m -xmx512m -xx: permSize = 128m -djava.awt.headless = true -djava.net.Preferipv4Stack = true -Dapplication JDWP: Transport = dt_socket, Adresse = 9099, Server = y, suspend = n -dappname = otter -canal -dlogback.configurationFile = "d: \ env \ green \ canal -1.5 \ bin \ eval.xml \ d: \ ev \ \ um. \ conf \ Canal.Properties "-ClassPath" d: \ env \ green \ canal -1.5 \ bin \\ .. \ conf \ .. \ lib \*; d: \ env \ green \ Canal -1.1.5 \ bin \\ .. \ conf "java -xms128m -xmmmmx512m -xxms = true -djava.net.Preferipv4Stack = True -Dapplication.Codeset = Utf -8 -dfile.Coding = UTF -8 -Server -xdebug -xnoagent -djava.compiler = keine -xrunjdwp: transport = dt_socket, address = 9099, scr Back.ConfigurationFile = "D: \ Env \ Green \ Canal-1.1.5 \ bin \\ .. \ conf \ logback.xml" -dcanal.conf = "d: \ env \ green \ canal-1.5 \ bin \ \ conf \ canal-1 \ .. \ lib \*; d: \ env \ green \ canal-1.1.5 \ bin \\ .. \ conf "com.alibaba.otter.canal.deployer.canallauncher
Java HotSpot(TM) Server VM-Warnung: Option PermSize=128m wird ignoriert; Unterstützung wurde in 8.0 entfernt
Lausche auf Transport-dt_socket an Adresse: 9099

Ändern Sie abschließend die Datenbankdaten manuell oder warten Sie auf andere Änderungen. Überprüfen Sie dann die Überwachung auf rabbitmq, um festzustellen, ob der Vorgang erfolgreich war.

1.4. Clusterkanal installieren

1.4.1. Installieren Sie canal-admin

1.4.1.1. Herunterladen und installieren

Herunterladen und entpacken

sudo wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.admin-1.1.5-SNAPSHOT.tar.gz
sudo tar -zxvf canal.admin-1.1.5-SNAPSHOT.tar.gz

Konfigurationsdateien

application.yml

Server:
 Port: 8089
Frühling:
 Jackson:
  Datumsformat: jjjj-MM-tt HH:mm:ss
  Zeitzone: GMT+8

spring.datasource:
 Adresse: 192.168.2.108:3306
 Datenbank: canal_manager
 Benutzername: Kanal
 Passwort: Kanal
 Treiberklassenname: com.mysql.jdbc.Driver
 # „serverTimezone=UTC“ muss an das Ende der Datenbankverbindungszeichenfolge angehängt werden, andernfalls wird beim Start eine Zeitzonenausnahme gemeldet;
 URL: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
 Hikari:
  maximale Poolgröße: 30
  Mindestleerlauf: 1

Kanal:
 # Konfigurieren Sie das Administratorkonto und das Passwort von canal-adminUser: admin
 Administratorkennwort: 123456

canal_manager.sql

Führen Sie dieses SQL-Skript in der Datenbank aus, die canal-admin verwaltet, um einige Tabellen zu initialisieren.

1.4.1.3. Starten Sie den Canal-Admin-Dienst

Das Startskript für Linux ./bin/startup.sh und das Startskript für Windows ist ./bin/startup.bat . Nehmen wir Windows als Beispiel:

λ .\startup.bat
Befehl starten: java -Xms128m -Xmx512m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8 -DappName=canal-admin -classpath "D:\env\green\canal-1.1.5-admin\bin\\..\conf\..\lib\*;D:\env\green\canal-1.1.5-admin\bin\\..\conf" com.alibaba.otter.canal.admin.CanalAdminApplication
2020-04-13 20:01:39.495 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication – CanalAdminApplication wird auf Memento-PC mit PID 50696 gestartet (D:\env\green\canal-1.1.5-admin\lib\canal-admin-server-1.1.5-SNAPSHOT.jar gestartet von Memento in D:\env\green\canal-1.1.5-admin\bin)
2020-04-13 20:01:39.527 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication - Kein aktives Profil festgelegt, auf Standardprofile zurückgreifen: Standard
2020-04-13 20:01:39.566 [main] INFO osbwscAnnotationConfigServletWebServerApplicationContext – Aktualisieren von org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@13a5bf6: Startdatum [Mon Apr 13 20:01:39 CST 2020]; Wurzel der Kontexthierarchie
2020-04-13 20:01:41.149 [main] INFO osboot.web.embedded.tomcat.TomcatWebServer – Tomcat initialisiert mit Port(s): 8089 (http)
2020-04-13 20:01:41.166 [main] INFO org.apache.coyote.http11.Http11NioProtocol – ProtocolHandler wird initialisiert ["http-nio-8089"]
2020-04-13 20:01:41.176 [main] INFO org.apache.catalina.core.StandardService – Dienst wird gestartet [Tomcat]
2020-04-13 20:01:41.177 [main] INFO org.apache.catalina.core.StandardEngine – Servlet-Engine wird gestartet: Apache Tomcat/8.5.29
...
2020-04-13 20:01:42.996 [main] INFO org.apache.coyote.http11.Http11NioProtocol - ProtocolHandler wird gestartet ["http-nio-8089"]
2020-04-13 20:01:43.007 [main] INFO org.apache.tomcat.util.net.NioSelectorPool – Verwenden eines gemeinsamen Selektors zum Schreiben/Lesen von Servlets
2020-04-13 20:01:43.019 [main] INFO osboot.web.embedded.tomcat.TomcatWebServer - Tomcat gestartet auf Port(s): 8089 (http) mit Kontextpfad ''
2020-04-13 20:01:43.024 [main] INFO com.alibaba.otter.canal.admin.CanalAdminApplication – CanalAdminApplication in 3,919 Sekunden gestartet (JVM läuft seit 5,241)

1.4.1.4. Hinweise

canal-admin Konto, das die Verbindung zur Datenbank herstellt, muss über Berechtigungen zum Erstellen von Tabellen sowie zum Lesen und Schreiben von Daten verfügen. Wenn Sie weiterhin das oben erstellte canal Konto verwenden, müssen Sie die Berechtigungen erweitern:

Gewähren Sie 'canal'@'%' alle Privilegien für *.*.

1.4.2. Einen eigenständigen Kanalserverknoten hinzufügen

1.4.2.1. Starten Sie den Canal-Server-Knotendienst

Der eigenständige Canal-Server wird wie gewohnt gestartet. Zu diesem Zeitpunkt können die Konfigurationsinformationen in ../conf/canal.properties , die standardmäßig vom Canal-Server geladen werden, aus dem Skript ../bin/startup.bat[startup.sh] abgerufen werden, das über die Eingabeaufforderung des ausgeführten Skripts abgerufen werden kann.

1.4.2.2. Einen neuen Standalone-Server erstellen

Erstellen Sie einen eigenständigen server im canal-admin

Der server erkennt den gestarteten canal-server Knoten automatisch, lädt aber nach der Übernahme durch admin die Konfigurationsdatei ../conf/canal.properties nicht automatisch. Klicken Sie ganz rechts auf操作-配置um die vom Server geladenen Standardkonfigurationsinformationen anzuzeigen.


Sie müssen die in 1.3.2 konfigurierten Konfigurationsinformationen in ../conf/canal.properties manuell in diese Konfiguration kopieren, um sie zu überschreiben!

1.4.2.3. Eine neue Instanz erstellen

Erstellen Sie manuell eine neue instance in canal-admin , die der Instanz example2 in der Einzelrechner- canal-server Konfiguration entspricht. Ebenso müssen Sie ./conf/<實例名稱>/instance.properies manuell nach admin kopieren.

!!Beachten Sie, dass Sie beim Erstellen oder Starten instance zuerst die Datei meta.dat im Instanzordner löschen und die beiden Konfigurationselemente canal.instance.master.journal.name=... und canal.instance.master.position=... aktualisieren müssen.

1.4.3. Hinzufügen von Cluster-Kanalserverknoten

1.4.3.1. Einen neuen Cluster erstellen

Sie müssen den Clusternamen angeben und die an den Cluster gebundene zookeeper -Clusteradresse konfigurieren.

Konfigurieren Sie nach erfolgreicher Erstellung die allgemeinen Serverkonfigurationsinformationen des Clusters in操作-主配置ganz rechts

Sie können die zuvor konfigurierte ../conf/canal.properties auch direkt hierher kopieren und vor der Verwendung leicht modifizieren.

# Kanal-Admin-Konfiguration
canal.admin.manager = 192.168.2.108:8089

canal.instance.global.mode = Manager

1.4.3.2. Einen neuen Server erstellen

Geben Sie den Cluster an, zu dem es gehört (der Clustername ist in 1.4.3.1 festgelegt).

Wenn canal-server -Knotendienst zuvor gestartet wurde, wird der neu erstellte Server automatisch als啟動erkannt, andernfalls wird die斷開.

Dabei gilt es auf eine Sache besonders zu achten.

Aufmerksame Leute werden möglicherweise feststellen, dass es neben der Konfigurationsdatei canal.properties auch eine Konfigurationsdatei canal_local.properties gibt. Letztere hat viel weniger Inhalt als erstere, da diese Datei zum Erstellen der lokalen Knotenkonfigurationsdatei verwendet wird, wenn canal erstellt wird, während die anderen Informationen in der ersteren Konfigurationsdatei zentral von canal-admin konfiguriert und verwaltet werden.

Im Startskript ./bin/startup.bat[startup.sh] wird standardmäßig die Konfigurationsdatei canal.properties geladen, d. h. der Dienst wird im Standalone-Modus gestartet.

Beim Erstellen eines canal unter Windows müssen Sie startup.bat manuell ändern. Die blaue Markierung ist der Konfigurationsdateipfad zum Laden %canal_conf% . Sie müssen daher die Variable im roten Feld wie folgt anpassen:

@rem setze canal_conf=...
setze canal_conf=%conf_dir%\canal_local.properties

Laden Sie die Konfigurationsdatei canal_local.properties beim Start

1.4.3.3. Eine neue Instanz erstellen

Die Konfiguration kann hier auch basierend auf der Konfiguration der Instanz 1.4.2.3 im Standalone-Server angepasst werden;

# 2. Positionsinfo, geben Sie die Binlog-Positionsinformationen an, an denen MySQL mit der Synchronisierung beginnt canal.instance.master.address=192.168.0.25:63306
canal.instance.master.journal.name=mysql-bin.001349
canal.instance.master.position=198213313

# 3. Benutzername/Passwort, legen Sie den Datenbank-Benutzernamen und das Passwort für die Synchronisierung von MySQL fest canal.instance.dbUsername=xxxx
canal.instance.dbPassword=xxx

# 4. table regex, regulärer Ausdruck, der mit der zu synchronisierenden Datentabelle übereinstimmt canal.instance.filter.regex=xxxx

# 5. mq-Konfiguration, geben Sie die Routing-Bindung an MySQL an, siehe „1.2.3“
canal.mq.topic=beispiel2-routingkey

Nach dem Speichern können Sie die Instanz im Betrieb starten

Wenn die Instanz hier nicht gestartet werden kann, versuchen Sie die folgenden Schritte, um sie zu überprüfen und zu betreiben:

Überprüfen Sie, ob canal.destinations in主配置des Clusters den Namen der neu erstellten instance enthält. Überprüfen Sie, ob canal-server Knoten die Konfigurationsdatei canal_local.properties geladen hat. Löschen Sie die .db und .bat Dateien im Instanzordner, aktualisieren Sie binglog Position von canal.instance.master.position in der Instanzkonfigurationsdatei und starten Sie instance .

1.5. Anweisungen zur Kanalkonfiguration

1.5.1. Kanaleigenschaften

  1. canal.ip, die Knoten-IP
  2. canal.register.ip, IP bei zookeeper registriert
  3. canal.zkServer, zk-Cluster
  4. Ob tsdb aktiviert werden soll und ob die Funktion zur Aufzeichnung der Zeitreihenversion von Tabellenmetadaten aktiviert werden soll
  5. // 5. canal.serverMode, auf rabbitmq eingestellt, Standard ist tcp
canal.instance.tsdb.enable = true
canal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:}
canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;
canal.instance.tsdb.dbBenutzername = Kanal
canal.instance.tsdb.dbPassword = Kanal

5.canal.destinations, eine Liste der im aktuellen Cluster bereitgestellten Instanzen

6.canal.mq.servers, legen Sie die Rabbitmq-Clusteradresse fest, !! Sie können den Port hier nicht hinzufügen

1.5.2. Instanzeigenschaften

  1. canal.instance.master.address, Master-Datenbankadresse
  2. canal.instance.master.journal.name, der Dateiwert der Ausführung von Show Master Status in der Datenbank
  3. canal.instance.master.position, der Positionswert des Show-Masterstatus in der Datenbank
  4. canal.instance.tsdb.enable=false, tsdb deaktivieren
  5. canal.instance.dbUsername, Benutzername der Instanzdatenbank
  6. canal.instance.dbPassword, Passwort der Instanzdatenbank
  7. canal.instance.filter.regex, entspricht der Tabelle, die synchronisiert werden muss
  8. canal.mq.topic, canal registriert den Themennamen von mq

1.5.3. Eigenschaftenkonfigurationsdatei

properties ist in zwei Teile gegliedert

canal.properties (Systemstammkonfigurationsdatei)
instance.properties (Konfigurationsdatei auf Instanzebene, eine für jede Instanz)

1.Kanal.Eigenschaften

canal.destinations # Liste der auf dem aktuellen Server bereitgestellten Instanzen canal.conf.dir # Pfad zum conf-Verzeichnis canal.auto.scan # Automatisches Scannen von Instanzen aktivieren # Wenn auf „true“ konfiguriert, werden Änderungen der Instanzkonfiguration im Verzeichnis canal.conf.dir automatisch ausgelöst # 1. Instanzverzeichnis hinzugefügt: löst das Laden der Instanzkonfiguration aus und startet automatisch, wenn „lazy“ auf „true“ gesetzt ist;
# 2. Löschen des Instanzverzeichnisses: Deinstallieren Sie die entsprechende Instanzkonfiguration und fahren Sie sie herunter, falls sie gestartet wurde.
# 3. Änderungen in der Datei instance.properties: Instanzkonfiguration neu laden und automatisch neu starten, wenn sie gestartet wurde;
canal.auto.scan.interval # Instanz automatisches Scanintervall, Einheit s
canal.instance.global.mode # Globaler Konfigurationslademoduscanal.instance.global.lazy # Globaler Lazy-Moduscanal.instance.global.manager.address # Linkinformationen des globalen Manager-Konfigurationsmoduscanal.instance.global.spring.xml # Komponentendatei des globalen Spring-Konfigurationsmoduscanal.instance.example.mode
Kanal.Instanz.Beispiel.lazy
canal.instance.example.spring.xml
# Konfigurationsdefinition auf Instanzebene. Wenn konfiguriert, wird der globale Konfigurationsdefinitionsmodus automatisch überschriebencanal.instance.tsdb.enable # Ob die Aufzeichnungsfunktion der Zeitreihenversion der Tabelle meta aktiviert werden sollcanal.instance.tsdb.dir # Lokaler Speicherpfad der Zeitreihenversion. Der Standard ist das Instanzverzeichniscanal.instance.tsdb.url # Datenbankverbindungsadresse der Zeitreihenversion. Der Standard ist die lokal eingebettete Datenbankcanal.instance.tsdb.dbUsername # Datenbankverbindungskonto der Zeitreihenversioncanal.instance.tsdb.dbPassword # Datenbankverbindungskennwort der Zeitreihenversion

2.Instanz.Eigenschaften

canal.id # Eindeutige Kennung für jede Instanz des Canal-Serverscanal.ip # Lokale IP-Informationen, die an den Canal-Server gebunden sind. Wenn nicht konfiguriert, wird standardmäßig eine lokale IP ausgewählt, um den Dienst zu startencanal.port # Port für den Canal-Server, um den Socket bereitzustellen servicecanal.zkServers # Verbindungsadresse des Canal-Servers für die Verbindung mit dem Zookeeper-Cluster, zum Beispiel: 10.20.144.22:2181,10.20.144.23:2181
canal.zookeeper.flush.period # Die Aktualisierungshäufigkeit der persistenten Kanaldaten für Zookeeper in ms
canal.instance.memory.batch.mode # Daten-Cache-Modus im Canal-Speicher# 1. ITEMSIZE: Begrenzung entsprechend buffer.size, begrenzt nur die Anzahl der Datensätze# 2. MEMSIZE: begrenzt die Größe der zwischengespeicherten Datensätze entsprechend der Größe von buffer.size * buffer.memunit;
canal.instance.memory.buffer.size # Die Anzahl der Pufferdatensätze, die im Speicher von Canal zwischengespeichert werden können, muss ein Exponent von 2 seincanal.instance.memory.buffer.memunit # Die Einheitengröße des Speicherdatensatzes, standardmäßig 1 KB, und wird mit buffer.size kombiniert, um die endgültige Speichernutzungsgröße zu bestimmencanal.instance.transactions.size # Die maximal unterstützte Länge der vollständigen Transaktionsauflösung. Nach Überschreiten dieser Länge kann eine Transaktion in mehrere Übermittlungen an den Canal-Speicher aufgeteilt werden, und die vollständige Sichtbarkeit der Transaktion kann nicht garantiert werdencanal.instance.fallbackIntervalInSeconds # Wenn Canal zu MySQL wechselt, die Zeit, die es braucht, um nach vorne zu schauen, wenn es in der neuen MySQL-Datenbank nach Binlog sucht, Einheiten s
# Beschreibung: Es kann zu Verzögerungen beim Parsen oder Taktinkonsistenzen in den MySQL-Master- und -Slave-Datenbanken kommen. Um sicherzustellen, dass keine Daten verloren gehen, ist ein Rollback für eine gewisse Zeit erforderlich canal.instance.detecting.enable # Ob Heartbeat-Check aktiviert werden soll canal.instance.detecting.sql # Heartbeat-Check SQL, bei doppeltem Schlüsselupdate in retl.xdual values(1,now()) einfügen x=now()
canal.instance.detecting.interval.time # Heartbeat-Prüffrequenz, Einheit s
canal.instance.detecting.retry.threshold # Wiederholungszeit der Heartbeat-Prüfung fehlgeschlagencanal.instance.detecting.heatbeatHaEnable # Ob die automatische MySQL-Umschaltung aktiviert werden soll, nachdem die Heartbeat-Prüfung fehlgeschlagen ist# Hinweis: Wenn beispielsweise die Heartbeat-Prüfung häufiger als der Schwellenwert fehlschlägt und diese Konfiguration wahr ist, stellt Canal automatisch eine Verbindung zur MySQL-Standby-Datenbank her, um Binlog-Daten abzurufencanal.instance.network.receiveBufferSize # Netzwerkverbindungsparameter, SocketOptions.SO_RCVBUF
canal.instance.network.sendBufferSize # Netzwerkverbindungsparameter, SocketOptions.SO_SNDBUF
canal.instance.network.soTimeout # Netzwerkverbindungsparameter, SocketOptions.SO_TIMEOUT

1.5.4.kanal.mq.dynamischesThema

Referenz: https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart?tdsourcetag=s_pctim_aiomsg

1.6. Problemlösung

1. Beim Ausführen startup.bat zum Starten des Kanals unter Windows tritt die folgende Ausnahme auf

Instanziierung von [ch.qos.logback.classic.LoggerContext] fehlgeschlagen
Gemeldete Ausnahme:
ch.qos.logback.core.LogbackException: Unerwartete Dateinamenerweiterung der Datei [file:/D:/env/green/canal/conf/]. Sollte entweder .groovy oder .xml sein.
bei ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:79)
bei ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:152)
bei org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
bei org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
bei org.slf4j.LoggerFactory.bind(LoggerFactory.java:141)
bei org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:120)
bei org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:331)
bei org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:283)
bei org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:304)
bei com.alibaba.otter.canal.deployer.CanalLauncher.<clinit>(CanalLauncher.java:29)

Lösung:
Kommentieren Sie die folgende Codezeile in startup.bat aus
@rem set logback_configurationFile=%conf_dir%\logback.xml

Hinweis: In der neuen Version 1.1.5 besteht dieses Problem nicht mehr. In der Datei 1.1.5 ist diese Zeile nicht auskommentiert.

Beim Starten der neuen Version von canal-admin 1.1.5 tritt folgende Ausnahme auf:

10.04.2020 18:55:40.406 [main] FEHLER com.zaxxer.hikari.pool.HikariPool – HikariPool-1 – Ausnahme während der Poolinitialisierung.
java.sql.SQLException: Der Server-Zeitzonenwert „�й���׼ʱ��“ wird nicht erkannt oder stellt mehr als eine Zeitzone dar. Sie müssen entweder den Server oder den JDBC-Treiber (über die Konfigurationseigenschaft serverTimezone) so konfigurieren, dass ein spezifischerer Zeitzonenwert verwendet wird, wenn Sie die Zeitzonenunterstützung nutzen möchten.

Problemumgehung

Fügen Sie den Parameter &serverTimezone=UTC zur MySQL-Verbindungsadresse hinzu, die durch spring.datasource.url konfiguriert wurde.

Im Instance werden Ausnahmen angezeigt errno = 1236, sqlstate = HY000 errmsg = log event entry exceeded max_allowed_packet;

2020-04-13 13:06:09.507 [Ziel = Beispiel3, Adresse = /192.168.2.108:3306, EventParser] FEHLER com.alibaba.otter.canal.common.alarm.LogAlarmHandler – Ziel: Beispiel3 [java.io.IOException: Fehlerpaket empfangen: errno = 1236, sqlstate = HY000 errmsg = Protokollereigniseintrag hat max_allowed_packet überschritten; max_allowed_packet auf Master erhöhen; das erste Ereignis „mysql-5.7“ bei 671745, das letzte Ereignis wurde aus „D:\env\mysql-5.7“ bei 673181 gelesen, das letzte Byte wurde aus „D:\env\mysql-5.7“ bei 673200 gelesen.
bei com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102)
bei com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:235)
bei com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:265)
bei java.lang.Thread.run (Unbekannte Quelle)
]

Problemumgehung

Löschen Sie die Datei meta.dat in der entsprechenden Instanz unter canal/conf und lassen Sie sie canal-admin automatisch neu generieren.

1.7. Referenzen

Kanal (inkrementelles Abonnement und Verbrauch basierend auf dem MySQL-Datenbank-Binlog)

Canal Admin baut einen Canal-Cluster auf und erlebt

Canal lässt sich in RabbitMQ integrieren

Canal Series - Einführung in die Konfigurationsdatei

Dies ist das Ende dieses Artikels über das superdetaillierte Tutorial zur Installation und Bereitstellung von mysql-canal-rabbitmq. Weitere Informationen zur Installation und Bereitstellung von mysql-canal-rabbitmq finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösung für das Problem des MySQL-Master-Slave-Switch-Kanals
  • Detaillierte Erläuterung des Binlog-Protokollanalysetools zur Überwachung von MySQL: Canal
  • SpringBoot integriert Elasticsearch zur Implementierung von Indizierungs- und Dokumentvorgängen
  • Verwenden Sie Elasticsearch, um Indexdaten regelmäßig zu löschen
  • Verwenden Sie den Kanal, um die MySQL-Datenbank zu überwachen und eine Echtzeitaktualisierung des Elasticsearch-Index zu implementieren

<<:  Acht Regeln für effektive Webformulare

>>:  100 Möglichkeiten, die Farbe eines Bildes mit CSS zu ändern (sammelnswert)

Artikel empfehlen

Einführung in die Verwendung von Unicode-Zeichen in Webseiten (&#, \u usw.)

Die ersten Computer konnten nur ASCII-Zeichen ver...

VMware vsphere 6.5 Installationstutorial (Bild und Text)

vmware vsphere 6.5 ist die klassische Version der...

Benutzerdefinierte Docker-Netzwerkcontainer-Verbindung

Inhaltsverzeichnis Vorwort -Link Benutzerdefinier...

So implementieren Sie Leerzeichen in Taobao mit CSS3

Machen Sie einen leeren Bereich für Taobao: Wenn ...

Detaillierte Anweisungen zur Installation von Jenkins auf Ubuntu 16.04

1. Voraussetzungen JDK wurde installiert echo $PA...

Lösung zum Vergessen des Passworts des Pagodenpanels in Linux 3.X/4.x/5.x

Geben Sie ssh ein und geben Sie den folgenden Bef...

Detaillierte Erklärung der Docker-Datenspeichervolumes

Standardmäßig erfolgt das Lesen und Schreiben von...

Beispiel zum Ändern der inländischen Quelle in Ubuntu 18.04

Die eigene Quelle von Ubuntu stammt aus China, da...

Verwenden Sie das Firebug-Tool, um die Seite auf dem iPad zu debuggen

Wie debuggt man eine Seite auf dem iPad? Wenn Sie ...