Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwaltung der Replikation mehrerer Quellen
Mit den folgenden gespeicherten Prozeduren werden Replikationskanäle auf einem SQL Multiquellen-Replikat RDS für My eingerichtet und verwaltet. Weitere Informationen finden Sie unter Konfiguration multi-source-replication für Amazon RDS for My SQL.
Diese gespeicherten Prozeduren sind nur RDS für My SQL DB-Instances verfügbar, auf denen die folgenden Engine-Versionen ausgeführt werden:
Nebenversionen 8.0.35 und höher
Nebenversionen 5.7.44 und höher
Anmerkung
Obwohl sich diese Dokumentation auf Quell-DB-Instances wie RDS auf My SQL DB-Instances bezieht, funktionieren diese Verfahren auch für My SQL Instances, die außerhalb von Amazon ausgeführt RDS werden.
Themen
- mysql.rds_next_source_log_for_channel
- mysql.rds_reset_external_source_for_channel
- mysql.rds_set_external_source_for_channel
- mysql.rds_set_external_source_with_auto_position_for_channel
- mysql.rds_set_external_source_with_delay_for_channel
- mysql.rds_set_source_auto_position_for_channel
- mysql.rds_set_source_delay_for_channel
- mysql.rds_skip_repl_error_for_channel
- mysql.rds_start_replication_for_channel
- mysql.rds_start_replication_until_for_channel
- mysql.rds_start_replication_until_gtid_for_channel
- mysql.rds_stop_replication_for_channel
mysql.rds_next_source_log_for_channel
Ändert die Protokollposition der Quell-DB-Instance auf den Anfang des nächsten Binärprotokolls auf der Quell-DB-Instance für den Kanal. Verwenden Sie dieses Verfahren nur, wenn Sie den Replikations-I/O-Fehler 1236 auf einem Replikat mit mehreren Quellen erhalten.
Syntax
CALL mysql.rds_next_source_log_for_channel(
curr_master_log
,channel_name
);
Parameter
-
curr_master_log
-
Der Index der aktuellen Quell-Protokolldatei. Der Index ist im Dateinamen codiert. Eine aktuelle Datei mit dem Namen
mysql-bin-changelog.012345
hat beispielsweise den Index 12345. Um den Namen der aktuellen Quell-Protokolldatei zu ermitteln, führen Sie den BefehlSHOW REPLICA STATUS FOR CHANNEL '
aus. Sie finden den Namen anschließend im Feldchannel_name
'Source_Log_File
.Anmerkung
Frühere Versionen von My SQL wurden anstelle von verwendet
SHOW SLAVE STATUS
.SHOW REPLICA STATUS
Wenn Sie eine SQL Version von My vor 8.0.23 verwenden, verwenden Sie.SHOW SLAVE STATUS
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellen-Replikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_next_source_log_for_channel
muss vom Hauptbenutzer ausgeführt werden. Wenn beispielsweise ein IO_Thread-Fehler auftritt, können Sie dieses Verfahren verwenden, um alle Ereignisse in der aktuellen Binärprotokolldatei zu überspringen und die Replikation mit der nächsten binären Protokolldatei für den in angegebenen Kanal fortzusetzen. channel_name
Beispiel
Gehen Sie davon aus, dass die Replikation auf einem Kanal auf einem Replikat mit mehreren Quellen fehlschlägt. Die Ausführung SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
auf dem Multiquellen-Replikat gibt das folgende Ergebnis zurück:
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output
Den Angeben im Feld Last_IO_Errno
ist zu entnehmen, dass die Instance eine I/O-Fehlermeldung mit der Nummer 1236 erhalten hat. Dem Feld Source_Log_File
ist zudem zu entnehmen, dass die betroffene Protokolldatei den Namen mysql-bin-changelog.012345
aufweist und ihr Index folglich 12345
lautet. Um den Fehler zu beheben, können Sie mysql.rds_next_source_log_for_channel
mit den folgenden Parametern aufrufen:
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
Anmerkung
Frühere Versionen von My SQL verwendeten SHOW SLAVE STATUS
stattSHOW REPLICA STATUS
. Wenn Sie eine SQL Version von My vor 8.0.23 verwenden, verwenden Sie. SHOW SLAVE STATUS
mysql.rds_reset_external_source_for_channel
Stoppt den Replikationsvorgang auf dem angegebenen Kanal und entfernt den Kanal und die zugehörigen Konfigurationen aus dem Multiquellenreplikat.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.
Syntax
CALL mysql.rds_reset_external_source_for_channel (
channel_name
);
Parameter
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellenreplikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_reset_external_source_for_channel
muss vom Hauptbenutzer ausgeführt werden. Bei diesem Verfahren werden alle Relay-Logs gelöscht, die zu dem zu entfernenden Kanal gehören.
mysql.rds_set_external_source_for_channel
Konfiguriert einen Replikationskanal auf einer RDS for My SQL DB-Instance, um die Daten von einer anderen RDS für My DB-Instance zu replizieren. SQL
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.
Anmerkung
Sie können stattdessen die mysql.rds_set_external_source_with_delay_for_channel gespeicherte Prozedur verwenden, um diesen Kanal mit verzögerter Replikation zu konfigurieren.
Syntax
CALL mysql.rds_set_external_source_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,channel_name
);
Parameter
-
host_name
-
Der Hostname oder die IP-Adresse der RDS für Meine SQL Quell-DB-Instance.
-
host_port
-
Der von der RDS for My SQL Source DB-Instance verwendete Port. Wenn Ihre Netzwerkkonfiguration die Secure Shell (SSH) -Portreplikation beinhaltet, die die Portnummer konvertiert, geben Sie die Portnummer an, die von verfügbar gemacht wirdSSH.
-
replication_user_name
-
Die ID eines Benutzers mit
REPLICATION CLIENT
undREPLICATION SLAVE
Berechtigungen RDS für die „Meine SQL Quell-DB-Instance“. Wir empfehlen, dass Sie ein Konto angeben, das ausschließlich für die Replikation mit der Quell-DB-Instance verwendet wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
mysql_binary_log_file_name
-
Der Name des Binärprotokolls auf der Quell-DB-Instance, das die Replikationsinformationen enthält.
-
mysql_binary_log_file_location
-
Die Position in der binären Protokolldatei
mysql_binary_log_file_name
, ab der bei der Replikation die Replikationsinformationen gelesen werden.Sie können den Namen und den Speicherort der Binlog-Datei ermitteln, indem Sie sie
SHOW MASTER STATUS
auf der Quell-DB-Instance ausführen. -
ssl_encryption
-
Ein Wert, der angibt, ob die Secure Socket Layer (SSL) -Verschlüsselung für die Replikationsverbindung verwendet wird. 1 gibt an, dass SSL Verschlüsselung verwendet wird, 0 gibt an, dass keine Verschlüsselung verwendet wird. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
channel_name
-
Der Name des Replikationskanals. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_set_external_source_for_channel
muss vom Hauptbenutzer ausgeführt werden. Dieses Verfahren muss auf dem Ziel RDS für My SQL DB-Instance ausgeführt werden, auf dem Sie den Replikationskanal erstellen.
Konfigurieren Sie vor der Ausführung mysql.rds_set_external_source_for_channel
einen Replikationsbenutzer auf der Quell-DB-Instance mit den für das Multisource-Replikat erforderlichen Rechten. Um das Multisource-Replikat mit der Quell-DB-Instance zu verbinden, müssen Sie die replication_user_password
Werte replication_user_name
und Werte eines Replikationsbenutzers angeben, der über REPLICATION SLAVE
Berechtigungen für die Quell-DB-Instance verfügtREPLICATION CLIENT
.
Um einen Replikationsbenutzer auf der Quell-DB-Instance zu konfigurieren
Stellen Sie mit dem My SQL Client Ihrer Wahl eine Verbindung zur Quell-DB-Instance her und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
Wichtig
Aus Sicherheitsgründen sollten Sie ein anderes Passwort als den in den folgenden Beispielen gezeigten Platzhalterwert angeben.
Mein 8.0 SQL
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';Mein SQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';REPLICATION CLIENT
Erteilen Sie Ihrem Replikationsbenutzer auf der Quell-DB-InstanceREPLICATION SLAVE
Rechte. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENT
undREPLICATION SLAVE
für alle Datenbanken erteilt.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Um die verschlüsselte Replikation zu verwenden, konfigurieren Sie die Quell-DB-Instance für die Verwendung von SSL Verbindungen.
Nach dem Aufruf mysql.rds_set_external_source_for_channel
zur Konfiguration dieses Replikationskanals können Sie das Replikat aufrufenmysql.rds_start_replication_for_channel, um den Replikationsprozess auf dem Kanal zu starten. Sie können aufrufenmysql.rds_reset_external_source_for_channel, um die Replikation auf dem Kanal zu beenden und die Kanalkonfiguration aus dem Replikat zu entfernen.
Wenn Sie anrufenmysql.rds_set_external_source_for_channel
, RDS zeichnet Amazon die Uhrzeit, den Benutzer und eine Aktion von set channel source
in der mysql.rds_history
Tabelle ohne kanalspezifische Details und in der mysql.rds_replication_status
Tabelle mit dem Kanalnamen auf. Diese Informationen werden nur für interne Zwecke und zu Überwachungszwecken aufgezeichnet. Um den gesamten Verfahrensaufruf zu Prüfungszwecken aufzuzeichnen, sollten Sie je nach den spezifischen Anforderungen Ihrer Anwendung die Aktivierung von Auditprotokollen oder allgemeinen Protokollen in Betracht ziehen.
Beispiele
Bei der Ausführung auf einer RDS for My SQL DB-Instance konfiguriert das folgende Beispiel einen Replikationskanal, der nach dieser DB-Instance benannt channel_1
ist, so, dass Daten aus der durch Host sourcedb.example.com
und Port angegebenen Quelle repliziert werden. 3306
call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');
mysql.rds_set_external_source_with_auto_position_for_channel
Konfiguriert einen Replikationskanal auf einer RDS for My SQL DB-Instance mit einer optionalen Replikationsverzögerung. Die Replikation basiert auf globalen Transaktions-Identifikatoren ()GTIDs.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source_with_auto_position_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,ssl_encryption
,delay
,channel_name
);
Parameter
-
host_name
-
Der Hostname oder die IP-Adresse der RDS für Meine SQL Quell-DB-Instance.
-
host_port
-
Der von der RDS for My SQL Source DB-Instance verwendete Port. Wenn Ihre Netzwerkkonfiguration die Secure Shell (SSH) -Portreplikation beinhaltet, die die Portnummer konvertiert, geben Sie die Portnummer an, die von verfügbar gemacht wirdSSH.
-
replication_user_name
-
Die ID eines Benutzers mit
REPLICATION CLIENT
undREPLICATION SLAVE
Berechtigungen RDS für die „Meine SQL Quell-DB-Instance“. Wir empfehlen, dass Sie ein Konto angeben, das ausschließlich für die Replikation mit der Quell-DB-Instance verwendet wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
ssl_encryption
-
Ein Wert, der angibt, ob die Secure Socket Layer (SSL) -Verschlüsselung für die Replikationsverbindung verwendet wird. 1 gibt an, dass SSL Verschlüsselung verwendet wird, 0 gibt an, dass keine Verschlüsselung verwendet wird. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quell-DB-Instance aus zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
-
channel_name
-
Der Name des Replikationskanals. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_set_external_source_with_auto_position_for_channel
muss vom Hauptbenutzer ausgeführt werden. Dieses Verfahren muss auf dem Ziel RDS für My SQL DB-Instance ausgeführt werden, auf dem Sie den Replikationskanal erstellen.
Konfigurieren Sie vor der Ausführung rds_set_external_source_with_auto_position_for_channel
einen Replikationsbenutzer auf der Quell-DB-Instance mit den für das Multisource-Replikat erforderlichen Rechten. Um das Multisource-Replikat mit der Quell-DB-Instance zu verbinden, müssen Sie die replication_user_password
Werte replication_user_name
und Werte eines Replikationsbenutzers angeben, der über REPLICATION SLAVE
Berechtigungen für die Quell-DB-Instance verfügtREPLICATION CLIENT
.
Um einen Replikationsbenutzer auf der Quell-DB-Instance zu konfigurieren
Stellen Sie mit dem My SQL Client Ihrer Wahl eine Verbindung zur Quell-DB-Instance her und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
Wichtig
Aus Sicherheitsgründen sollten Sie ein anderes Passwort als den in den folgenden Beispielen gezeigten Platzhalterwert angeben.
Mein 8.0 SQL
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';Mein SQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';REPLICATION CLIENT
Erteilen Sie Ihrem Replikationsbenutzer auf der Quell-DB-InstanceREPLICATION SLAVE
Rechte. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENT
undREPLICATION SLAVE
für alle Datenbanken erteilt.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Um die verschlüsselte Replikation zu verwenden, konfigurieren Sie die Quell-DB-Instance für die Verwendung von SSL Verbindungen.
Stellen Sie vor dem Aufruf sichermysql.rds_set_external_source_with_auto_position_for_channel
, dass Sie die gtid_purged
Systemvariable aufrufen, mysql.rds_set_external_source_gtid_purged um sie auf einen bestimmten GTID Bereich aus einer externen Quelle zu setzen.
Nachdem Sie aufgerufen habenmysql.rds_set_external_source_with_auto_position_for_channel
, um eine RDS Amazon-DB-Instance als Read Replica auf einem bestimmten Channel zu konfigurieren, können Sie die Read Replica aufrufenmysql.rds_start_replication_for_channel, um den Replikationsprozess auf diesem Kanal zu starten.
Nach einem Aufruf mysql.rds_set_external_source_with_auto_position_for_channel
zur Konfiguration dieses Replikationskanals können Sie das Replikat aufrufenmysql.rds_start_replication_for_channel, um den Replikationsprozess auf dem Kanal zu starten. Sie können aufrufenmysql.rds_reset_external_source_for_channel, um die Replikation auf dem Kanal zu beenden und die Kanalkonfiguration aus dem Replikat zu entfernen.
Beispiele
Bei der Ausführung auf einer RDS for My SQL DB-Instance konfiguriert das folgende Beispiel einen Replikationskanal, der nach dieser DB-Instance benannt channel_1
ist, so, dass er Daten aus der durch Host sourcedb.example.com
und Port angegebenen Quelle repliziert. Die minimale Replikationsverzögerung 3306
wird auf eine Stunde (3.600 Sekunden) festgelegt. Das bedeutet, dass eine Änderung gegenüber der Quelle RDS für Meine SQL DB-Instance mindestens eine Stunde lang nicht auf das Multiquellen-Replikat angewendet wird.
call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 0, 3600, 'channel_1');
mysql.rds_set_external_source_with_delay_for_channel
Konfiguriert einen Replikationskanal auf einer RDS for My SQL DB-Instance mit einer bestimmten Replikationsverzögerung.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source_with_delay_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,delay
,channel_name
);
Parameter
-
host_name
-
Der Hostname oder die IP-Adresse der RDS für Meine SQL Quell-DB-Instance.
-
host_port
-
Der von der RDS for My SQL Source DB-Instance verwendete Port. Wenn Ihre Netzwerkkonfiguration die Secure Shell (SSH) -Portreplikation beinhaltet, die die Portnummer konvertiert, geben Sie die Portnummer an, die von verfügbar gemacht wirdSSH.
-
replication_user_name
-
Die ID eines Benutzers mit
REPLICATION CLIENT
undREPLICATION SLAVE
Berechtigungen RDS für die „Meine SQL Quell-DB-Instance“. Wir empfehlen, dass Sie ein Konto angeben, das ausschließlich für die Replikation mit der Quell-DB-Instance verwendet wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
mysql_binary_log_file_name
-
Der Name des Binärprotokolls auf der Quell-DB-Instance enthält die Replikationsinformationen.
-
mysql_binary_log_file_location
-
Die Position innerhalb der für
mysql_binary_log_file_name
angegebenen binären Protokolldatei, ab der bei der Replikation die Replikationsinformationen gelesen werden.Sie können den Namen und den Speicherort der Binlog-Datei ermitteln, indem Sie
SHOW MASTER STATUS
auf der Quelldatenbankinstanz starten. -
ssl_encryption
-
Ein Wert, der angibt, ob die Secure Socket Layer (SSL) -Verschlüsselung für die Replikationsverbindung verwendet wird. 1 gibt an, dass SSL Verschlüsselung verwendet wird, 0 gibt an, dass keine Verschlüsselung verwendet wird. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quell-DB-Instance aus zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
-
channel_name
-
Der Name des Replikationskanals. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_set_external_source_with_delay_for_channel
muss vom Hauptbenutzer ausgeführt werden. Dieses Verfahren muss auf dem Ziel RDS für My SQL DB-Instance ausgeführt werden, auf dem Sie den Replikationskanal erstellen.
Konfigurieren Sie vor der Ausführung mysql.rds_set_external_source_with_delay_for_channel
einen Replikationsbenutzer auf der Quell-DB-Instance mit den für das Multisource-Replikat erforderlichen Rechten. Um das Multisource-Replikat mit der Quell-DB-Instance zu verbinden, müssen Sie die replication_user_password
Werte replication_user_name
und Werte eines Replikationsbenutzers angeben, der über REPLICATION SLAVE
Berechtigungen für die Quell-DB-Instance verfügtREPLICATION CLIENT
.
Um einen Replikationsbenutzer auf der Quell-DB-Instance zu konfigurieren
Stellen Sie mit dem My SQL Client Ihrer Wahl eine Verbindung zur Quell-DB-Instance her und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
Wichtig
Aus Sicherheitsgründen sollten Sie ein anderes Passwort als den in den folgenden Beispielen gezeigten Platzhalterwert angeben.
Mein 8.0 SQL
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';Mein SQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';REPLICATION CLIENT
Erteilen Sie Ihrem Replikationsbenutzer auf der Quell-DB-InstanceREPLICATION SLAVE
Rechte. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENT
undREPLICATION SLAVE
für alle Datenbanken erteilt.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Um die verschlüsselte Replikation zu verwenden, konfigurieren Sie die Quell-DB-Instance für die Verwendung von SSL Verbindungen.
Nach dem Aufruf mysql.rds_set_external_source_with_delay_for_channel
zur Konfiguration dieses Replikationskanals können Sie das Replikat aufrufenmysql.rds_start_replication_for_channel, um den Replikationsprozess auf dem Kanal zu starten. Sie können aufrufenmysql.rds_reset_external_source_for_channel, um die Replikation auf dem Kanal zu beenden und die Kanalkonfiguration aus dem Replikat zu entfernen.
Wenn Sie anrufenmysql.rds_set_external_source_with_delay_for_channel
, RDS zeichnet Amazon die Uhrzeit, den Benutzer und eine Aktion von set channel source
in der mysql.rds_history
Tabelle ohne kanalspezifische Details und in der mysql.rds_replication_status
Tabelle mit dem Kanalnamen auf. Diese Informationen werden nur für interne Zwecke und zu Überwachungszwecken aufgezeichnet. Um den gesamten Verfahrensaufruf zu Prüfungszwecken aufzuzeichnen, sollten Sie je nach den spezifischen Anforderungen Ihrer Anwendung die Aktivierung von Auditprotokollen oder allgemeinen Protokollen in Betracht ziehen.
Beispiele
Bei der Ausführung auf einer RDS For My SQL DB-Instance konfiguriert das folgende Beispiel einen Replikationskanal, der channel_1
auf dieser DB-Instance benannt ist, so, dass Daten aus der durch Host sourcedb.example.com
und Port angegebenen Quelle repliziert werden. Die minimale Replikationsverzögerung 3306
wird auf eine Stunde (3.600 Sekunden) festgelegt. Das bedeutet, dass eine Änderung gegenüber der Quelle RDS für Meine SQL DB-Instance mindestens eine Stunde lang nicht auf das Multiquellen-Replikat angewendet wird.
call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 0, 3600, 'channel_1');
mysql.rds_set_source_auto_position_for_channel
Legt fest, dass der Replikationsmodus für den angegebenen Kanal entweder auf den Positionen der binären Protokolldateien oder auf globalen Transaktions-Identifikatoren (GTIDs) basiert.
Syntax
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
,channel_name
);
Parameter
-
auto_position_mode
-
Ein Wert, der angibt, ob die Positionsreplikation der Protokolldatei oder die GTID basierte Replikation verwendet werden soll:
-
0
– Verwendung der auf der Binärprotokolldateiposition basierenden Replikationsmethode. Der Standardwert ist0
. -
1
— Verwenden Sie die GTID basierte Replikationsmethode.
-
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellenreplikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_set_source_auto_position_for_channel
muss vom Hauptbenutzer ausgeführt werden. Dieses Verfahren startet die Replikation auf dem angegebenen Kanal neu, um den angegebenen Modus für die auto Positionierung anzuwenden.
Beispiele
Im folgenden Beispiel wird der auto Positionierungsmodus für channel_1 so eingestellt, dass er die GTID basierte Replikationsmethode verwendet.
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
mysql.rds_set_source_delay_for_channel
Legt die Mindestanzahl von Sekunden fest, um die Replikation von der Quelldatenbank-Instance zum Multiquellen-Replikat für den angegebenen Kanal zu verzögern.
Syntax
CALL mysql.rds_set_source_delay_for_channel(
delay
,channel_name
);
Parameter
-
delay
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quell-DB-Instance aus zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellen-Replikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_set_source_delay_for_channel
muss vom Hauptbenutzer ausgeführt werden. Um dieses Verfahren zu verwenden, rufen Sie zuerst auf, mysql.rds_stop_replication_for_channel
um die Replikation zu beenden. Rufen Sie dann diese Prozedur auf, um den Wert für die Replikationsverzögerung festzulegen. Wenn die Verzögerung festgelegt ist, rufen Sie auf, mysql.rds_start_replication_for_channel
um die Replikation neu zu starten.
Beispiele
Im folgenden Beispiel wird die Verzögerung für die Replikation von der Quelldatenbank-Instance auf dem channel_1
Multiquellen-Replikat auf mindestens eine Stunde (3.600 Sekunden) festgelegt.
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
mysql.rds_skip_repl_error_for_channel
Überspringt ein binäres Protokollereignis und löscht einen Replikationsfehler auf einem My SQL DB-Replikat mit mehreren Quellen für den angegebenen Kanal.
Syntax
CALL mysql.rds_skip_repl_error_for_channel(
channel_name
);
Parameter
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellenreplikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Der Hauptbenutzer muss die Prozedur mysql.rds_skip_repl_error_for_channel
auf einem Lesereplikat ausführen. Sie können dieses Verfahren auf ähnliche Weise mysql.rds_skip_repl_error
verwenden, um einen Fehler in einer Read Replica zu überspringen. Weitere Informationen finden Sie unter Aufrufen der Prozedur mysql.rds_skip_repl_error.
Anmerkung
Führen Sie den SQL SHOW REPLICA STATUS FOR CHANNEL '
Befehl My aus, um festzustellen, ob Fehler vorliegen. Wenn ein Replikationsfehler nicht als kritisch eingestuft, ist, können Sie channel_name
'\Gmysql.rds_skip_repl_error_for_channel
ausführen, um den Fehler zu überspringen. Wenn mehrere Fehler vorliegen, mysql.rds_skip_repl_error_for_channel
löscht der erste Fehler auf dem angegebenen Replikationskanal und warnt dann, dass weitere Fehler vorhanden sind. In diesem Fall können Sie mithilfe von SHOW REPLICA STATUS FOR CHANNEL '
die angemessene Vorgehensweise bei der Handhabung des nächsten Fehlers ermitteln. Informationen zu den zurückgegebenen Werten finden Sie in der SHOWREPLICASTATUSErklärungchannel_name
'\G
mysql.rds_start_replication_for_channel
Initiiert die Replikation von einer RDS For My SQL DB-Instance zu einem Multisource-Replikat auf dem angegebenen Kanal.
Anmerkung
Sie können die mysql.rds_start_replication_until_gtid_for_channel gespeicherte Prozedur mysql.rds_start_replication_until_for_channel oder verwenden, um die Replikation von einer RDS for My SQL DB-Instance aus zu initiieren und die Replikation am angegebenen Speicherort der Binärprotokolldatei zu beenden.
Syntax
CALL mysql.rds_start_replication_for_channel(
channel_name
);
Parameter
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellenreplikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_start_replication_for_channel
muss vom Hauptbenutzer ausgeführt werden. Nachdem Sie die Daten aus der Quelle RDS für Meine SQL DB-Instance importiert haben, führen Sie diesen Befehl für das Multiquellen-Replikat aus, um die Replikation auf dem angegebenen Kanal zu starten.
Beispiele
Im folgenden Beispiel wird die Replikation auf dem channel_1
Multiquellen-Replikat gestartet.
CALL mysql.rds_start_replication_for_channel('channel_1');
mysql.rds_start_replication_until_for_channel
Initiiert die Replikation von einer RDS for My SQL DB-Instance auf dem angegebenen Kanal und stoppt die Replikation am angegebenen Speicherort der binären Protokolldatei.
Syntax
CALL mysql.rds_start_replication_until_for_channel (
replication_log_file
,replication_stop_point
,channel_name
);
Parameter
-
replication_log_file
-
Der Name des Binärprotokolls auf der Quell-DB-Instance enthält die Replikationsinformationen.
-
replication_stop_point
-
Die Position im
replication_log_file
-Binärprotokoll, an der die Replikation stoppt. -
channel_name
-
Der Name des Replikationskanals auf dem Multiquellen-Replikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_start_replication_until_for_channel
muss vom Hauptbenutzer ausgeführt werden. Bei diesem Verfahren wird die Replikation gestartet und dann beendet, wenn die angegebene Position der Binlogdatei erreicht ist. Bei Version 8.0 stoppt das Verfahren nur dieSQL_Thread
. Bei Version 5.7 stoppt das Verfahren sowohl die als SQL_Thread
auch dieIO_Thread
.
Der für den replication_log_file
Parameter angegebene Dateiname muss mit dem Binlog-Dateinamen der Quell-DB-Instance übereinstimmen.
Wenn der replication_stop_point
Parameter einen Stopp angibt, der in der Vergangenheit liegt, wird die Replikation sofort gestoppt.
Beispiele
Das folgende Beispiel initiiert die Replikation am und repliziert die Änderungenchannel_1
, bis sie den Speicherort 120
in der mysql-bin-changelog.000777
Binärprotokolldatei erreichen.
call mysql.rds_start_replication_until_for_channel( 'mysql-bin-changelog.000777', 120, 'channel_1' );
mysql.rds_start_replication_until_gtid_for_channel
Initiiert die Replikation auf dem angegebenen Kanal von einer RDS for My SQL DB-Instance aus und stoppt die Replikation an der angegebenen globalen Transaktions-ID ()GTID.
Syntax
CALL mysql.rds_start_replication_until_gtid_for_channel(
gtid
,channel_name
);
Parameter
-
gtid
-
GTIDDanach soll die Replikation beendet werden.
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellenreplikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_start_replication_until_gtid_for_channel
muss vom Hauptbenutzer ausgeführt werden. Das Verfahren startet die Replikation auf dem angegebenen Kanal und wendet alle Änderungen bis zum angegebenen GTID Wert an. Anschließend wird die Replikation auf dem Kanal beendet.
Wenn der Parameter gtid
eine Transaktion angibt, die bereits von dem Replikat ausgeführt wurde, wird die Replikation sofort gestoppt.
Bevor Sie dieses Verfahren ausführen, müssen Sie die Multithread-Replikation deaktivieren, indem Sie den Wert replica_parallel_workers
oder slave_parallel_workers
auf 0
setzen.
Beispiele
Im folgenden Beispiel wird die Replikation am initiiert und die Änderungen repliziertchannel_1
, bis der Wert erreicht ist. GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');
mysql.rds_stop_replication_for_channel
Stoppt die Replikation von einer My SQL DB-Instance auf dem angegebenen Kanal.
Syntax
CALL mysql.rds_stop_replication_for_channel(
channel_name
);
Parameter
-
channel_name
-
Der Name des Replikationskanals auf dem Multiquellen-Replikat. Jeder Replikationskanal empfängt die binären Protokollereignisse von einer einzigen Quelle RDS für My SQL DB-Instance, die auf einem bestimmten Host und Port ausgeführt wird.
Nutzungshinweise
Die Prozedur mysql.rds_stop_replication_for_channel
muss vom Hauptbenutzer ausgeführt werden.
Beispiele
Im folgenden Beispiel wird die Replikation channel_1
eines Replikats mit mehreren Quellen beendet.
CALL mysql.rds_stop_replication_for_channel('channel_1');