Hintergrund:Da die Projekte des Unternehmens dem Druck der Parallelität in letzter Zeit nicht standhalten zu können scheinen, steht eine Optimierung unmittelbar bevor. Da es sich bei dem aktuellen System um ein Einzeldatenbanksystem handelt, haben wir unser Bestes getan, um es nach Möglichkeit zu optimieren. Der Datenbankengpass begrenzt die gleichzeitigen Kapazitäten des Projekts jedoch immer noch erheblich. Daher haben wir überlegt, eine Datenbank hinzuzufügen, um die Parallelitätsfunktionen des Projekts zu verbessern. Ideen:1: Erstellen Sie eine zentrale Bibliothek: hauptsächlich zum Speichern historischer Daten. Als Abfrage verwenden. 2: Erstellen Sie mehrere Geschäftsbibliotheken, um die hohen Parallelitätsfunktionen des Projekts zu erfüllen. Demo-Umgebung:1: VM Ware virtuelle Maschine - CentOS 7
2: MySQL 5.7 Schritt1: Hauptbibliothek 100 Richten Sie my.cnf ein. [mysqld] lower_case_table_names = 1 # Bei Tabellennamen wird die Groß-/Kleinschreibung nicht beachtet server-id = 100 log_bin = mysql-bin #Binlog-Aufzeichnung starten binlog_format = MIXED #Jedes Mal, wenn eine Transaktion festgeschrieben wird, leert MySQL das Binärprotokoll. Dies ist die sicherste Einstellung, hat aber den größten Leistungsverlust. #In diesem Fall kann das System die Daten einer einzigen Transaktion verlieren, wenn das Host-Betriebssystem, auf dem sich die Datenbank befindet, beschädigt ist oder die Stromversorgung plötzlich ausfällt. #Obwohl Binlog sequentielle IO ist, werden jedoch mehrere Transaktionen gleichzeitig übermittelt, wenn sync_binlog=1 gesetzt ist. #Es wirkt sich auch erheblich auf die MySQL- und IO-Leistung aus. Nach Bedarf einstellen. sync_binlog = 1 # Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht werden/ablaufen. Der Standardwert ist 0, was bedeutet, dass keine automatische Löschung erfolgt. Ablaufdatum der Protokolle: 7 #binlog_cache_size = 128 m #max_binlog_cache_size = 512 m #max_binlog_size = 256 M # Die Datenbank muss synchronisiert werden binlog-do-db = dev # Es ist keine Synchronisierungsbibliothek erforderlich. binlog-ignore-db = mysql binlog_ignore_db = Informationsschema binlog_ignore_db = Leistungsschema binlog_ignore_db = sys Datenverzeichnis=/var/lib/mysql Einrichten von Slave-Benutzern #mysql -uroot -p # Passwort: xxxxxx # mysql> GRANT REPLICATION SLAVE ON *.* TO ‚slave‘@‚%‘ IDENTIFIED BY ‚root1234‘; # mysql> Berechtigungen leeren; # aufhören; # systemctl mysqld neu starten; # Masterstatus anzeigen \G #**************************** 1. Zeile ************************** Datei:mysql-bin.000001 Position: 886 Binlog_Do_DB: Entwickler Binlog_Ignore_DB: MySQL, Informationsschema, Leistungsschema, Sys Ausgeführtes_Gtid_Set: 1 Zeile im Satz (0,00 Sek.) 2: Hauptbibliothek 200 Richten Sie my.cnf ein. [mysqld] lower_case_table_names = 1 # Bei Tabellennamen wird die Groß-/Kleinschreibung nicht beachtet server-id = 200 log_bin = mysql-bin #Binlog-Aufzeichnung starten binlog_format = MIXED #Jedes Mal, wenn eine Transaktion festgeschrieben wird, leert MySQL das Binärprotokoll. Dies ist die sicherste Einstellung, hat aber den größten Leistungsverlust. #In diesem Fall kann das System die Daten einer einzigen Transaktion verlieren, wenn das Host-Betriebssystem, auf dem sich die Datenbank befindet, beschädigt ist oder die Stromversorgung plötzlich ausfällt. #Obwohl Binlog sequentielle IO ist, werden jedoch mehrere Transaktionen gleichzeitig übermittelt, wenn sync_binlog=1 gesetzt ist. #Es wirkt sich auch erheblich auf die MySQL- und IO-Leistung aus. Nach Bedarf einstellen. sync_binlog = 1 # Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht werden/ablaufen. Der Standardwert ist 0, was bedeutet, dass keine automatische Löschung erfolgt. Ablaufdatum der Protokolle: 7 #binlog_cache_size = 128 m #max_binlog_cache_size = 512 m #max_binlog_size = 256 M # Die Datenbank muss synchronisiert werden binlog-do-db = dev # Es ist keine Synchronisierungsbibliothek erforderlich. binlog-ignore-db = mysql binlog_ignore_db = Informationsschema binlog_ignore_db = Leistungsschema binlog_ignore_db = sys Datenverzeichnis=/var/lib/mysql Einrichten von Slave-Benutzern #mysql -uroot -p # Passwort: xxxxxx # mysql> GRANT REPLICATION SLAVE ON *.* TO ‚slave‘@‚%‘ IDENTIFIED BY ‚root1234‘; # mysql> Berechtigungen leeren; # aufhören; # systemctl mysqld neu starten; # Masterstatus anzeigen \G #**************************** 1. Zeile ************************** Datei:mysql-bin.000001 Position: 154 Binlog_Do_DB: Entwickler Binlog_Ignore_DB: MySQL, Informationsschema, Leistungsschema, Sys Ausgeführtes_Gtid_Set: 1 Zeile im Satz (0,00 Sek.) 3: Aus Bibliothek 300 Richten Sie my.cnf ein. [mysqld] lower_case_table_names = 1 # Bei Tabellennamen wird die Groß-/Kleinschreibung nicht beachtet server-id = 300 master_info_repository = Tabelle relay_log_info_repository = Tabelle Datenverzeichnis=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolische Links = 0 log-error=/var/log/mysqld.log pid-Datei=/var/run/mysqld/mysqld.pid Festlegen der Masterdatenbankinformationen #mysql -uroot -p # Passwort: xxxxxx # Legen Sie die Informationen zur Master-Datenbank fest# mysql> CHANGE MASTER TO # ->MASTER_HOST='192.168.194.3', # ->MASTER_PORT=3306, MASTER_USER='Slave', # ->MASTER_PASSWORD='root1234', # ->MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=886 für Kanal '100'; # mysql> ÄNDERN SIE MASTER IN # ->MASTER_HOST='192.168.194.4', # ->MASTER_PORT=3306, MASTER_USER='Slave', # ->MASTER_PASSWORD='root1234', # ->MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154 für Kanal '200'; # Legen Sie die Informationen zur Masterdatenbank fest# mysql> flush privileges; # Slave starten; # mysql>Slave-Status anzeigen \G Identifikationssynchronisierung erfolgreich
prüfen. Zufällige Hauptdatenbank: Erstellen Sie eine Tabelle und fügen Sie einen Datensatz ein. Tabelle „t_user“ erstellen ( `id` varchar(32) NOT NULL COMMENT 'Primärschlüssel-ID', `name` varchar(32) CHARACTER SET utf8mb4 NULL COMMENT 'Benutzername', `code` varchar(32) CHARACTER SET utf8mb4 NULL COMMENT 'Benutzercode', `phone_number` varchar(300) CHARACTER SET utf8mb4 NULL COMMENT 'Telefonnummer', `create_date` datetime NULL KOMMENTAR 'Erstellungszeit', `update_date` datetime NULL COMMENT 'Änderungszeitpunkt', PRIMÄRSCHLÜSSEL (`id`) ) COMMENT = 'Benutzerinformationstabelle'; INSERT INTO t_user (`id`, `name`, `code`, `telefonnummer`, `erstellungsdatum`, `aktualisierungsdatum`) WERTE ('userId_4', 'Benutzer-ID_4', '123456789', '123456789632', '27.04.2020 22:05:00', '27.04.2020 22:05:00'); Abfrage aus der Bibliothek Wählen Sie * aus t_user; ------+--------+----------+--------------+---------------------+-------------+ | ID | Name | Code | Telefonnummer | Erstellungsdatum | Aktualisierungsdatum | +-------+--------+----------+-----------+---------------------+----------+ | Benutzer-ID_4 | Zhang San|123456789|123456789632|2020-04-27 22:05:00|2020-04-27 22:05:00 ZusammenfassenDamit ist dieser Artikel über die Implementierungsideen und -schritte der MySQL-Master-Slave-Konstruktion (mehrere Master und ein Slave) abgeschlossen. Weitere relevante Inhalte zur MySQL-Master-Slave-Konstruktion finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Designtheorie: Hierarchie im Design
>>: So fügen Sie einem Hintergrundbild in CSS3 eine Farbmaske hinzu
Inhaltsverzeichnis 1. Hintergrund 2. Verifizierun...
Wir haben möglicherweise eine Frage: Nachdem wir ...
In einer Tabelle können Sie die Farbe des oberen ...
In unserem täglichen Geschäft ist die Formularval...
1. Allgemeine Verbindungen für MySQL INNER JOIN (...
Indem wir den aktuellen Bildlaufversatz zu den At...
Inhaltsverzeichnis 1. Einleitung 2. Nutzung 3. En...
In diesem Artikel erfahren Sie zu Ihrer Informati...
Dieser Artikel beschreibt, wie man PHP und Nginx ...
Inhaltsverzeichnis Ergebnisse erzielen Einführung...
Ich wurde am frühen Morgen durch einen Anruf gewe...
1. Um die Abfrage zu optimieren, sollten Sie voll...
Es gibt zwei Arten von Webseiten-Boxmodellen: 1: S...
Ein Kollege meldete, dass eine MySQL-Instanz aufg...
Inhaltsverzeichnis Verwendete APIs Einfaches Beis...