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

Super detaillierte Schritte zur Installation von Zabbix3.0 auf Centos7

Vorwort Vor Kurzem wurde ein Teil der Geschäftstä...

25 CSS-Frameworks, Tools, Software und Vorlagen geteilt

Kobold-Kuh herunterladen CSS-Fussel herunterladen...

Zusammenfassung der Wissenspunkte des Datenbankindex

Inhaltsverzeichnis Erster Blick-Index Das Konzept...

Mehrere wichtige MySQL-Variablen

Es gibt viele MySQL-Variablen, von denen einige u...

JS-Implementierung des Apple-Rechners

In diesem Artikelbeispiel wird der spezifische JS...

Der praktische Prozess des Login-Status-Managements im vuex-Projekt

Inhaltsverzeichnis Werkzeug: Anmeldeszenario: übe...

JS-Dekorationsmuster und TypeScript-Dekoratoren

Inhaltsverzeichnis Einführung in das Decorator-Mu...

Vue+Element - benutzerdefinierte Abfragekomponente

In diesem Artikel wird hauptsächlich das Vue-Proj...

Detaillierte Erklärung der CSS-Hintergrund- und Rahmen-Tag-Beispiele

1. CSS-Hintergrund-Tag 1. Stellen Sie die Hinterg...

Besprechen Sie den Entwicklungstrend der Baidu Encyclopedia UI

<br />Die offizielle Version der Baidu-Enzyk...

Detaillierte Erläuterung der MySQL 8.0-Wörterbuchtabellenerweiterung

Das Datenwörterbuch in MySQL ist eine der wichtig...