Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

MySQL-Group-Replication ist eine neue Funktion, die in MySQL-5.7.17 entwickelt wurde; sie erreicht eine starke Konsistenz zwischen Master und Slave.

Das Hauptproblem besteht derzeit allerdings darin, dass die Leistung nicht besonders gut ist.

【1】Bestätigen Sie, dass die aktuelle MySQL-Datenbankversion 5.7.17 oder höher ist

/usr/local/mysql/bin/mysqld --version
/usr/local/mysql/bin/mysqld Ver 5.7.17 für linux-glibc2.5 auf x86_64 (MySQL Community Server (GPL))

[2] Die experimentelle Umgebung besteht darin, drei MySQL-Server auf einem Host zu installieren, und alle drei bilden eine Gruppenreplikationsgruppe.

Der Inhalt von /tmp/4406.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/4406/ # /usr/local/mysql/data
server_id =4406 # 0
Port =4406 # 3306
socket =/tmp/4406/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24901" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

[Kunde]
automatische Wiederaufbereitung

Der Inhalt von /tmp/5506.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/5506 # /usr/local/mysql/data
server_id =5506 # 0
Port =5506 # 3306
socket =/tmp/5506/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24902" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

Der Inhalt von /tmp/6606.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/6606/ # /usr/local/mysql/data
server_id =6606 # 0
Port =6606 # 3306
socket =/tmp/6606/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24903" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

【3】Initialisieren Sie drei Datenbankinstanzen

cd /usr/local/mysql/
./bin/mysqld --defautls-file=/tmp/4406.cnf --datadir=/tmp/4406 --initialize-insecrue

./bin/mysqld --defautls-file=/tmp/5506.cnf --datadir=/tmp/5506 --initialize-insecrue

./bin/mysqld --defautls-file=/tmp/6606.cnf --datadir=/tmp/6606 --initialize-insecrue

【4】Konfigurieren Sie die erste Instanz der Gruppenreplikation

/usr/local/mysql/bin/mysqld --defaults-file=/tmp/4406.cnf &
mysql -h127.0.0.1 -uroot -P4406

--Benutzersatz sql_log_bin=0 hinzufügen;
    Erstellen Sie den Benutzer rpl_user@'%', identifiziert durch '123456';
    gewähre rpl_user@'%' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'127.0.0.1' mit der Identifizierung '123456'.
    gewähre rpl_user@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'localhost' mit der Identifizierung '123456'.
    gewähre rpl_user@'localhost' Replikations-Slave und Replikations-Client auf *.*;
    setze sql_log_bin=1;

-- Replikations-Anmeldeinformationen hinzufügen change master zu 
      master_user='rpl_user',
      Master-Passwort = '123456'
      für Kanal „group_replication_recovery“;

-- Installieren Sie Gruppenreplikationsobjekte, installieren Sie das Plugin group_replication soname „group_replication.so“;

-- Gruppenreplikation starten, global group_replication_bootstrap_group=on festlegen;
    Gruppenreplikation starten;
    Setzen Sie die globale group_replication_bootstrap_group=off;

【5】Der Konfigurationsprozess der 5506-Instanz ist wie folgt:

/usr/local/mysql/bin/mysqld --defaults-file=/tmp/5506.cnf &
mysql -h127.0.0.1 -uroot -P5506

--Benutzersatz sql_log_bin=0 hinzufügen;
    Erstellen Sie den Benutzer rpl_user@'%', identifiziert durch '123456';
    gewähre rpl_user@'%' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'127.0.0.1' mit der Identifizierung '123456'.
    gewähre rpl_user@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'localhost' mit der Identifizierung '123456'.
    gewähre rpl_user@'localhost' Replikations-Slave und Replikations-Client auf *.*;
    setze sql_log_bin=1;

-- Replikations-Anmeldeinformationen hinzufügen change master zu 
      master_user='rpl_user',
      Master-Passwort = '123456'
      für Kanal „group_replication_recovery“;

-- Installieren Sie Gruppenreplikationsobjekte, installieren Sie das Plugin group_replication soname „group_replication.so“;

-- Gruppenreplikation starten start group_replication; # Beachten Sie, dass dies keine Initialisierung ist, sondern nur ein Beitritt

【6】Die Vorgänge für Instanz 6606 sind dieselben wie für Instanz 5506. Die Konfiguration der Gruppenreplikation ist nun abgeschlossen.

Die oben aufgeführten Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen) sind alle Inhalte, die der Editor mit Ihnen teilt. Ich hoffe, sie können Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Replikationskonfigurationsbeispiels zwischen MySQL-Containern
  • MySQL5.6 Replikations-Master-Slave-Replikation (Lese-/Schreibtrennung) Konfiguration vollständige Version
  • Einführung in die halbsynchrone MySQL-Replikation
  • Leistungsoptimierung für die semisynchrone Replikation in MySQL 5.7 Enhanced Edition
  • MySQL-MMM-Installationshandbuch (Multi-Master-Replikationsmanager für MySQL)
  • Zusammenfassung der Probleme basierend auf der MySQL-Replikation
  • mysql5.5 Master-Slave (Replikation) Konfigurationsmethode
  • mysql5.5 Master-Slave (Replikation) Master-Slave-Konfiguration
  • MySQL Master-Slave-Replikation, halbsynchrone Replikation

<<:  Gruselige Halloween-Linux-Befehle

>>:  Implementierungsschritte der objektorientierten Kapselung von js in einer kaskadierenden Dropdown-Menüliste

Artikel empfehlen

Einführung in integrierte JavaScript-Objekte

Inhaltsverzeichnis 1. Eingebaute Objekte 2. Mathe...

So verwenden Sie die Clipboard-API in JS

Inhaltsverzeichnis 1. Document.execCommand()-Meth...

Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes

1. Die Bedeutung von Indizes Indizes werden verwe...

Schritte der Docker-Lernmethode zum Erstellen des ActiveMQ-Nachrichtendienstes

Vorwort ActiveMQ ist der beliebteste und leistung...

MySQL-Serververbindung, Trennung und cmd-Bedienung

Verwenden Sie den Befehl mysql, um eine Verbindun...

Detaillierte Erläuterung gängiger Methoden von JavaScript-Arrays

Inhaltsverzeichnis Gängige Array-Methoden Pop() u...

Vue-Komponente kapselt Beispielcode zum Hochladen von Bildern und Videos

Laden Sie zuerst die Abhängigkeiten herunter: cnp...

Implementierung des Vue-Zählers

Inhaltsverzeichnis 1. Implementierung des Zählers...

Tipps zum Mischen von OR und AND in SQL-Anweisungen

Heute gibt es eine solche Anforderung. Wenn die a...

So verwenden Sie eine VLAN-getaggte Ethernet-Karte im CentOS/RHEL-System

In einigen Szenarien möchten wir derselben Ethern...

JS versteht die Zeitzonen GMT und UTC genau

Inhaltsverzeichnis Vorwort 1. GMT Was ist GMT Ges...

Detaillierter Prozess der NTP-Serverkonfiguration unter Linux

Inhaltsverzeichnis 1. Umgebungskonfiguration 1.NT...

Vue verbessert die Seitenantwortgeschwindigkeit durch Lazy Loading

Inhaltsverzeichnis Überblick Was ist Lazy Loading...