Inhaltsverzeichnis
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 ) ).
Umgebung: Mysql 8.0.22
Heim Datenbank MySQL-Tutorial So erweitern Sie die Felder großer Tabellen unter MySQL-Kaskadenreplikation

So erweitern Sie die Felder großer Tabellen unter MySQL-Kaskadenreplikation

May 29, 2023 pm 11:13 PM
mysql

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?

3. Lösungsauswahl

M unten stellt die Hauptbibliothek dar, S1 ist Slave 1, S2 ist Slave 2

Methode

Vorteile
NachteileMachbarkeit OnlineDDLnativ, bei Verwendung einer temporären ZwischentabelleALGORITHM=COPY wird DML blockiert. Empfohlene Version >MySQL5.75 SterneGh-ostVerwenden Sie Binlog + Replay-Thread anstelle von Trigger Dritter. Party-Tools führen abhängig von verschiedenen Parametern zu längeren Ausführungszeiten4 SternePt-oscDie Versionskompatibilität ist gut, es werden Trigger verwendet, um die Haupt- und Sekundärtabellen konsistent zu haltenTools von Drittanbietern und dort Es gibt weitere Nutzungseinschränkungen. 3 Sterne. M-S1-S2 Optionen? Dieser Tisch hat 24 Stunden am Tag Geschäftsverkehr und akzeptiert keine geschäftliche Nichtverfügbarkeitszeit von mehr als 4 StundenSchließlich haben wir uns für die vom DBA bevorzugte (xin ku) Methode entschieden, nämlich die Durchführung einer M-S1-S2-Kaskadenreplikation.
Basierend auf der tatsächlichen Situationsbewertung beträgt die Nachfrage auf Geschäftsseite dieses Mal
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
4. Funktionsweise: Erstellen Sie eine neue S1-Slave-Bibliothek und erstellen Sie eine M-S1-S2-Kaskadenreplikation. Verwenden Sie OnlineDDL, um das Feld auf S2 zu erweitern (der Vorteil besteht darin, dass der Master von M-S1 ist nie betroffen)

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 kopieren

  • Zusä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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Beziehung zwischen MySQL -Benutzer und Datenbank Die Beziehung zwischen MySQL -Benutzer und Datenbank Apr 08, 2025 pm 07:15 PM

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.

RDS MySQL -Integration mit RedShift Zero ETL RDS MySQL -Integration mit RedShift Zero ETL Apr 08, 2025 pm 07:06 PM

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: Die einfache Datenverwaltung für Anfänger MySQL: Die einfache Datenverwaltung für Anfänger Apr 09, 2025 am 12:07 AM

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.

So füllen Sie MySQL Benutzername und Passwort aus So füllen Sie MySQL Benutzername und Passwort aus Apr 08, 2025 pm 07:09 PM

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.

Die Abfrageoptimierung in MySQL ist für die Verbesserung der Datenbankleistung von wesentlicher Bedeutung, insbesondere im Umgang mit großen Datensätzen Die Abfrageoptimierung in MySQL ist für die Verbesserung der Datenbankleistung von wesentlicher Bedeutung, insbesondere im Umgang mit großen Datensätzen Apr 08, 2025 pm 07:12 PM

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.

Kann ich das Datenbankkennwort in Navicat abrufen? Kann ich das Datenbankkennwort in Navicat abrufen? Apr 08, 2025 pm 09:51 PM

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.

Verstehen von Säureeigenschaften: Die Säulen einer zuverlässigen Datenbank Verstehen von Säureeigenschaften: Die Säulen einer zuverlässigen Datenbank Apr 08, 2025 pm 06:33 PM

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

Wie man MySQL sieht Wie man MySQL sieht Apr 08, 2025 pm 07:21 PM

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;

See all articles