Implementierungsideen und Schritte für die MySQL-Master-Slave-Konstruktion (mehrere Master und ein Slave)

Implementierungsideen und Schritte für die MySQL-Master-Slave-Konstruktion (mehrere Master und ein Slave)

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

centOS-1: 192.168.194.3 Haupt-100-------Geschäftsbibliothek

centOS-2: 192.168.194.4 Haupt-200-------Geschäftsbibliothek

centOS-3: 192.168.194.5 von 300-------entspricht der zentralisierten Bibliothek

2: MySQL 5.7

Schritt

1: 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

Slave_IO_Running: Ja
Slave_SQL_Running: Ja

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

Zusammenfassen

Damit 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:
  • Tutorial zur MySQL-Datensicherungsmethode mit Multi-Master und One-Slave
  • Centos7 Mysql 5.6 Multi-Master- und One-Slave-Lösung und detaillierte Konfiguration
  • MySQL8.0.18-Konfiguration mehrerer Master und eines Slaves

<<:  Designtheorie: Hierarchie im Design

>>:  So fügen Sie einem Hintergrundbild in CSS3 eine Farbmaske hinzu

Artikel empfehlen

MySQL-Sortierung mittels Index-Scan

Inhaltsverzeichnis Installieren Sie Sakila Index-...

Beispiel, wie nginx dynamische und statische Trennung implementiert

Inhaltsverzeichnis Stellen Sie nginx auf Server1 ...

Implementierung der virtuellen React-Liste

Inhaltsverzeichnis 1. Hintergrund 2. Was ist eine...

So vermeiden Sie die Duplizierung von Daten beim Einfügen in einen MySql-Batch

Inhaltsverzeichnis Vorwort 1. Einfügen von ignore...

Detaillierte Erklärung der Javascript-String-Methoden

Inhaltsverzeichnis Zeichenfolgenlänge: Länge char...

Detailliertes Tutorial zur Installation von MySQL 5.7 auf RedHat 6.5

RedHat6.5 Installation MySQL5.7 Tutorial teilen, ...

Beispielerklärung von MySQL-Fremdschlüsseleinschränkungen

Die Fremdschlüsseleinschränkung von MySQL dient z...

Analyse des Hintergrundauthentifizierungsprozesses von Vue-Elementen

Vorwort: Kürzlich stieß ich in meinem Projekt auf...

Detaillierter Prozess zum Zeichnen dreidimensionaler Pfeillinien mit three.js

Nachfrage: Diese Nachfrage ist ein dringender Bed...

Einführung in die Verwendung des Base-Link-Tags Base

<br />Wenn Sie auf den Link klicken, wird di...

CSS löst das Problem der Front-End-Bildverformung perfekt

Ich habe in der Toutiao IT School einen Artikel g...

Erfahren Sie mehr über JavaScript-Iteratoren

Inhaltsverzeichnis Einführung Wie sieht ein Itera...

Verständnis von Haslaylout- und BFC-Parsing

1. haslayout und bfc sind IE-spezifische und Stand...