


So erweitern Sie die Felder großer Tabellen unter MySQL-Kaskadenreplikation
Felderweiterung großer Tabellen unter MySQL-Kaskadenreplikation
1. Das Unternehmen eines Kunden verfügt über eine Tabelle mit etwa 400 Millionen Zeilen. open_id varchar(50) in der Tabelle muss auf varchar(500) erweitert werden ) ).
Versuchen Sie während der Änderung, die Auswirkungen auf die Hauptbibliothek so gering wie möglich zu halten (vorzugsweise keine Auswirkungen -> Letztendlich haben wir einen Fensterzeitraum von 4 Stunden angestrebt).
2. Datenbanktabelleninformationen
Umgebung: Mysql 8.0.22
1 Master-1-Slave-Kopie basierend auf Gtid
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)
- Die Anwendung wird zur Regressionsüberprüfung durchgeführt
- Der obige Inhalt scheint sehr kompliziert zu sein, handelt es sich jedoch im Wesentlichen um Sicherung und Wiederherstellung. Leser können dies als Alternative in Betracht ziehen. Teilen Sie die spezifischen Schritte mit?
以下语句也可以查看: 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'; #看下此表的数据量
Nach dem Login kopierenZusätzliches Szenario: Test basierend auf der Festplatten-IO-Fähigkeit- Ändern Sie direkt in der Hauptbibliothek und es gibt keinen Datenverkehr:
- Szenario 1, die Festplatte ist eine physische NVME-Maschine, 400 Millionen Daten dauert etwa 5 Stunden (Festplattenleistung 1 G/s).
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!

Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

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

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In der MySQL -Datenbank wird die Beziehung zwischen dem Benutzer und der Datenbank durch Berechtigungen und Tabellen definiert. Der Benutzer verfügt über einen Benutzernamen und ein Passwort, um auf die Datenbank zuzugreifen. Die Berechtigungen werden über den Zuschussbefehl erteilt, während die Tabelle durch den Befehl create table erstellt wird. Um eine Beziehung zwischen einem Benutzer und einer Datenbank herzustellen, müssen Sie eine Datenbank erstellen, einen Benutzer erstellen und dann Berechtigungen erfüllen.

Vereinfachung der Datenintegration: AmazonRDSMYSQL und Redshifts Null ETL-Integration Die effiziente Datenintegration steht im Mittelpunkt einer datengesteuerten Organisation. Herkömmliche ETL-Prozesse (Extrakt, Konvertierung, Last) sind komplex und zeitaufwändig, insbesondere bei der Integration von Datenbanken (wie AmazonRDSMysQL) in Data Warehouses (wie Rotverschiebung). AWS bietet jedoch keine ETL-Integrationslösungen, die diese Situation vollständig verändert haben und eine vereinfachte Lösung für die Datenmigration von RDSMysQL zu Rotverschiebung bietet. Dieser Artikel wird in die Integration von RDSMYSQL Null ETL mit RedShift eintauchen und erklärt, wie es funktioniert und welche Vorteile es Dateningenieuren und Entwicklern bringt.

MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Ausfüllen des MySQL -Benutzernamens und des Kennworts: 1. Bestimmen Sie den Benutzernamen und das Passwort; 2. Verbinden Sie eine Verbindung zur Datenbank; 3. Verwenden Sie den Benutzernamen und das Passwort, um Abfragen und Befehle auszuführen.

1. Verwenden Sie den richtigen Index, um das Abrufen von Daten zu beschleunigen, indem die Menge der skanierten Datenmenge ausgewählt wird. Wenn Sie mehrmals eine Spalte einer Tabelle nachschlagen, erstellen Sie einen Index für diese Spalte. Wenn Sie oder Ihre App Daten aus mehreren Spalten gemäß den Kriterien benötigen, erstellen Sie einen zusammengesetzten Index 2. Vermeiden Sie aus. Auswählen * Nur die erforderlichen Spalten. Wenn Sie alle unerwünschten Spalten auswählen, konsumiert dies nur mehr Serverspeicher und veranlasst den Server bei hoher Last oder Frequenzzeiten, beispielsweise die Auswahl Ihrer Tabelle, wie beispielsweise die Spalten wie innovata und updated_at und Zeitsteuer und dann zu entfernen.

Navicat selbst speichert das Datenbankkennwort nicht und kann das verschlüsselte Passwort nur abrufen. Lösung: 1. Überprüfen Sie den Passwort -Manager. 2. Überprüfen Sie Navicats "Messnot Password" -Funktion; 3.. Setzen Sie das Datenbankkennwort zurück; 4. Kontaktieren Sie den Datenbankadministrator.

Detaillierte Erläuterung von Datenbanksäureattributen Säureattribute sind eine Reihe von Regeln, um die Zuverlässigkeit und Konsistenz von Datenbanktransaktionen sicherzustellen. Sie definieren, wie Datenbanksysteme Transaktionen umgehen, und sorgen dafür, dass die Datenintegrität und -genauigkeit auch im Falle von Systemabstürzen, Leistungsunterbrechungen oder mehreren Benutzern gleichzeitiger Zugriff. Säureattributübersicht Atomizität: Eine Transaktion wird als unteilbare Einheit angesehen. Jeder Teil schlägt fehl, die gesamte Transaktion wird zurückgerollt und die Datenbank behält keine Änderungen bei. Wenn beispielsweise eine Banküberweisung von einem Konto abgezogen wird, jedoch nicht auf ein anderes erhöht wird, wird der gesamte Betrieb widerrufen. begintransaktion; updateAccountsSetBalance = Balance-100WH

Zeigen Sie die MySQL -Datenbank mit dem folgenden Befehl an: Verbindung zum Server: MySQL -U -Benutzername -P -Kennwort ausführen STEILE -Datenbanken; Befehl zum Abrufen aller vorhandenen Datenbanken auswählen Datenbank: Verwenden Sie den Datenbanknamen. Tabelle Ansicht: Tabellen anzeigen; Tabellenstruktur anzeigen: Beschreiben Sie den Tabellennamen; Daten anzeigen: Wählen Sie * aus Tabellenname;
