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

So zeigen Sie den Speicherort von MySQL-Datendateien an

Wir haben möglicherweise eine Frage: Nachdem wir ...

Beispielcode zur Implementierung der Formularvalidierung mit reinem CSS

In unserem täglichen Geschäft ist die Formularval...

MySQL-Join-Abfrage (Left Join, Right Join, Inner Join)

1. Allgemeine Verbindungen für MySQL INNER JOIN (...

So importieren Sie chinesische Daten in Navicat für SQLite in CSV

In diesem Artikel erfahren Sie zu Ihrer Informati...

So kompilieren und installieren Sie PHP und Nginx in einer Ubuntu-Umgebung

Dieser Artikel beschreibt, wie man PHP und Nginx ...

Zwei Boxmodelle in Webseiten (W3C-Boxmodell, IE-Boxmodell)

Es gibt zwei Arten von Webseiten-Boxmodellen: 1: S...

So beheben Sie den abnormalen Start von mysql5.7.21

Ein Kollege meldete, dass eine MySQL-Instanz aufg...