Heim >Datenbank >MySQL-Tutorial >So erweitern Sie die Felder großer Tabellen unter MySQL-Kaskadenreplikation
2. Datenbanktabelleninformationen
1. Die erste Frage: Ist das eine große Tabelle? Die Datei hat eine Größe von 280 G + die Anzahl ist schon lange nicht mehr zurückgekommen. + Ich habe die Standby-Datenbank verwendet, um zu überprüfen und zu bestätigen, dass die Anzahl der Zeilen > 400 Millionen beträgt Änderungen?
M unten stellt die Hauptbibliothek dar, S1 ist Slave 1, S2 ist Slave 2
MethodeVorteile
OnlineDDL | nativ, bei Verwendung einer temporären Zwischentabelle | ||
---|---|---|---|
Gh-ost | Verwenden Sie Binlog + Replay-Thread anstelle von Trigger | Dritter. Party-Tools führen abhängig von verschiedenen Parametern zu längeren Ausführungszeiten | |
Pt-osc | Die Versionskompatibilität ist gut, es werden Trigger verwendet, um die Haupt- und Sekundärtabellen konsistent zu halten | Tools von Drittanbietern und dort Es gibt weitere Nutzungseinschränkungen. | |
M-S1-S2 Optionen? | Basierend auf der tatsächlichen Situationsbewertung beträgt die Nachfrage auf Geschäftsseite dieses Mal | Dieser Tisch hat 24 Stunden am Tag Geschäftsverkehr und akzeptiert keine geschäftliche Nichtverfügbarkeitszeit von mehr als 4 Stunden||
OnlineDDL-Methode, wenn ALGORITHMUS =COPY, der Zeitraum wird während des endgültigen Umbenennungsvorgangs der Primär- und Sekundärtabellen (nicht lesbar und beschreibbar) DML (schreibgeschützt) blockiert, bis DDL abgeschlossen ist (die erforderliche Zeit ist ungewiss). | Es wird empfohlen, zur Konvertierung eine Verbindung zur Slave-Bibliothek im Gh-ost-Modus herzustellen. Dieser Modus hat die geringsten Auswirkungen auf die Hauptbibliothek und die Flusskontrolle kann über Parameter eingestellt werden. Die fatale Schwäche dieses Tools besteht darin, dass die Änderung zu lange dauert. Für eine Tabelle mit 400 Millionen Daten dauerte es in der Testumgebung 70 Stunden. Abschließend müssen wir noch einen Umschaltbefehl erteilen und die Zwischentabelle *_del manuell löschen. Der Vorteil dieser Lösung besteht darin, dass zur Gewährleistung der Datensicherheit eine Slave-Datenbank vorhanden ist. Wenn Sie also eine 1-Master-2-Slave-Architektur verwenden, ist dies eher zu empfehlen. | Pt-osc und Gh-ost gehören beide zu Drittanbietern. Der Betrieb großer Tabellen durch Pt-osc und OnlineDDL hat einen gemeinsamen Nachteil: Die Kosten für ein Rollback bei einem Ausfall sind sehr hoch. | Wenn es sich um eine niedrigere Version wie MySQL |
Nachdem die Erweiterung abgeschlossen ist, warten Sie auf die verzögerte Synchronisierung von M-S1-S2 (verringern Sie den Datenunterschied zwischen S2 und M und führen Sie eine Datenüberprüfung durch)
Entfernen Sie S1 und richten Sie die ein Master-Slave-Beziehung von M-S2 (Lassen Sie S2 weiterhin die Daten von M synchronisieren) Sichern Sie S2 und stellen Sie S1 wieder her, richten Sie die M-S2-S1-Kaskadenreplikation ein Die Anwendung stoppt und wartet auf die Master-Slave-Daten um konsistent zu sein (der Vorteil besteht darin, dass die Synchronisationszeit des differenziellen Datenvolumens sehr kurz ist) Am Ende wird S2 zur Master-Bibliothek und S1 zur Slave-Bibliothek (die Anwendung muss die Front-End-Verbindung ändern). Informationen)
以下语句也可以查看: show table status from dbname like 'tablename'\G # Rows 的值不准,有时误差有2倍 SELECT a.table_schema,a.table_name,concat(round(sum(DATA_LENGTH/1024/1024)+sum(INDEX_LENGTH/1024/1024),2) ,'MB')total_size,concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') AS data_size,concat(round(sum(INDEX_LENGTH/1024/1024),2),'MB') AS index_size FROM information_schema.TABLES a WHERE a.table_schema = 'dbname' AND a.table_name = 'tablename'; #看下此表的数据量
Szenario 2: Die Festplatte ist eine virtuelle Maschine mit einer mechanischen Festplatte. Diese Datenmenge benötigt etwa 40 Stunden (Festplattenleistung 100 M/s).
Das obige ist der detaillierte Inhalt vonSo erweitern Sie die Felder großer Tabellen unter MySQL-Kaskadenreplikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!